Drupal 7 как переопределить страницу.ТПЛ для определенного типа контента?

Я хотел переопределить страницу.ТПЛ.PHP для определенного типа контента. Я пробовал это, ничего не работает для меня.

  1. page--article.tpl.php
  2. page--node--article.tpl.php
  3. page--node--type--article.tpl.php
  4. page--node-type--article.tpl.php
  5. page--type--article.tpl.php

но когда я нацелил конкретный узел по номеру, т. е. page--node--8.tpl.php он работал нормально. Я думаю page--article.tpl.php должен был работать, но я не знаю, почему он не работает.

Пожалуйста, скажите мне, если я назову это неправильно. и как я могу отлаживать такие вещи. Я слышал, что могу использовать модуль Devel, но ничего не знаю об этом. Небольшой намек в правильном направлении будет оценен.

спасибо заранее

8 ответов


вы должны убедиться, что ваш шаблон может справиться с этим ... Я получил фрагмент кода, который работал для меня здесь:

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

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

вы не забыли очистить кэш (в разделе Администрирование > конфигурация сайта > производительность), чтобы Drupal "знал" о Вашем новом файле и использовал это, а не по умолчанию.

посмотреть здесь очистка кэшированных данных

кроме того, вам может потребоваться добавить крюк предварительной обработки (я сам не использовал D7, просто 5/6 - думаю, что это немного изменилось.) этот пост на Drupal Stack Exchange кажется, чтобы дать более подробную информацию


Я только что столкнулся с той же проблемой.

узел-рецепт.ТПЛ.в PHP

не

страница--рецепт.ТПЛ.в PHP

Это, конечно, с типом контента под названием "Рецепт".


ВСЕГДА ОЧИЩАЙТЕ КЭШ...

перейдите в /admin/config/development / performance и нажмите кнопку Очистить кэш. Это должно быть первое, что вы делаете, если вы внесли изменения в структуру серверной и они не отображаются, как и ожидалось.

в противном случае вы почти были правы

  1. страница--content-type-name.ТПЛ.в PHP

позволит вам тематический шаблон типа контента.


Я знаю, что это старый вопрос, но если другие прибудут сюда, способ переопределения типов контента в drupal 7 выглядит так

узел--contenttype.tpl


вам нужно будет перезаписать определенный шаблон узла для типа контента, если он отличается от базовой страницы. Пожалуйста, проверьте это:

http://api.drupal.org/node/19080

под этой страницей скопируйте / вставьте элементы, которые находятся в узле.ТПЛ.php страница и перезаписать его на то, как вы хотите. Вы можете получить доступ к узлу конкретно по $node

ваш шаблон для статей быть:

узла-статья.ТПЛ.в PHP

Как только это будет создано, убедитесь, что вы очистили кэш, чтобы убедиться, что это работает.


таким образом, в зависимости от того, что вы пытаетесь выполнить, могут быть некоторые трюки CSS, которые могут помочь вам.

например, чтобы переопределить любые правила CSS для определенного типа узла, просто помните, что ваши страницы для этого типа узла будут иметь класс тела "node-type-[TYPE]" (ie:.node-type-article)

затем вы можете переопределить CSS следующим образом:

body.node-type-article #selector {}

Шаг 1.создайте тип контента, например: мой тип контента - "fullwidthpage"

Шаг 2. копия