Изменение порядка отображения навигации подшивки для модуля Book в Drupal.
На днях столкнулся с проблемой в Drupal для модуля Book. Этот модуль позволяет организовать иерархическую структуру для материалов на сайте, наподобие книги.
Всё замечательно, но навигация в материале добавляется снизу. А если есть дополнительные поля CCK, то и после них. Мне захотелось сделать подобную навигацию сверху. Посмотрев код модуля, я понял что навигация добавляется в процессе обработки hook_nodeapi и нужно двигаться другим путём. Позже я расскажу как использовать использовать данный хук, а сейчас он мне не понадобится.
В данном случае можно использовать шаблон node.tpl.php, что я и сделал.
Необходимо вместо следующего кода
<div class="content"><?php print $content; ?></div>
использовать такой код
<?php if ($page): ?>
<div class="books"><?php print $node->content['book_navigation']['#value']; ?></div>
<?php endif;?>
<div class="content"><?php print $node->content['body']['#value']; ?></div>
Здесь установлено дополнительное условие выводить только в режиме полного отображения.
Но! Если у вас используется CCK, то нужно учитывать и его.
Например, у нас есть дополнительное поле field_item, то нужно добавить
<?php if ($page and !empty($node->field_item[0]['value'])): ?> <div class="item"> <div class="item-label">Дополнительное поле:</div> <div class="item-value"><?php print $node->field_item[0]['value']; ?></div> </div> <?php endif;?>
Здесь установлено дополнительное условие выводить только в режиме полного отображения, а также проверка того, что значение поля не пустое.
Данный код опробован только в Drupal 6.
Комментировать