Използването на блокове на views като част от съдържанието на страници и nodes

В предният пост видяхме как да включим един дисплей на views в темплейта на нод. Тук ще разгледам как да направим това в темплейта на друго views. Точно така - едно вю, което да импортнем в друго вю.

Предполагам, че няма да се изненадате - става по същия начин и със същия код:

Сигурно забелязвате разликата с предния код - името на дисплея. В предния код беше block_1, докато тук е page_1. Да, точно така - това са дори различни типове дисплеи - първият прави блок, а вторият страница. Както виждаме, това няма никакво значение, когато използваме views_embed_view. Може да пре-използваме вече създадени компоненти от сайта като блокове или страници на views където и колкото пъти е необходимо, като освен тове те са на разположение за ползване И по стандартния за тях начин - блока като блок със съответните му настройки от конфигуриране на блокове, страницата (page) като страница с нейния път - за включване в меню или каквото може да измислим още за нея.

За да довършим реализацията на идеята за включване на реклама като трета позиция (от първия етап, когато разгледахме views с филтри) ще направим нов темплейт за views Articles. В него добавяме следният код:

  <?php if ($id == 2): ?>
  <div class="advertising">
    <?php print render(views_embed_view('articles', 'page_1')); ?>
  </div>
  <?php endif; ?>

Така целият код на темплейта придобива вида

<?php
/**
 * @file views-view-unformatted.tpl.php
 * Default simple view template to display a list of rows.
 *
 * @ingroup views_templates
 */
?>
<?php if (!empty($title)): ?>
  <h3><?php print $title; ?></h3>
<?php endif; ?>
<?php foreach ($rows as $id => $row): ?>
  <?php if ($id == 2): ?>
  <div class="advertising">
    <?php print render(views_embed_view('articles', 'page_1')); ?>
  </div>
  <?php endif; ?>
  <div class="<?php print $classes_array[$id]; ?>">
    <?php print $row; ?>
  </div>
<?php endforeach; ?>
Attachments: