Drupal 7 – Jak obejít renderovací mechanismus views

Nejprve asi každého napadne otázka proč vlastně obcházet renderovací mechanismus Views? S novou verzí Views 3 je sice o mnoho důvodů méně, ale pořád jich několik zůstává. Jaké to jsou?

Asi nejzásadnějším důvodem je potřeba mít dokonalý kód. To se často stává při implementaci různých jquery skriptů, které zpravidla vyžadují určitou pevně danou strukturu. Druhým důvodem je samozřejmě neznalost všech možností Views 3, protože je to nástroj natolik komplexní a složitý ke kterému zatím není dostupná téměř žádná dokumentace.

Jak si vypsat výstup views v šabloně?

<?php

$view = views_get_view('last_articles');
$view->set_display('default');
//v promenne $data mame ulozeny originální vyrenderovaný výstup z view, ale my použijeme vlastní
$data = $view->preview();

?>
<?php if($view->result): ?>
   <ul>
     <?php foreach ($view->result as $id => $row): ?>
       <li>
         <?php  $node = node_load($row->nid); ?>
            <h3><?php print $node->title; ?></h3>
       </li>
     <?php endforeach; ?>
   </ul>
<?php else: ?>
    <p>Nejsou vloženy žádné články.</p>
<?php endif; ?>

Poznámka: Výsledný kód byl pro přehlednost zjednodušen a neodpovídá reálnému nasazení, slouží pouze jako demonstrace jak přistupovat k výsledkům. V podstatě nám Views slouží pouze k dodání vybraných NID a o zbytek už se postaráme v šabloně.



Komentáře

Zatím nikdo nepřidal komentář, můžete být první.



O autorovi

Pari

Vítejte na mém blogu, rád bych se v krátkosti představil. Je mi 26 let. Momentálně nejvíce času věnuji projektu Lepime.cz - obchod se samolepkami na zeď a tvorbě webů postavených na redakčním systému Drupal pod značkou MEPA.CZ.