Titel-Kontext: Import-Muster 'Titel | VITEC' als ungepflegt werten, direkte Elternseite
Die Kategorieseiten tragen seo_title = '<Titel> | VITEC' (Import), was
die Kontext-Vorlage als gepflegten SEO-Titel las. Der Brand-Suffix wird
vor dem Vergleich abgestreift; die Vorlage baut den Titel aus Seitentitel
+ Elternseite neu auf, der Brand-Suffix folgt wie bisher.
Die Rootline ist root-first; der Helfer las bisher Index 1 (oberste
Ebene, 'Products') statt der direkten Elternseite ('AVoIP & KVM').
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
33bdb8d856
commit
08c02276e5
1 file changed
+12
-7
@@ -149,14 +149,16 @@ class VitecMetaHandler extends MetaHandler
|
||||
// title -> seo_title) counts as "not maintained".
|
||||
$seoTitle = trim((string)($page['seo_title'] ?? ''));
|
||||
$pageTitle = trim((string)($page['title'] ?? ''));
|
||||
$seoTitleMaintained = $seoTitle !== '' && mb_strtolower($seoTitle) !== mb_strtolower($pageTitle);
|
||||
// "Aligo | VITEC" as seo_title is the import pattern, not editor work.
|
||||
$seoCore = trim((string)preg_replace('/\s*[|\x{2013}\-]\s*vitec\s*$/iu', '', $seoTitle));
|
||||
$seoTitleMaintained = $seoCore !== '' && mb_strtolower($seoCore) !== mb_strtolower($pageTitle);
|
||||
if ($newsUid === 0 && $productArg === '' && $usecaseUid === 0
|
||||
&& $title !== '' && mb_strlen($title) < 30
|
||||
&& $pageTitle !== '' && mb_strlen($pageTitle) < 30
|
||||
&& !$seoTitleMaintained
|
||||
) {
|
||||
$parentTitle = $this->parentTitle($pageInfo);
|
||||
if ($parentTitle !== '' && mb_stripos($title, $parentTitle) === false) {
|
||||
$title .= ' | ' . $parentTitle;
|
||||
if ($parentTitle !== '' && mb_stripos($pageTitle, $parentTitle) === false) {
|
||||
$title = $pageTitle . ' | ' . $parentTitle;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,10 +239,13 @@ class VitecMetaHandler extends MetaHandler
|
||||
if ($pageInfo === null) {
|
||||
return '';
|
||||
}
|
||||
// Rootline keys are the depth (0 = root), but the array is krsort()ed
|
||||
// (current page first). Sort by depth and take the entry before last.
|
||||
$rootLine = $pageInfo->getRootLine();
|
||||
$parent = $rootLine[1] ?? null;
|
||||
if (!is_array($parent) || count($rootLine) < 3) {
|
||||
// parent is the root page (rootline: current, root) or missing
|
||||
ksort($rootLine);
|
||||
$byDepth = array_values($rootLine);
|
||||
$parent = count($byDepth) >= 3 ? ($byDepth[count($byDepth) - 2] ?? null) : null;
|
||||
if (!is_array($parent)) {
|
||||
return '';
|
||||
}
|
||||
if (in_array((int)($parent['doktype'] ?? 1), [3, 4, 199, 254, 255], true)) {
|
||||
|
||||
Reference in new issue
Block a user