Migrate /der-eine onto the PDP block system

der-eine was the reference the whole PDP block-builder was designed to
match (gallery sizing, black stepRow-facts icons, dynamic CTA label —
see ProductBlocks.tsx). Migrated it onto its own system: hero body,
usps (the 3 hero features), a "Was kann er?" fact-card section (its own
4 icons — pen/sparkle/compact, new; sunHigh, reused — carried over into
the shared StepIcons set), pricing panel, automatic crossSell.
Testimonials.tsx dropped, not migrated (testimonialsRef removed from
the PDP builder earlier this session). Old Hero/Focus/Testimonials/
Pricing/PasstDazu components left as dead code, same as
/tasse-die-pause's own migration.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013Eg6h91yngXmSnM51wxXM8
This commit is contained in:
Marco
2026-08-29 23:40:21 +00:00
parent f98536ff88
commit c98294a6a4
2 changed files with 57 additions and 22 deletions
+16 -22
View File
@@ -1,21 +1,22 @@
import type { Metadata } from "next";
import { Hero } from "./components/Hero";
import { Focus } from "./components/Focus";
import { PasstDazu } from "./components/PasstDazu";
import { Testimonials } from "./components/Testimonials";
import { Pricing } from "./components/Pricing";
import { notFound } from "next/navigation";
import { ProductBlocks } from "../components/ProductBlocks";
import { Footer } from "../components/Footer";
import { getProductBySlug, getCompanySettings } from "../lib/payload";
import { buildProductSchema } from "../lib/structuredData";
const title = "Der Eine. Für die eine Sache, die gerade zählt.";
// Description reads from the live product instead of a separately
// hardcoded string, unlike this page's own `title` — matches
// /tasse-die-pause's own pattern (see that page's comment). Two
// hand-maintained copies of the same text used to drift apart: this one
// used to say something different from Products.description (which feeds
// the cart/checkout/JSON-LD elsewhere) — same field, one source now.
// der-eine was the reference template the whole PDP block-builder system
// was designed to match (gallery sizing, black stepRow-facts icons,
// CTA-label pattern see ProductBlocks.tsx's own comments) — now migrated
// onto it itself, same as /tasse-die-pause before it. Testimonials.tsx
// dropped entirely rather than migrated: the PDP builder no longer offers
// testimonialsRef (removed 2026-08-29, unused everywhere; the planned
// replacement is a real reviews feature). Hero.tsx/Focus.tsx/
// Testimonials.tsx/Pricing.tsx/PasstDazu.tsx in ./components are now dead
// code, left for a follow-up cleanup pass rather than deleted here — same
// as /tasse-die-pause's own old components.
export async function generateMetadata(): Promise<Metadata> {
const product = await getProductBySlug("stift-kugelschreiber");
const description = product?.descriptionText || undefined;
@@ -33,21 +34,14 @@ export default async function DerEinePage() {
getProductBySlug("stift-kugelschreiber"),
getCompanySettings(),
]);
const productSchema = product
? buildProductSchema(product, "https://einfach-produktiv.mk360.de/der-eine", seller)
: null;
if (!product) notFound();
const productSchema = buildProductSchema(product, "https://einfach-produktiv.mk360.de/der-eine", seller);
return (
<>
{productSchema && (
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(productSchema) }} />
)}
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(productSchema) }} />
<main className="flex flex-col flex-1">
<Hero />
<Focus />
<Testimonials />
<Pricing />
<PasstDazu productSlug="stift-kugelschreiber" />
<ProductBlocks product={product} />
</main>
<Footer />
</>