Antworten auf 0100/0102/0104/0108-FE: Canonical paginierter Listen, JSON-LD-Breadcrumb auf den Datensatz, Story-Liste ohne crops, Startseiten-Daten

VitecMetaHandler: /insights/news?page=2 (und ?category=) bekommt einen
selbstreferenzierenden Canonical statt Seite 1 (0100-FE 5.1).
PageJsonLdRenderer: auf Produkt-, News- und Story-Detailseiten ersetzt
der Datensatz (Titel + URL) die Shell-Seite als letztes Breadcrumb-
Element (0108-FE F11). UsecaseListJsonRenderer: cardImage.crops aus den
Listen-Karten entfernt, ~20 kB pro Seite mit Testimonial-Band
(0102-FE 5). Migration fe_answers_fixes_20261111 (angewendet):
Platzhalter 'H1 Header' (/solutions) und 'Featured Product' (Startseite,
Lorem ipsum, CTA auf /product) versteckt; Karte 'Government' auf
/markets/government; Button in #699 'Explore our solutions'; Story CDC
h4 'Product Highlight' -> h3 (0104-FE 4.1).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
orascheandClaude Fable 5.1 committed 2026-11-11 10:14:49 +01:00
1 parent 5824981e2b
commit 07f74e372b
4 files changed
+189 -3

No files matched your search

@@ -266,6 +266,32 @@ class VitecMetaHandler extends MetaHandler
$content['seo']['link'] = $links;
}
// --- paginated / filtered list pages: self-referencing canonical --------
// /insights/news?page=2 pointed at page 1, which marks every further
// page as a duplicate and weakens the links to its articles (0100-FE).
if ($canonicalPath === '' && $newsUid === 0 && $productArg === '' && $usecaseUid === 0) {
$query = $request->getQueryParams();
$keep = [];
foreach (['category', 'page'] as $key) {
$value = $query[$key] ?? null;
if (!is_scalar($value) || trim((string)$value) === '') {
continue;
}
if ($key === 'page' && (int)$value <= 1) {
continue;
}
$keep[$key] = trim((string)$value);
}
if ($keep !== [] && is_array($content['seo']['link'] ?? null)) {
foreach ($content['seo']['link'] as $index => $link) {
if (($link['rel'] ?? '') === 'canonical' && is_string($link['href'] ?? null)) {
$content['seo']['link'][$index]['href'] =
strtok($link['href'], '?') . '?' . http_build_query($keep);
}
}
}
}
return $content;
}