Nazwa pliku szablonu strony kandydującej dla określonego niestandardowego typu zawartości

11

Pracuję na stronie internetowej Drupal 7. Stworzyłem niestandardowy typ zawartości dla prac. Mam wiele pól, a niektóre z nich są związane z układem strony, np. Konkretna strona bg dla każdego wpisu. Potrzebuję więc niestandardowego page.tpl dla tego konkretnego typu treści.

Tak więc aktywowałem i otworzyłem moduł programisty motywów i kliknąłem obszar ciała, aby uzyskać nazwę kandydata dla tego konkretnego wpisu typu strony. i pokazuje mi poniższy ekran, który nic dla mnie nie znaczy: / Kiedy klikam obszar węzła, jest w porządku, daje węzeł - work.tpl.php, ale potrzebuję strony. Próbowałem „page - work.tpl.php”, to nie działało.

czego mi brakuje?

wprowadź opis zdjęcia tutaj

Drupal
źródło

Odpowiedzi:

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

Zakładając, że nazwa typu treści do odczytu maszynowego to „work”, strona - work.tpl.php będzie działać.

Więcej informacji znajdziesz w tym wątku .

mingos
źródło
łał! działało świetnie! Mogę teraz zaadresować do strony - work.tpl.php :) chociaż działa dobrze, mam komunikat o błędzie jako d.pr/EaMa Poszukałem go i spróbowałem rozwiązać, wciąż próbuję ... jakiś pomysł? wielkie dzięki za poświęcony czas !!
Drupal facet
och, myślę, że to z powodu modułu Theme Developer. Wyłączam moduł i błąd zniknął :) wielkie dzięki!
Drupal facet
2

W template.php dodaj:

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

Możesz pominąć str_replace(); sprawdź, która wersja działa najlepiej dla Ciebie.

Następnie utwórz plik szablonu, którego nazwa pliku to page –- [content_type] .tpl.php. (Zamień [typ_treści] na nazwę komputera typu zawartości.)

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

Mołot
źródło
1

Jeśli chcesz również identyfikator węzła, użyj tego.

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

źródło
0

Posiadanie innego szablonu dla każdego typu zawartości nie jest dobrą praktyką według chłopaków z Drupal. Dlatego nie znajduje się page--work.tpl.phpna liście plików szablonów kandydujących. Uważają, że tylko pliki szablonów węzłów powinny być inne. Jeśli jednak chcesz się włamać, śmiało.

Użyj aliasu ścieżki, aby ustawić ścieżkę na podstawie typu zawartości. A następnie wstaw ten kod

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

do phptemplate_preprocess_page(&$vars)funkcji w template.phpfolderze motywów.

Możesz jednak nieco zmodyfikować kod, aby był bardziej wydajny.

Gokul NK
źródło