Az új modul bemutatkozó videójának első részében olyan funkciókat ismertet a fejlesztő, amelyek segítségével a template.php preprocess hook-jaiban végzett programozás jó részét kiválthatjuk kattintgatással. HTML+CSS területről érkező, PHP-t nem ismerő sminkelők számára ez nagyon hasznos lehetőség, és még a Contemplate modulnál is kényelmesebb a használata.
A modul másik fő szolgáltatása (a videóban 07:10 táján) viszont már a kóderek számára is érdekes lehet: létrehozhatunk saját megjelenítési módokat (display mode). Ha valaki járt már úgy, hogy a teljes node nézet és a teaser nézet mellett szüksége lett volna további megjelenítési módokra, akkor fogja értékelni ezt a lehetőséget.
Új megjelenítési módok létrehozásának jelenleg több módja is van, egyik kényelmetlenebb, mint a másik:
- Külön tpl.php sablonokat hozunk létre, amelyekben egyenként kiíratjuk a szükséges mezőket, majd template.php-ben szabályozzuk, hogy adott feltételek mellett melyik sablont használja a sminkmotor. Ennek hátránya, hogy sok tpl.php-t kell kezelni, a smink „széttöredezik”, karbantartása megnehezül. Összetettebb tartalomtípusok esetén a mezők egyenkénti kiíratása sem egy leányálom.
- Template.php-ben unset()-eljük a $content nem kívánatos mezőit. Ez egy helyen, központilag szabályozza a megjelenést, de PHP programozást igényel; összetettebb webhelyen modul-méretűvé duzzasztja a template.php-t, ami elég egészségtelen dolog.
- A Views modul „Row style: Fields” beállítását használjuk: nézeteket hozunk létre azon node-ok megjelenítésére, amelyek számára nem jó sem a teljes, sem a teaser formátum, majd a Views felületén összekattintgatjuk a szükséges mezőket. Még ez a legkényelmesebb, de nyilvánvalóan egy hack.
A Node display segítségével tehát ezentúl kattintós felületen, programozás nélkül hozhatunk létre új megjelenítési módokat. Ha jól értem a videót, modulfejleszők számára API-t is biztosít, ami nagyon hasznos lehet pl. multimédiás pluginek fejlesztésénél.
Természetesen itt is ugyanazok a problémák merülnek fel, mint a Contemplate esetén: fájl helyett adatbázisban tárolunk és modullal kezelünk megjelenítésre vonatkozó információkat, ami megnehezíti a verziókezelést és rontja a teljesítményt. Nagyobb webhelyen mérlegelnünk kell a várható előnyöket és hátrányokat.
Comments
Row style:Field - vs Node
Helló!
Volt szerencsém részt venni pp sminkmesteri tanfolyamán és ott elhangzott, hogy a views-nál, ha lehet mindig a mezős megjelenítést használjuk, mert minden egyéb (node-teaser) esetben egy halom fölösleges sql-t lefuttat. A devel modullal ezt nyomon is lehet követni, nekem van olyan oldalam, hogy egy oldalletöltés 600 query-vel állt elő.
Mi az optimális?
Szia!
Ezt igen bölcsen mondta pp :)
Viszont ha egyszer elkészítetted pl. a teaser megjelenítés sminkjét (amit úgyis mindig meg kell csinálni, ha a standard taxonómia listákat elérhetővé akarod tenni a látogatók számára), akkor kényelmes azt újrahasználni Views listák esetén is.
Ha nincsenek regisztrált felhasználóid, a tartalom ritkán változik, tehát a látogatóid túlnyomó többségét gyorstárból szolgálod ki, akkor nem nagyon számít, hogy nagy ritkán a gyorstár újraépítésekor mennyire terhelődik az adatbázis. Mindig mérlegelni kell az adott webhely sajátosságait, sok szempont együttes mérlegelésével lehet megtalálni az optimális megoldást.
Egyébként épp a napokban indult a Display suite projekt. Ez egy önálló API, erre épül a Node displays – és immár lehetőség van hozzászólások, felhasználók megjelenítéséhez is rapid módszerrel, kattintós felületen megjelenítési módokat létrehozni.