Saját megjelenítési módok Node displays modullal

Anonymous képe

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 listázására, amelyek számára nem jó sem a teljes, sem a teaser megjelenítés, 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.