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:
+16
-22
@@ -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 />
|
||||
</>
|
||||
|
||||
Reference in New Issue
Block a user