Come utilizzare template_preprocess_views_view per passare una variabile a un file tpl delle viste


8

Dato che il caso mi è tornato in mente per la seconda volta di recente, ho deciso di porre la domanda per forse imparare qualcosa.

In Views, il titolo di visualizzazione principale (quello che di solito viene visualizzato nella parte superiore della vista) è disponibile nell'output di visualizzazione in quanto $titlenon sembra affatto disponibile nell'output di stile . Invece, l' output della $titlevariabile di stile indica il nome di un gruppo se viene utilizzato il raggruppamento.

Quello che voglio è avere quel titolo di visualizzazione ('nome umano') disponibile in qualsiasi modello come $display_title. Quindi quello che ho fatto è stato inserire questo codice nel mio template.php:

function MYTHEME_preprocess_views_view(&$variables){
  if($variables['name'] == 'studios' && $variables['display_id'] == 'block'){
    $view = $variables['view'];
    $variables['display_title'] = $view->human_name;
  }
  dpm($variables);
}

... sperando di avere a portata di mano il titolo umano: <?php print $display_title; ?>

... ma nessuna gioia. Che cosa sto facendo di sbagliato?

Risposte:


10

Come sapresti anche, una vista ha diversi modelli, che possono variare a seconda dello stile, ad esempio:

  • Visualizza uscita: views-view.tpl.php
  • Stile di uscita: views-view-STYLE.tpl.php
  • Output stile riga: views-view-fields.tpl.php
  • Contenuto del campo: views-view-field.tpl.php

eccetera.

Ognuno di questi modelli ha la sua funzione di preelaborazione. Quello che fai nel tuo codice influenza solo l'output di visualizzazione poiché stai preelaborando solo views-view.tpl.php ( template_preprocess_views_view)

Per scoprire quali file modello sono disponibili per la tua vista specifica, puoi andare a visualizzare la pagina di modifica e nella sezione "Avanzate" alla fine della colonna fare clic su "Tema: Informazioni". Vedrai quali file modello utilizza la tua vista (in grassetto) e quali file modello utilizzeresti per sovrascriverli.

Le funzioni di preelaborazione devono essere denominate dopo il file modello, sostituendo i trattini con caratteri di sottolineatura. Ad esempio per views-view-STYLE.tpl.phpsarebbe template_preprocess_views_view_STYLE().


0

È possibile utilizzare le funzioni:

  1. drupal_set_title ()

    Imposta il titolo della pagina corrente.

  2. drupal_get_title ()

    Ottiene il titolo della pagina corrente.


Grazie, ma la mia vista genera un blocco anziché una pagina, quindi questa non è una soluzione. Inoltre, ciò richiederebbe il passaggio di un argomento stringa, come t('My Views Title')e quindi la ritrasferirà sul lato amministratore. Che è quello che voglio evitare (eppure ho già tradotto quella vista ...).
Artur,

0

Se ricordo bene, puoi passare il titolo con l'oggetto vista, aggiungere una nuova variabile all'interno dell'oggetto vista e ust nel file modello.


0

Per rispondere alla domanda specifica di "passare una variabile a un file modello" ... Penso che devi solo usare un hook diverso. Collega la variabile al tuo $viewoggetto in questo modo:

function NAME_OF_MODULE_views_pre_render(&$view) {
  $view->display_title = "What have you";
}

Quindi in un file modello come views-view--NAME_OF_VIEW--page.tpl.php:

print $view->display_title;

Ho dovuto farlo da solo e ha funzionato alla grande.

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.