Controlla se il tema è abilitato a livello di codice


9

Come posso verificare se un tema è abilitato su un'installazione drupal? Sto cercando qualcosa come module_exists () ma temi. Non sono riuscito a trovare nulla sulla documentazione.

Risposte:


6

Usa list_themes

parametri

$ refresh : se ricaricare l'elenco di temi dal database. L'impostazione predefinita è FALSO.

Valore di ritorno

Una matrice associativa dei temi attualmente disponibili. Le chiavi sono i nomi dei computer dei temi e i valori sono oggetti con le seguenti proprietà:

  • nome file : il percorso file e il nome del file .info.
  • name : il nome della macchina del tema.
  • stato : 1 per abilitato, 0 per temi disabilitati.
  • info : i contenuti del file .info.
  • fogli di stile : un array bidimensionale, che utilizza la prima chiave per l'attributo multimediale (ad esempio "all"), la seconda per il nome del file (ad esempio style.css). Il valore è un percorso file completo (ad esempio temi / bartik / style.css). Non impostato se non sono definiti fogli di stile nel file .info.
  • script : un array associativo di JavaScript, che utilizza il nome file come chiave e il percorso file completo come valore. Non impostato se non sono definiti script nel file .info.
  • prefisso : prefisso del motore del tema di base.
  • motore : il nome della macchina del motore del tema.
  • base_theme : se si tratta di un sottotema, il nome della macchina del tema di base definito nel file .info. Altrimenti, l'elemento non è impostato.
  • base_themes : se si tratta di un sotto-tema, una matrice associativa degli antenati del tema di base di questo tema, a partire dal tema di base di questo tema, quindi dal tema di base del tema di base, ecc. Ogni voce ha una chiave di matrice uguale al tema del tema nome della macchina e un valore uguale al nome del tema leggibile dall'uomo; se nel sistema non esiste un tema con il nome della macchina corrispondente, il valore sarà invece NULL (e poiché il sistema non saprebbe se quel tema stesso ha un tema base, ciò finirà la matrice di temi base). Questo non è impostato se il tema non è un sottotema.
  • sub_themes : un array associativo di temi sul sistema che sono temi secondari diretti (ovvero dichiarano questo tema come tema base), temi secondari diretti di temi secondari, ecc. Le chiavi sono la macchina dei temi nomi e i valori sono nomi leggibili dall'uomo dei temi. Questo elemento non viene impostato se non ci sono temi sul sistema che dichiarano questo tema come tema base.

Usa path_to_theme per ottenere il tema attivo ..

Può indicare il tema attivo o il modulo che gestisce un'implementazione a tema. Ad esempio, quando viene richiamato nell'ambito di una chiamata a tema, dipenderà da dove viene gestita la funzione di tema. Se implementato da un modulo, punterà al modulo. Se implementato dal tema attivo, punterà al tema attivo. Quando viene chiamato al di fuori dell'ambito di una chiamata a tema, punta sempre al tema attivo.


3

I dati sono effettivamente conservati esattamente nello stesso posto, la systemtabella. Non sono riuscito a trovare una funzione esistente da controllare (anche se probabilmente ce n'è una da qualche parte), ma questo dovrebbe fare in un pizzico:

function theme_exists($theme_name) {
  $themes = list_themes();
  return isset($themes[$theme_name]) && $themes[$theme_name]->status == 1;
}

1
Avevo appena finito di digitare esattamente la stessa cosa -_- anche se probabilmente non avrei chiamato la funzione theme_existssolo per eludere eventuali problemi con il sistema a tema
Chapabu

1
list_themes () esegue già la memorizzazione nella cache statica, quindi probabilmente non è necessario in questa funzione.
Letharion,

1
@Chapabu Mi piace rendere le cose ... interessanti;)
Clive

@Letharion Siamo spiacenti ma ho capito cosa intendevi, rimuoverò quel pezzo
Clive

1
Non intendevo dire che questa funzione non fosse necessaria, penso sia grandiosa. Mi riferivo alla tua affermazione che potrebbe essere migliorata con la memorizzazione nella cache, che non credo sarebbe utile in questo caso.
Letharion,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.