| ПН | ВТ | СР | ЧТ | ПТ | СБ | ВС |
|---|---|---|---|---|---|---|
| -2 | -1 | 0 | 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 | 1 |
Если вы используете модуль Views, и, возможно, хотели бы вставлять содержимое из вида в обычный документ (ноду), есть пара модулей, которые могут Вам помочь:
Более "продвинутый" вариант заключается в том, чтобы вставлять вид вручную, используя PHP. Это может быть сделано прямо на странице редактирования документа (если вы используете метод ввода со включенным фильтром PHP), или через PHPTemplate в файлах .tpl.php вашей темы.
Во-первых, мы должны использовать функцию views_get_view($view_name) для создания объекта Views, затем мы используем функцию views_build_view($type, &$view, $args = array(), $use_pager = false, $limit = 0, $page = 0), чтобы отобразить вид. Примечание: обе эти функции предоставляются модулем Views (файл views.module), смотрите этот файл для дополнительной документации по использованию.
В принципе, все, что требует функция views_build_view, это тип вида (мы будем использовать тип 'embed') и объекта вида. Дополнительные необязательные переменные включают: массив аргументов вида, флаг просмотра результатов на нескольких страницах или на одной, сколько результатов показывать на странице (или сколько результатов показывать на каждой странице), и с которой страницы начать вывод.
Как простой пример, я могу изменить документ и вставить вид в него с помощью следующего кода:
<?php //load the view by name $view = views_get_view('sample_view'); //output the view print views_build_view('embed', $view); ?>
Как более сложный пример, давайте предположим, что я хочу вставить вид во все документы определённого типа, но так, чтобы иметь разные результаты работы вида, основываясь на заголовке документа. Один из способов это сделать заключается в том, чтобы поставить следующий код в Вашем node-type.tpl.php файле:
<?php //load the view by name $view = views_get_view('faq_topics'); //output the top three items in the view with the node title as an argument print views_build_view('embed', $view, array($title), false, 3); ?>
Вы также можете создать вид различными способами:
drupal_set_title для изменения названия страницы.query: запрос, который будет выполнен.countquery: запрос с ограничением количества выводимых материалов, который будет выполнен, если требуется просмотр по страницам.summary: TRUE, если аргументы не были предоставлены и потому был подготовлен вид по умолчанию.level: какого уровеня является отсутствующий аргумент.result: объект базы данных, который Вы потом сможете использовать в функции db_fetch_object.Два модуля обеспечивают несколько различные методы для администратора, разрешая пользователю с правом редактирования материалов, выбирать любой вид с целью включения его в документ, как части содержания.
- Модуль Insert View предоставляет определённый тег, который может быть использован в теле любого документа любого типа. (Я всего лишь предполагаю - пожалуйста, поправьте меня, если это неточная информация)
- Модуль View Field требует CCK и добавляет поле, которое администраторы могут включить в любой тип документов. Он проявляется на странице редактирования документа как выпадающий список выбора имеющихся видов, и добавляет выбранный вид в тело документа. (Аналогичный эффект - но с более лёгким интерфейсом - с использованием php-кода в поле "ввод PHP" для добавления вида),
- PHPtemplate-метод удобен, если администраторы не хотят, чтобы редакторы документов имели возможность изменить отображаемый вид. Когда код вставляется непосредственно в файл
node_$type.tpl.php,node.tpl.php, илиtemplate.php, вид становится определенным для данного типа материалов, и становится частью структуры этого типа материалов. Вид не может быть изменён пользователем, независимо от того, какие права ему были выданы. Примером этого будет главная страница модулей для drupal (например, http://drupal.org/project/viewfield). Представьте себе, это тип материалов 'project' и таблица есть вид из материалов типа 'issue', связанных с этим проектом
В блоге "Завтрашние Инновации" был недавно пост по поводу еще одного метода, с использованием функции theme().
Источник: Inserting Views
Последние комментарии
48 минут 26 секунд назад
3 дня 14 часов назад
1 неделя 10 часов назад
1 неделя 1 день назад
1 неделя 2 дня назад
2 недели 15 часов назад
2 недели 2 дня назад
3 недели 3 дня назад
3 недели 3 дня назад
3 недели 3 дня назад