it-swarm.com.de

Dateiname der Kandidatenseitenvorlage für einen bestimmten benutzerdefinierten Inhaltstypeintrag

Ich arbeite an einer Drupal 7-Website. Ich habe einen benutzerdefinierten Inhaltstyp für Werke erstellt. Ich habe viele Felder, und einige davon beziehen sich auf das Seitenlayout, z. B. bestimmte Seiten-BG für jeden Eintrag Ich benötige eine benutzerdefinierte page.tpl für diesen bestimmten Inhaltstyp.

Also habe ich das Theme Developer-Modul aktiviert und geöffnet und auf den Textbereich geklickt, um den Kandidatennamen für diesen bestimmten Seiteneintrag für den Inhaltstyp abzurufen. und es gibt mir den Bildschirm unten, der mir nichts bedeutet:/Wenn ich auf den Knotenbereich klicke, ist es in Ordnung, es gibt node - work.tpl.php, aber ich brauche für Seite. I. versucht "page - work.tpl.php", es hat nicht funktioniert.

Was vermisse ich?

enter image description here

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

Angenommen, der Name Ihres maschinenlesbaren Inhaltstyps lautet "work", funktioniert page - work.tpl.php.

Weitere Informationen finden Sie unter dieser Thread .

12
mingos

In template.php hinzufügen:

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);
  }
}

Sie können str_replace() weglassen; Testen Sie, welche Version für Sie am besten geeignet ist.

Erstellen Sie dann eine Vorlagendatei mit dem Dateinamen page - [content_type] .tpl.php. (Ersetzen Sie [content_type] durch den Inhaltstyp Computername.)

Siehe http://drupal.org/node/1089656#comment-442679 .

2
Mołot

Wenn Sie auch die Knoten-ID möchten, verwenden Sie diese.

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;
  }
}
1
rcastera

Laut Drupal ist es keine gute Praxis, für jeden Inhaltstyp eine andere Vorlage zu haben. Aus diesem Grund finden Sie page--work.tpl.php Nicht in der Liste der Kandidatenvorlagendateien. Sie sind der Meinung, dass nur die Knotenvorlagendateien unterschiedlich sein sollten. Wenn Sie sich jedoch einhacken möchten, fahren Sie fort.

Verwenden Sie den Pfadalias, um einen Pfad basierend auf dem Inhaltstyp einzurichten. Und dann diesen Code einfügen

 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;
      }
    }
  }

in die Funktion phptemplate_preprocess_page(&$vars) in template.php im Themenordner.

Sie können den Code jedoch ein wenig ändern, um ihn effizienter zu gestalten.

0
Gokul N K