2008-11-19 17 views

Respuesta

24

utilizar la función path_to_theme.

+3

tenga en cuenta que cuando se invoca desde la función "theme_ *" path_to_there devolverá la ruta al módulo actual en lugar de la ruta al tema actualmente activo que puede generar errores, consulte más detalles en este informe de errores: http: //drupal.org/node/ 194098 – webdevbyjoss

19

esto debería funcionar (doc):

global $theme; 
$path = drupal_get_path('theme', $theme); 

// there's also a $theme_path global 

global $theme_path; 
+0

Hola Gracias por el Owen info –

+0

Es mejor usar 'path_to_theme()', que usar '$ theme_path'. – kiamlaluno

+1

¿Por qué es mejor usar path_to_theme(), en lugar de $ theme_path? – timoxley

0

En Drupal 5, sólo tiene que utilizar: path_to_theme()

Esto le dará una ruta completa desde la raíz de Drupal para el directorio de tema. Tenga en cuenta que no incluye una barra inclinada.

En Drupal 6, esto se comporta de forma un poco diferente. Si lo llamas desde dentro de tus páginas, llamará a lo que esté haciendo actualmente el tema ... si ese es tu tema, un módulo, etc. Aquí está la cita clave de los documentos API:

Puede señalar al tema activo o el módulo manejando una implementación temática . Por ejemplo, cuando se invoca dentro del alcance de una incrustación , dependerá de dónde se maneje la función de eclosión . Si se implementa desde un módulo, se enviará al módulo . Si se implementa desde el tema activo, apuntará al tema activo. Cuando se llame al fuera del alcance de una llamada de clasificación, , siempre apuntará al tema activo.

Fuente: http://api.drupal.org/api/function/path_to_theme

9

En D6 path_to_theme() no se comporte de una manera que se puede esperar en función de cómo se está utilizando. Si lo está utilizando fuera de las funciones de preproceso de tema, probablemente le proporcione lo que desea, pero si se lo llama en el contexto de la función de anulación/preproceso de un módulo ... indicará la ruta del módulo que declaró el tema.

Ej. Si tengo un tema "my_theme" y mi módulo "my_module" que está anulando los temas del foro utilizando los enganches de preproceso, invocando 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.

4

En Drupal 7, para obtener la ruta del tema actual, podemos utilizar: path_to_theme() función.

0

Para D8, la carpeta de temas está disponible en las funciones de procesamiento previo:

function hook_preprocess_page(&$variables) { 
    $variables['some_logo_file'] = "/{$variables['theme']['path']}/images/logo.png"; 
} 

page.html.twig:

<img src="{{ logo_src }}"> 
1

En Drupal 8

global $base_url; 
$theme = \Drupal::theme()->getActiveTheme(); 
$image_url = $base_url.'/'. $theme->getPath() .'/images/image.jpg'; 
Cuestiones relacionadas