Nome file modello di pagina candidato per una particolare voce di tipo di contenuto personalizzato


11

Sto lavorando su un sito Web Drupal 7. Ho creato un tipo di contenuto personalizzato per le opere. Ho molti campi e alcuni di essi sono correlati al layout di pagina come la pagina bg particolare per ogni voce. Quindi ho bisogno di page.tpl personalizzato per questo particolare tipo di contenuto.

Quindi ho attivato e aperto il modulo Sviluppo temi, e ho fatto clic sull'area del corpo per ottenere il nome del candidato per questo particolare tipo di pagina. e mi dà la schermata qui sotto che non significa nulla per me: / Quando faccio clic sull'area del nodo, va bene, dà node - work.tpl.php, ma ho bisogno di pagina. Ho provato "page - work.tpl.php", non ha funzionato.

Cosa mi sto perdendo?

inserisci qui la descrizione dell'immagine

Risposte:


12
function mytheme_process_page(&$variables) {
    $variables['theme_hook_suggestions'][] = 'page__'. $variables['node']->type;
}

Supponendo che il nome del tipo di contenuto leggibile da te sia "lavoro", la pagina - work.tpl.php funzionerà.

Fare riferimento a questa discussione per ulteriori informazioni.


Wow! ha funzionato alla grande! Posso rivolgermi alla pagina - work.tpl.php ora :) anche se funziona bene, ho un messaggio di errore come d.pr/EaMa che ho cercato su Google e ho cercato di risolvere, ancora provando ... qualche idea? grazie mille per il vostro tempo!!
Drupal ragazzo

oh immagino sia stato a causa del modulo Developer Theme. Disattivo il modulo e l'errore è sparito :) grazie mille!
Drupal ragazzo

2

In template.php aggiungi:

function themeName_preprocess_page(&$vars) {
  if (isset($vars['node'])) {
    // If the node type is "blog" the template suggestion will be "page--blog.tpl.php".
    $vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--',    $vars['node']->type);
  }
}

Puoi omettere str_replace(); prova quale versione funziona meglio per te.

Quindi, crea un file modello il cui nome file è page –- [content_type] .tpl.php. (Sostituisci [content_type] con il nome della macchina del tipo di contenuto.)

Vedi http://drupal.org/node/1089656#comment-4426790 .


1

Nel caso in cui si desideri anche l'id del nodo, utilizzare questo.

function mytheme_process_page(&$variables) {
  if (isset($variables['node'])) { 
    $variables['theme_hook_suggestions'][] = 'page__type__'. $variables['node']->type;
    $variables['theme_hook_suggestions'][] = 'page__node__' . $variables['node']->nid;
  }
}

0

Avere un modello diverso per ogni tipo di contenuto non è una buona pratica secondo i ragazzi di Drupal. Questo è il motivo che non trovi page--work.tpl.phpnell'elenco dei file del modello candidato. Ritengono che solo i file dei modelli di nodo debbano essere diversi. Tuttavia, se vuoi hackerare, vai avanti.

Utilizzare l'alias percorso per impostare un percorso basato sul tipo di contenuto. E quindi inserire questo codice

 if (module_exists('path')) {
    $alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
    if ($alias != $_GET['q']) {
      $template_filename = 'page';
      foreach (explode('/', $alias) as $path_part) {
        $template_filename = $template_filename . '-' . $path_part;
        $vars['template_files'][] = $template_filename;
      }
    }
  }

nella phptemplate_preprocess_page(&$vars)funzione nella template.phpcartella del tema.

Puoi modificare un po 'il codice per renderlo più efficiente.

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.