Seite 1 von 1

SERP-Preview

Verfasst: Fr 29. Mär 2019, 20:04
von McHubi
Hallo zusammen,

das sistrix-Tool für die Vorschau auf das Aussehen eines Suchmaschinen-Treffers kennen sicher viele von euch: https://app.sistrix.com/de/serp-snippet-generator

Aktuell kann man zwar im Artikel-Reiter "SEO" über die HTML-Ansicht links unten die Meta-Angaben anzeigen lassen, die helfen aber Redakteuren jetzt nicht wirklich weiter.

Da beim sistrix-Tool eigentlich bloß drei Strings in unterschiedlichen Farben und bei Bedarf gekürzt dargestellt werden, sollte das also nicht allzu schwer sein nachzubilden. Ist es in der Tat nicht. Es reicht, ganz am Ende der root/contenido/includes/include.con_meta_form.php diese Zeilen anzuhängen:

Code: Alles auswählen

/******************** SERP-preview modifications begin ********************/
/* this is just a copy of the output-code of module head_title, 
but at the end the generated title must not be echoed but written into variable 
$title_of_module_head_title. have a look at marker "variable instead of echo"*/

/* output-code of module head_title begin */
$breadcrumb = array();

// get category path
$helper = cCategoryHelper::getInstance();
foreach ($helper->getCategoryPath(cRegistry::getCategoryId(), 1) as $categoryLang) {
    $breadcrumb[] = $categoryLang->get('name');
}

// load current article information
$article = new cApiArticleLanguage();
$article->loadByArticleAndLanguageId(cRegistry::getArticleId(), cRegistry::getLanguageId());
$headline = strip_tags($article->getContent('CMS_HTMLHEAD', 1));

// append headline of article if existing
if ($headline != '') {
    $breadcrumb[] = $headline;
}

if ($headline === '') {
    $breadcrumb[] = conHtmlSpecialChars(mi18n("STARTPAGE"));
}

array_shift($breadcrumb);

if (count($breadcrumb) > 0) {
    $title_of_module_head_title=implode(' - ', $breadcrumb).' | Spielwiese'; //"variable instead of echo"
}
/* output-code of module head_title end */

$title_length=getEffectiveSetting('seo_serp_preview_title', 'length', 60);
$url_length=getEffectiveSetting('seo_serp_preview_url', 'length', 93);
$description_length=getEffectiveSetting('seo_serp_preview_description', 'length', 150);

echo '<br/><h3>Google SERP Preview</h3>
<div style="color: #660099; font-size: 1.5em; margin-top: 1em;">';
if($art->getField('pagetitle')!="")
  {
  echo substr(conHtmlSpecialChars(cSecurity::unFilter(stripslashes($art->getField('pagetitle')))),0,$title_length);
  if(strlen(conHtmlSpecialChars(cSecurity::unFilter(stripslashes($art->getField('pagetitle')))))>$title_length) echo '...';
  }
  else
    {
    echo substr($title_of_module_head_title,0,$title_length);
    if(strlen($title_of_module_head_title)>$title_length) echo '...';
    }

echo '</div>
<div style="color: #006621; line-height: 1.7em;">'.substr(cUri::getInstance()->build(array(
    'idart' => $art->get('idart'),
    'lang' => $art->get('idlang')
), true),0,$url_length);
if(strlen(cUri::getInstance()->build(array(
    'idart' => $art->get('idart'),
    'lang' => $art->get('idlang')
), true))>$url_length) echo '...';
echo '</div>
<div style="color: #777777; line-height: 1.7em; width: 50em;">'.substr($metaPreview[2][content],0,$description_length);
if(strlen($metaPreview[2][content])>$description_length) echo '...';
echo '</div>';
/******************** SERP-preview modifications end ********************/
Der erste Teil besteht aus einer - fast - 1 zu 1 Kopie des im Modul "head_title" verwendeten Codes der Modulausgabe, da im Reiter "SEO" der automatisch generierte Title nicht abgegriffen werden kann und nur der manuelle Title ausgelesen wird. Am Ende des Codes wird der Title jedoch nicht per echo ausgegeben sondern in eine Variable geschrieben, die im weitern Verlauf verwendet wird.

Ggf. hat jemand von euch eine bessere Idee auf Lager, wie man die Kopie der Modulausgabe umgehen und den automatisch generierten Title direkt auslesen kann.

Da Google immer mal wieder gerne die Maximallängen anpasst, lässt sich das auch über die Mandanteneinstellungen festlegen:

seo_serp_preview_title | length | 60
seo_serp_preview_url | length | 93
seo_serp_preview_description | length | 150
google-serp-preview-001.jpg
(116.87 KiB) Noch nie heruntergeladen
Wichtig: Da dies eine Core-Erweiterung ist, muss die Anpassung bei einem Update aller Voraussicht nach erneut eingetragen werden.

Re: SERP-Preview

Verfasst: Fr 29. Mär 2019, 20:40
von Faar
:shock:

Re: SERP-Preview

Verfasst: Fr 29. Mär 2019, 21:18
von McHubi
:shock: :arrow: :?:

Re: SERP-Preview

Verfasst: Sa 30. Mär 2019, 10:29
von bodil
Schöne Idee!
Fehlt in deinem Code möglicherweise die Stelle, wo du die Mandantendaten ausliest?
Meine Ausgabe sieht etwa so aus:



Re: SERP-Preview

Verfasst: Sa 30. Mär 2019, 20:01
von McHubi
Hm...
Also es werden die Daten aus der Core Datei verwendet - bis auf den Title. Der kommt nur bei Angabe im seo-Reiter auch aus der Core Datei. Ansonsten wird er exakt wie im Modul head_title ermittelt. Du solltest also zumindest bei URL und description Daten bekommen.

Die... Punkte erscheinen eigentlich nur dann, wenn der String gekürzt wird. Das bei Dir davor keine Infos aus dem Reiter wiederholt werden, ist kurios.

Hast Du ein Mehrmandantensystem?
Kann den Fehler nicht nachstellen.

Re: SERP-Preview

Verfasst: Sa 30. Mär 2019, 20:30
von bodil
Ich habe vor deinen Code noch das hier gesetzt:

Code: Alles auswählen

$title_length = getEffectiveSetting('seo_serp_preview_title', 'length', 60);
$description_length = getEffectiveSetting('seo_serp_preview_description', 'length', 150);
$url_length = getEffectiveSetting('seo_serp_preview_url', 'length', 93);
Dann gings! :)
Sehr schöne Ergänzung. In meinem Fall gar nicht so arg für die Ausreitzung der SEO, eher um Kunden klar zu machen, was das bedeutet, was sie wo eintragen. Vielen Dank dafür!

Re: SERP-Preview

Verfasst: So 31. Mär 2019, 11:23
von McHubi
Arrgh... Danke für den Hinweis! Die drei Zeilen hab ich in der Tat nicht mit reinkopiert... :? Shame on me... Sind jetzt hinzugefügt im ersten Post.
Sehr schöne Ergänzung. In meinem Fall gar nicht so arg für die Ausreitzung der SEO, eher um Kunden klar zu machen, was das bedeutet, was sie wo eintragen. Vielen Dank dafür!
Gerne! Manchmal bringen selbst kleine Dinge echten Mehrwert. :D

Re: SERP-Preview

Verfasst: Mo 1. Apr 2019, 09:39
von Faar
McHubi hat geschrieben:
So 31. Mär 2019, 11:23
Shame on me...
ja :|