Minden oldalon amit egy időre befejezek - mert ugye weboldalt csak elkezdeni lehet befejezni nem - megpróbálom a legjobb teljesítményt kicsikarni a rendszerből, hogy gyors legyen.
Ennek egyik legjobb módszere ha a nézetünket nem adatbázisban eltárolt adatok alapján kérdeztetjük le az adatbázisból, hanem mindezt kiexportáljuk egy modulba és az intézi csak a lekérdezés eredményét.
Elég elavult dolognak számít 2011 vége felé 6.x-2.x verziójú Views modulról írni, de hátha valaki még nem csinálta ezt. (7.x-3.x-en nem jöttem még rá, hogy kell.)
Tehát a lépések a következők:
- Nyomjuk meg a nézeten az export linket
- Ez ki fog adni egy hosszú php kódot.
- Készítsünk egy modult melynek neve viewskodba.module tartalma pedig a következő legyen:
<?php<br />function foobar_views_api() {<br /> return array(<br /> 'api' => 2,<br /> 'path' => drupal_get_path('module',foobar) . '/views/*.inc',<br /> );<br />} <p>function foobar_views_default_views() {<br /> $path = './'. drupal_get_path('module',foobar) . '/views/*.inc';<br /> <br /> foreach (glob($path) as $views_filename) {<br /> require_once($views_filename);<br /> }<br /> return $views;<br />}</p>
- Modul nem létezhet .info file nélkül:
name = "FooBar"<br />description = "Stores the view in code, idea from sgergely.hu"<br />core = "6.x"<br />version = "6.x-dev"<br />project = "foobar"<br />package = "Custom"
- Hozzunk létre a modul könyvtárán belül egy views könyvtárat, ebben fogjuk tárolni az exportált nézetet. A file neve legyen mondjuk nezetem.inc amelynek a tartalma a következőképpen nézzen ki:
<?php<br />//Ennek a sornak a helyére kell bemásolni az első pontban megkapott hosszú php kódot.<br />$views[$view->name] = $view;
- Még nem végeztünk mert a felületen be kell állítani, hogy a Views tudja, hogy kódba raktuk a nézetet.
- A Tools oldalon ( /admin/build/views/tools ) töröljük a Views Cache-t
- A nézet list oldalon ( /admin/build/views/list ) kattintsunk a Visszaállít linkre
- Töröljük mégegyszer a Views Cache-t.
- Kész.