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:
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;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user