Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Как настроить вид в материалах, размещенных с использованием мод. book?

Как настроить вид в материалах, размещенных с использованием мод. book?
, by

Здравствуйте.

Скажите, как настроить свой собственный вид для материалов, построенных в иерархию с использованием модуля book? Я могу настроить вид для первого уровня вложенности, а вот для второго и последующих применяется обычный набор полей из типа материала "подшивка", а мне нужно чтобы и второй уровень имел настраиваемый вид. Спасибо.

1 answer
votes: 465
Answer

Вы хотите разные шаблоны сделать для разных уровней или небольшие изменения внести?

Если небольшие изменения, то уровень можно задать в классе для div'а #node. В шаблоне выведите в

<div id="node-<?php print $node->nid; ?>" class="<?php print $node->...

Наверняка где-то указан уровень вложенности ноды в иерархии, можно его вывести классов и уже по этому классу задавать CSS.

Если нужно добавть отдельный шаблон, тогда нужно использовать хуки theme_preprocess_page и theme_preprocess_node, в них можно добавить в массив шаблонов нужный вам массив:

<?php
function themeName_preprocess_page(&$vars, $hook) {
  if ((arg(0) == 'node') && (arg(1) == 'add' || arg(2) == 'product')) {
    $vars['template_files'][] =  'page-node-add-product';
  }
}
?>

Это как пример для page, добавляет шаблон страницы (точнее переопределяет page.tpl.php), а вот этот переопределяет node.tpl.php:

/**
 * Adding node templates for all cases
 */
function MYTHEME_preprocess_node(&$vars){
 $vars['template_files'] = array();
         //default template
 $vars['template_files'][] = 'node';
 
 if (drupal_is_front_page()) { //front page template
  $vars['template_files'][] = 'node-front';
 }

 if($vars['page']) {    //individual node (page)
  $vars['template_files'][] = 'node-page';
  $vars['template_files'][] = 'node-'.$vars['node']->type.'-page';
  $vars['template_files'][] = 'node-'.$vars['node']->nid.'-page';
 } else {      //multiple nodes at one page
  $vars['template_files'][] = 'node-'.$vars['node']->type;
  $vars['template_files'][] = 'node-'.$vars['node']->nid;

         //template for teaser
  if($vars['teaser']) {
   $vars['template_files'][] = 'node-'.$vars['node']->type.'-teaser';
   $vars['template_files'][] = 'node-'.$vars['node']->nid.'-teaser';
  }
 }
}

Вообщем нужно кукую-то переменную найти у контент типа книги, которая отвечает за иерархию и за нее зацепить шаблон. Если покажите дамп объекта $node с разных иерархий (кнопочка вставки кода есть в toolbar), то я посмострю и подскажу.

 

 


Спасибо, но мне бы чего попроще) с помощью стандартных инструментов Друпала. Я понять не могу, как в Друпале делаются многоуровневые структуры?! Например, сайт состоит из главной, каталога, о фирме и контактов, в свою очередь каталог делится на несколько подкаталогов, а те на какие-то перечни сведений. Соответственно, страница каталога имеет один вид, списка подкаталогов другой, а списка сведений третий. Простейшая структура, а как делать на Друпале понять не могу никак!