Программный вывод меню, блока, формы и views


56

Вывод меню; Вывод блока; Вывод формы; Вывод представления views

1. Программный вывод меню по его id

Например, главное меню - "main-menu":

$menu = menu_tree('main-menu');
print render($menu); 

Иногда возникает необходимость ограничить выводимое меню определенной глубиной. Например, следующий код покажет, как вывести "main-menu", органичившись вторым уровнем:

$items=menu_tree_page_data('main-menu', 2);
$items=menu_tree_output($items);
print render($items);

2. Программный вывод блока

$block = module_invoke($module_name, 'block_view', $block_delta);
echo render($block['content']);

где

  • $module_name - имя модуля, в котором определён блок,
  • $block_delta — номер блока.

3. Программный вывод формы по ее id

Например, вывод формы контактов:

//Если форма описана не в основном файле модуля,
//необходимо подключить файл с формой.
//Очень часто этого не требуется.
   module_load_include('inc', 'contact', 'contact.pages');
//Получаем массив с элементами формы
   $form=drupal_get_form('contact_site_form');
//Выводим форму
   print drupal_render($form);

4. Программный вывод представления views

print views_embed_view($name, $display_id = 'default'[, $argument_1[, $argument_N]]);
// $name - системное имя представления views
// $display_id - системное имя вида
// $argument_1, $argument_2, ... , $argument_N - аргументы (то, что в контекстных фильтрах требуется для представления)

Иногда полезно загружать не готовый html представления, а массив с результатами. Для этих целей следует использовать функцию 

views_get_view_result($name, $display_id[, $argument_1[, $argument_N]]).
Добавить комментарий
Может быть интересно

Иногда необходимо вывести в одном документе не только символы стандартной латиницы и своего национального алфавита. Например, для того, чтобы сослаться на название немецкого, французского или чешского источника, либо привести цитату на греческом языке (кстати, огромное множество символов просто отсутствует на клавиатуре).

1
Иногда при разработке сайта появляется необходимость создавать отдельный шаблон для определенной ноды. По умолчанию такой возможности нет, зато можно это прикрутить самостоятельно. Как это сделать? Это можно узнать в данной статье.

В общем, проблема старая и известная. Правда не на всех рейсурсах заметная. При использовании модуля Metatag, на форму редактирования сущностей добавляется вкладка для индивидуального изменения метатегов. И на ней используется браузер токенов.

1
Те, кто использует модуль Double field могли заметить, что в текстовой области отсутствует редактор. Бывают случаи, когда для удобства наполнения он просто необходим.
1
Данный модуль просто незаменим, если на Вашем сайте реализована мультиязычность или на Вашем сайте используются панели. Multilingual Panels позволяет создавать/менять настройки панели для различных языков.
1