В Drupal 6 представление может быть встроено в узел следующим образом:
$viewName = 'LatestNews';
print views_embed_view($viewName);
Это не работает для drupal 7. Какова функция для встраивания представлений в drupal 7?
В Drupal 6 представление может быть встроено в узел следующим образом:
$viewName = 'LatestNews';
print views_embed_view($viewName);
Это не работает для drupal 7. Какова функция для встраивания представлений в drupal 7?
Ответы:
В Drupal 7 вы можете использовать этот код.
Для просмотра страницы
print views_embed_view('name_of_view','page_1', $node->nid);
Для блока просмотра
print views_embed_view('faculty_core','block_1', $node->nid);
Чтобы отобразить представление в шаблоне узла, используйте следующий код.
// Load the view.
$view = views_get_view('machine_name_of_view');
// Set the active display.
$view->set_display('your_view_display_name');
// Set any needed argument.
$view->set_arguments(array(arg(0), arg(1)));
// Execute the view.
$view->execute();
// Render the view.
print $view->render();
pre_execute()
до execute()
.
Почему бы нет:
print views_embed_view($view_machine_name, $view_display_name, $arg1, $arg2);
где $ arg, $ arg2 и т. д. являются необязательными.
Или используйте модуль Viewfield для встраивания представления в качестве поля.
Одним из решений является использование Panelizer для переопределения содержимого соответствующего узла.
Допустим, например, у вас есть несколько разовых страниц, которым нужно приложить представление.
1) Вы можете использовать тип содержимого страницы или создать новый тип содержимого, который будет специально панелироваться.
2) Включите Panelizer для этого типа контента, убедитесь, что для него установлен параметр «Разрешить выбор отображения для каждой записи», чтобы можно было настроить несколько дисплеев Panelizer, которые будут адаптированы для каждого из них вне страницы. (к каждому дисплею панели может быть прикреплен собственный набор представлений)
3) Отсюда вы просто создаете представление (для этого мне нравится использовать панели содержимого) и добавляете его на выбранный дисплей содержимого Panelizer.
Это позволяет вам повторно использовать один тип контента, который на самом деле не нуждается в собственном наборе полей, но потенциально может использоваться либо для ссылки на другие объекты (как поле), либо для ссылки на представления.
Добавьте модуль Paragraphs, и вы получите тип контента «Швейцарский армейский нож». Говоря о том, что было бы идеальным именем для пользовательского типа контента, используемого для этой цели ... Хм ....
Давайте просто отметим, что первый параметр - это имя представления, второе отображаемое имя, и после этого вы можете передавать параметры контекстного фильтра.
Так что «$ node-nid», третий параметр зависит от вашего представления ... что он ожидает от первого контекстного фильтра - идентификатор не обязательно должен быть идентификатором узла. Конечно, вы не ограничены одним параметром - передайте столько, сколько вы имеете в виду ... или не передавайте ни одного, если ваше представление не имеет контекстных фильтров.
Очень настраиваемый модуль Drupal 7 и 8 - views_field_formatter, который позволяет вам встраивать вид как средство форматирования полей.