Texto Equipo Pixel
El problema radica en que el front-page de todos los dominios se limita a una única configuración de meta etiquetas, por lo que al final todos los sitios terminan compartiendo la misma información.
Por ejemplo.
Misitio.com y Miotrositio.com utilizarían las mismas etiquetas title o description.
La primera alternativa natural es utilizar tokens tales como el nombre del mismo dominio para lograr pequeñas variaciones en las etiquetas, por ejemplo:
Tienda electrónica | Misitio.com, se diferenciaría mínimamente de Tienda electrónica | Miotrositio.com.
Sin embargo, ésta es una opción limitada y que solo es posible si se tiene el módulo Token disponible.
Una segunda opción permite utilizar variables personalizadas por dominio a través del módulo Token Custom, no obstante, esto requiere de la instalación y mantenimiento de al menos dos nuevos módulos, pues este paquete tiene a su vez una dependencia hacia el módulo Token.
Por consiguiente, una tercera opción más simple de mantener -especialmente en sitios que comparten el mismo theme-, radica en la creación de un hook dentro de éste usando un preproceso de HTML como el que se muestra a continuación:
function MYTHEME_preprocess_html(&$variables) { try { $variables['is_front'] = \Drupal::service('path.matcher')->isFrontPage(); $variables['dominio'] = \Drupal::service('domain.negotiator')->getActiveId(); if($variables['is_front'] == true && $variables['dominio'] == "DOMAIN_MACHINE_NAME") { $variables['head_title']['title'] = t(‘TITULO PERSONALIZADO’); $description = [ '#tag' => 'meta', '#attributes' => [ 'name' => 'description', 'content' => t('DESCRIPCIÓN PERSONALIZADA'), ], ]; $variables['page']['#attached']['html_head'][] = [$description, 'description']; } } catch (Exception $e) { … }}
El código simplemente asigna una variable de dominio al contexto del theme, la cual permite diferenciar un sitio de otro y en consecuencia establecer etiquetas completamente diferentes para cada uno.
Las etiquetas se pueden extender a nuevos meta datos dentro de la etiqueta HEAD de HTML, aunque en el anterior ejemplo solo se define description y el título.
Como beneficio adicional, la variable “dominio” queda disponible dentro del theme para gestionar modificaciones en el twig, por lo que un snipet como éste puede ser útil también en otros escenarios.
Este snipet es funcional en Drupal 10 y 11.
- Inicie sesión para enviar comentarios