Skip to main content
Colofon
Submitted by Häßler on

Drupal 8 – Felder für den Seitenkopf – Header Fields

Sind automatisch erzeugte Meta-Informationen aus dem CMS tatsächlich der Stein der Weisen fürs SEO? Drupal hatte schon in Version 7 das Modul RDF, das den Inhalt mit Metadaten anreichert, um den Suchmaschinen und Aggregatoren ein besseres Verständnis für die Informationen der Seite zu ermöglichen.

Automatisch ausgefüllte RDF-Attribute haben allerdings wenig Sinn – so z.B. ein typeof="foaf:Image" zu jedem Bild. Erst mit einem Modul wie RDF-UI lassen sich Inhalt und Meta-Informationen miteinander verbinden.

Wenn es nur um einige einfache Meta-Informationen wie meta name="description" geht, könnte man das Modul Metatag installieren. Das braucht aber das Modul Token … und schon beginnt ein Rattenschwanz von Abhängigkeiten.

Stattdessen nutzen wir ein einfaches Textfeld.

Feld hinzufügen

Damit bekommt der Inhaltstyp ein Textfeld für die Meta Description – am besten gleich als erforderliches Feld (required field), damit die Autoren das Feld auch tatsächlich ausfüllen. Wenn der Gutenberg-Editor in Drupal benutzt wird, sitzen die hinzugefügten Felder eines Inhaltstyp unten im Fuß des Editors unter Weitere Einstellungen.

Damit das Feld im Head-Bereich des HTML-Dokuments erscheint, reichen ein paar Zeilen in der Datei mytheme.info des Themes.

/**
  Implements hook_preprocess_HOOK() for HTML document templates.
  Adds body classes if certain regions have content.
 **/
 function mytheme_preprocess_html(&$variables) {
 …
    // Felder für den Seitenkopf – Header Fields
    // Add META tag meta description 
    // Load the node entity from current route
    // Field meta_description must exists for content type page 
    $node = \Drupal::routeMatch()->getParameter('node'); 
    if ($node) {
       if ($node->getType() === 'page' || $node->getType() === 'article' ) {            
          if (!empty ($node->get('field_meta_description')->value)) {
             $metadescription = [
                '#tag' => 'meta',
                '#attributes' => [
                   'name' => 'description',
                   'content' => $node->get('field_meta_description')->value,
                ],
             ];
             $variables['page']['#attached']['html_head'][] = [$metadescription, 'description'];
          } // end field_custom_meta_description
       }
    }
 }

Wieviel meta braucht die Webseite?

Ein erster guter Satz im Text und sinnvolle Überschriften sind wichtiger als eine Meta-Description, denn Google & Co. suchen sich selber den zur Suchanfrage passenden Text aus der Seite. Wenn Seiten allerdings vorwiegend aus Bildern oder Angeboten mit wenig Beschreibungstext bestehen, muss die Meta-Description den Inhalt / das Angebot treffend und interessant beschreiben.

Meta-Informationen für Termine hingegen sind wichtig, da die Zahlen und Punkte der Klarschrift den Suchmaschinen wenig sagen, dasselbe gilt für die Meta-Unterstützung von Ortsangaben.

Sinnlose Meta-Tags in Drupal 8

Die automatisch erzeugten Meta-Tags system_meta_generator, MobileOptimized und HandheldFriendly werden nun wahrlich nicht gebraucht.

function bodony_page_attachments_alter(array &$page) {
  // Meta-Tags in ein Array setzen
  $unset_meta = [
    'system_meta_generator', // Meta name "Generator"
    'MobileOptimized', // Meta name "MobileOptimized"
    'HandheldFriendly', // Meta name "HandheldFriendly"
  ];
  // Werte prüfen und entfernen.
  foreach ($page['#attached']['html_head'] as $key => $value) {
    if (in_array($value[1], $unset_meta)) unset($page['#attached']['html_head'][$key]);
  }
}

Externe Quellen

Adding Meta Tags to Drupal Content