it-swarm.it

Come fornire un modello per una particolare modalità di visualizzazione?

Voglio creare un tema per la modalità di visualizzazione dei risultati della ricerca.

Avevo in mente che nominare un nodo di file modello - articolo - search-result.tpl.php avrebbe funzionato, ma ovviamente mi sbaglio.

Mi rendo conto di poter fare node - article.tpl.php e all'interno di questo controllo $ view_mode, ma questo è imbarazzante con tutte le altre modalità di visualizzazione che non voglio modellare.

Idee?

47
artfulrobot

L'aggiunta di suggerimenti di hook del tema in una funzione di preelaborazione del nodo dovrebbe fare il trucco:

function MYMODULE_preprocess_node(&$vars) {
  if ($vars['node']->type == 'article' && $vars['view_mode'] == 'search_result') {
    $vars['theme_hook_suggestions'][] = 'node__article__search_result';
  }
}

Dopo aver svuotato le cache dovresti essere in grado di usare il nodo - articolo - search-result.tpl.php per il nome del tuo file modello.

NB. Puoi anche farlo nel file template.php del tuo tema chiamando invece la funzione MYTHEME_preprocess_node().

46
Clive

Il modulo Modalità di visualizzazione entità aggiunge automaticamente questi suggerimenti di modello

Il Drupal 7 successore di Build mode che consentirà agli amministratori di definire le modalità di visualizzazione personalizzate per le entità. Le entità personalizzate vengono aggiunte al registro delle entità tramite hook_entity_info_alter () in modo che siano disponibile per qualsiasi codice che utilizza entity_get_info () per fornire un elenco di modalità di visualizzazione per un'entità, inclusi campi di riferimento utente e nodo, viste, ecc.

3
Bas

Ecco una funzione che ti consente di aggiungerne di nuovi in ​​modo dinamico. Chiama anche la funzione di preelaborazione corrispondente se ne hai dichiarata una.

Quindi chiama drush cache-clear theme-registry Per farlo funzionare.

Per usarlo, sostituisci THEME con il nome del tuo tema e inseriscilo nel file template.php dei temi.

per esempio. Per un tema chiamato Droid lo chiameresti droid_preprocess_node(&$variables, $hook) {...

function THEME_preprocess_node(&$variables, $hook) {
  $view_mode = $variables['view_mode'];
  $content_type = $variables['type'];
  $variables['theme_hook_suggestions'][] = 'node__' . $view_mode;
  $variables['theme_hook_suggestions'][] = 'node__' . $view_mode . '_' . $content_type;

  $view_mode_preprocess = 'THEME_preprocess_node_' . $view_mode . '_' . $content_type;
  if (function_exists($view_mode_preprocess)) {
    $view_mode_preprocess($variables, $hook);
  }

  $view_mode_preprocess = 'THEME_preprocess_node_' . $view_mode;
  if (function_exists($view_mode_preprocess)) {
    $view_mode_preprocess($variables, $hook);
  }
}
2
Elijah Lynn