Come posso ottenere il percorso dell'attuale tema di Drupal?
-
08-07-2019 - |
Domanda
L'API Drupal ha drupal_get_path ($ type, $ name)
che fornirà il percorso di qualsiasi tema o modulo particolare. Cosa succede se desidero il percorso del tema corrente?
Soluzione
Utilizza la funzione path_to_theme
.
Altri suggerimenti
questo dovrebbe funzionare ( doc ):
global $theme;
$path = drupal_get_path('theme', $theme);
// there's also a $theme_path global
global $theme_path;
In D6 path_to_theme () potrebbe non comportarsi come ti aspetti a seconda di come lo stai usando. Se lo stai usando al di fuori di qualsiasi funzione di preelaborazione del tema, probabilmente ti darà quello che vuoi, ma se viene chiamato nel contesto della funzione hook / preelaborazione del tema di un modulo ... indicherà il percorso del modulo che ha dichiarato il tema.
Ex. Se ho un tema " my_theme " e il mio modulo " my_module " che sta sovrascrivendo i temi del forum usando gli hook di pre-elaborazione, chiamando path_to_theme () all'interno del mio modulo: ad es. my_module_preprocess_forums () ... restituirà " forum " ;, e non " my_theme " come ci si potrebbe aspettare.
Molto fruttato se me lo chiedi.
In Drupal 7, per ottenere il percorso del tema corrente, possiamo usare: path_to_theme () .
In Drupal 8
global $base_url;
$theme = \Drupal::theme()->getActiveTheme();
$image_url = $base_url.'/'. $theme->getPath() .'/images/image.jpg';
In Drupal 5, puoi semplicemente usare: path_to_theme ()
Questo ti darà un percorso completo dalla radice di Drupal alla directory tematica specifica. Attenzione, non include una barra finale.
In Drupal 6, questo si comporta in modo leggermente diverso. Se lo chiami dalle tue pagine, chiamerà qualunque cosa stia facendo attualmente il tema ... se questo è il tuo tema, un modulo, ecc. Ecco la citazione chiave dai documenti API:
Può puntare al tema attivo o il modulo gestisce un tema implementazione. Ad esempio, quando invocato nell'ambito di una tematica chiamarlo dipenderà da dove la funzione di tema è gestita. Se implementato da un modulo, lo farà punta al modulo. Se implementato dal tema attivo, punterà al tema attivo. Quando chiamato al di fuori dell'ambito di una chiamata a tema, indicherà sempre l'attivo tema.
Per D8, la cartella del tema è disponibile nelle funzioni di preelaborazione:
function hook_preprocess_page(&$variables) {
$variables['some_logo_file'] = "/{$variables['theme']['path']}/images/logo.png";
}
page.html.twig:
<img src="{{ logo_src }}">