¿Cómo obtengo la ruta del tema actual de drupal?
-
08-07-2019 - |
Pregunta
La API de Drupal tiene drupal_get_path ($ type, $ name)
que dará la ruta de cualquier tema o módulo en particular. ¿Qué sucede si quiero la ruta del tema actual?
Solución
Utilice la función path_to_theme
.
Otros consejos
esto debería funcionar ( doc ):
global $theme;
$path = drupal_get_path('theme', $theme);
// there's also a $theme_path global
global $theme_path;
En D6, es posible que path_to_theme () no se comporte de la forma esperada, dependiendo de cómo lo esté utilizando. Si lo está utilizando fuera de cualquier función de preproceso de tema, entonces probablemente le dará lo que desea, pero si se llama dentro del contexto de la función de enganche de preproceso / tema de un módulo ... apuntará a la ruta del módulo que declaró el tema.
Ej. Si tengo un tema "my_theme" y mi módulo " my_module " que anula los temas del foro utilizando los ganchos de preproceso, llamando a path_to_theme () dentro de mi módulo: p. my_module_preprocess_forums () ... devolverá " foros " ;, y no " my_theme " como cabría esperar.
Muy afrutado si me preguntas.
En Drupal 7, para obtener la ruta del tema actual, podemos usar: path_to_theme () función.
En Drupal 8
global $base_url;
$theme = \Drupal::theme()->getActiveTheme();
$image_url = $base_url.'/'. $theme->getPath() .'/images/image.jpg';
En Drupal 5, simplemente puede usar: path_to_theme ()
Esto le dará una ruta completa desde la raíz de Drupal hasta el directorio del tema específico. Tenga en cuenta que no incluye una barra inclinada final.
En Drupal 6, esto se comporta de manera un poco diferente. Si lo llama desde sus páginas, llamará a lo que sea que esté haciendo el tema actualmente ... si ese es su tema, un módulo, etc. Aquí está la cita clave de los documentos de la API:
Puede apuntar al tema activo o el módulo manejando un tema implementación. Por ejemplo, cuando invocado dentro del alcance de un tema llamar dependerá de dónde el Se maneja la función temática. Si implementado desde un módulo, lo hará Señalar el módulo. Si se implementa del tema activo, apuntará al tema activo. Cuando se llama fuera del alcance de una llamada temática, siempre apuntará a la activa tema.
Para D8, la carpeta de temas está disponible en funciones de preproceso:
function hook_preprocess_page(&$variables) {
$variables['some_logo_file'] = "/{$variables['theme']['path']}/images/logo.png";
}
page.html.twig:
<img src="{{ logo_src }}">