Как мне вставить вид внутри узла?

7

В Drupal 6 представление может быть встроено в узел следующим образом:

$viewName = 'LatestNews';
print views_embed_view($viewName);

Это не работает для drupal 7. Какова функция для встраивания представлений в drupal 7?

Natkeeran
источник
Согласно этой ссылке на модуль документации представлений, эта функция одинаково доступна на Drupal 6 и 7. Попробуйте со вторым параметром $ display_id вашего представления.
Шоаиб Наваз

Ответы:

5

Модуль EVA также может прикреплять представления к узлам.

Уве
источник
5

Чтобы отобразить представление в шаблоне узла, используйте следующий код.

// 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();
Cyclonecode
источник
1
Вы всегда должны вызывать $ view-> pre_execute (); перед $ view-> execute ();
Teegan
@Teegan - Я не знал, что использование только execute похоже работает, но я рассмотрю его pre_execute()до execute().
Cyclonecode
4

Почему бы нет:

print views_embed_view($view_machine_name, $view_display_name, $arg1, $arg2);

где $ arg, $ arg2 и т. д. являются необязательными.

Или используйте модуль Viewfield для встраивания представления в качестве поля.

Артур
источник
VIEWFIELD !!!! О, МОЙ БОГ!!! Я несколько дней искал эту функциональность, пробовал много модулей, это спасало меня! : D спасибо!
DrCord
@DrCord, также посмотрите модули Eva и views_field_view, это почти одно и то же.
timofey.com
Я не мог заставить Ева делать то, что я хотел.
DrCord
1

Одним из решений является использование Panelizer для переопределения содержимого соответствующего узла.

Допустим, например, у вас есть несколько разовых страниц, которым нужно приложить представление.

1) Вы можете использовать тип содержимого страницы или создать новый тип содержимого, который будет специально панелироваться.

2) Включите Panelizer для этого типа контента, убедитесь, что для него установлен параметр «Разрешить выбор отображения для каждой записи», чтобы можно было настроить несколько дисплеев Panelizer, которые будут адаптированы для каждого из них вне страницы. (к каждому дисплею панели может быть прикреплен собственный набор представлений)

3) Отсюда вы просто создаете представление (для этого мне нравится использовать панели содержимого) и добавляете его на выбранный дисплей содержимого Panelizer.

Это позволяет вам повторно использовать один тип контента, который на самом деле не нуждается в собственном наборе полей, но потенциально может использоваться либо для ссылки на другие объекты (как поле), либо для ссылки на представления.

Добавьте модуль Paragraphs, и вы получите тип контента «Швейцарский армейский нож». Говоря о том, что было бы идеальным именем для пользовательского типа контента, используемого для этой цели ... Хм ....

Фил
источник
0

Давайте просто отметим, что первый параметр - это имя представления, второе отображаемое имя, и после этого вы можете передавать параметры контекстного фильтра.

Так что «$ node-nid», третий параметр зависит от вашего представления ... что он ожидает от первого контекстного фильтра - идентификатор не обязательно должен быть идентификатором узла. Конечно, вы не ограничены одним параметром - передайте столько, сколько вы имеете в виду ... или не передавайте ни одного, если ваше представление не имеет контекстных фильтров.

MilanG
источник
0

Очень настраиваемый модуль Drupal 7 и 8 - views_field_formatter, который позволяет вам встраивать вид как средство форматирования полей.

GiorgosK
источник