Ім'я файлу шаблона сторінки сторінки для конкретного запису типового вмісту


11

Я працюю на веб-сайті Drupal 7. Я створив спеціальний тип вмісту для творів. У мене багато полів, і деякі з них пов’язані з макетом сторінки, як-от конкретна сторінка bg для кожного запису. Тому мені потрібна спеціальна page.tpl для цього конкретного типу вмісту.

Тому я активував і відкрив модуль розробника тем і клацнув область тіла, щоб отримати ім’я кандидата для цієї конкретної сторінки типу вмісту. і він дає мені екран нижче, який для мене нічого не означає: / Коли я натискаю область вузла, це добре, він дає вузол - work.tpl.php, але мені потрібна сторінка. Я спробував "page - work.tpl.php", це не спрацювало.

Що я пропускаю?

введіть тут опис зображення

Відповіді:


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

Припустимо, що назва машиночитаного типу вмісту - "робота", сторінка - work.tpl.php буде працювати.

Для отримання додаткової інформації зверніться до цієї теми .


Оце Так! це працювало чудово! Я можу звернутися до сторінки - work.tpl.php зараз :), хоча це працює чудово, у мене є повідомлення про помилку як d.pr/EaMa, я гуглив і намагався вирішити, все ще намагаюся ... будь-яка ідея? велике спасибі за ваш час !!
Друпай хлопець

о, я думаю, це було через модуль розробника теми. Я відключаю модуль і помилка пішла :) велике спасибі!
Друпай хлопець

2

У template.php додати:

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

Можна опустити str_replace(); перевірити, яка версія найкраще підходить для вас.

Потім створіть файл шаблону, ім'я якого файла - сторінка –- [content_type] .tpl.php. (Замініть [content_type] назвою машини типу вмісту.)

Дивіться http://drupal.org/node/1089656#comment-4426790 .


1

Якщо ви хочете ідентифікатор вузла, скористайтеся цим.

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

Хлопці в Drupal не мають кращої практики мати шаблон для кожного типу контенту. Саме тому ви не знайдете page--work.tpl.phpу списку файлів шаблону кандидатів. Вони відчувають, що лише файли шаблону вузлів мають бути різними. Однак якщо ви хочете зламати, продовжуйте.

Використовуйте псевдонім шляху, щоб налаштувати шлях на основі типу вмісту. А потім вставити цей код

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

у phptemplate_preprocess_page(&$vars)функцію в template.phpпапці тем.

Ви можете трохи змінити код, щоб зробити його більш ефективним.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.