Drupal 8 – Felder für den Seitenkopf – Header Fields
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.
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]); } }