Итак, продолжаю выкладывать переводы того, что меня заинтересовало. Здесь приведен перевод статьи Автор: Aaron Hawkins
Источник: http://www.pixelclever.com/how-programmatically-insert-a-view-drupal-6.
В Drupal 6 модуль views был переписан полностью,и теперь сниппет для вставки в tpl-файл или в php выглядить следующим образом:
<?php
$view_args = array();
$display_id = 'page_1';
$view = views_get_view('logo_slideshow');
if (!empty($view)) {
print $view->execute_display($display_id , $view_args);
}
?>
Первая проблема возникает в момент, когда вы для вывода используете id. Я нашел два способа определить id вывода (display). Первый – войти в view и экспортировать его. Затем посмотреть в строку кода, которая выглядит примерно так:
<?php
$handler = $view->new_display('page', 'Page', 'page_1');
?>
Я сказал «выглядит примерно так», поскольку аргументы внутри метода new_display могут отличаться для вашего view, если вы имеете несколько типов показа или вы выводите только версию с блоком. Независимо от типа показа третьим аргументом в этом случае будет ‘page_1’.
Я вставил код для создания view, все работает, но пропал заголовок страницы! Что делать?
Да, это побочный эффект этой техники, но его можно обойти. Когда это впервые случилось со мной, я мучился примерно в течении часа, поскольку одновременно создал новый тип контента и установил новый модуль. Поэтому я был уверен, что это побочный эффект этих действий. Но после того, как я убедился в обратном, мне стало ясно, что вероятно это связано с вызовом drupal_set_title() из view. Для решения проблемы я при помощи нижеприведенного кода перезагрузил заголовок в самом tpl-файле:
<?php
execute_display($display_id , $view_args);
drupal_set_title($node->title);
?>
Функция drupal_set_title() перегружает заголовок страницы.
Итак, вы это сделали. Теперь вы сможете включать views в любые ваши tpl-файлы. Счастья вам.
Как всегда, дубль перевода есть на моем сайте. На нем еще остался перевод статьи "Создание ленты пользователя при помощи Views2" (ARCHIVE: Create a user feed using Views 2 http://drupal.org/node/314097). При случае выложу.
Комментарии
Вообще-то все что вы описали делается одной строчкой кода, функцией:
<?php
views_embed_view($name, $display_id = 'default', $arguments = NULL).
?>
В чем проблема? Айдишники так и именуются page_X, block_X и т.п. Все это есть в официальной доке к Вьюс.
Так в статье.
именно так как описал Роман, а в 5-ке это делается функцией
<?php
theme_view($view_name, $limit = NULL, $use_pager = NULL, $type = 'embed', $view_args = array());
или
theme('view', $view_name, $limit = NULL, $use_pager = NULL, $type = 'embed', $view_args = array());
?>
Не все что постят пацаны с нерусскими фамилиями есть истина :).