Az egyik leggyakoribb feladat honlapkészítés során, hogy a webhelyre feltöltött nagy mennyiségű tartalmat (írásokat, oldalakat, képeket – Drupal szakzsargonban: a node-okat) valahogyan rendszerezzük. Erre a Drupal alapcsomag két modult is kínál: a Taxonomy (kategorizáló) modullal a tartalmakat kategóriákba sorolhatjuk, a Book (könyv) modullal pedig "szülő-gyermek" kapcsolatot, azaz hierarchikus viszonyt alakíthatunk ki közöttük. Egyszerűbb webhelyeken ez általában elegendő a tartalmak rendszerezéséhez; azonban ahogy honlapunk egyre összetettebbé válik, előfordulhat, hogy beleütközünk az alapcsomag korlátaiba. Ilyenkor kiegészítő modulok telepítésével növelhetjük a Drupal képességeit. Az alábbi kétrészes cikkben először a tartalomszervezés problémáját ismertetjük, majd többféle, egyre növekvő komplexitású megoldást mutatunk be kezdő és haladó Drupal webmesterek számára.
Vegyünk egy egyszerű példát: szeretnénk egy sportegyesületnek webhelyet készíteni. Az egyesület keretein belül 2 csapat is működik, egyenként 15-20 taggal. Honlapunkon az egyesület adatai mellett szeretnénk önálló oldalt nyitni mindkét csapatnak, valamint egyenként az összes játékosnak. Természetesen a játékosok oldalain fel kell tüntetnünk, hogy melyik csapatban játszanak.
Ha Taxonomy modullal oldjuk meg a feladatot, akkor hozzunk létre egy "Csapatok" nevű szótárat, és ehhez adjunk 2 kategóriát: Piros csapat, Kék csapat. Ezek után hozzuk létre a játékosok oldalait, és a tartalombeküldő oldalon a Kategóriák rovatban jelöljük be, hogy az adott játékos melyik csapathoz tartozik. A végeredmény valahogy így fog kinézni:
Ha most felkeressük webhelyünkön a www.honlapneve.hu/taxonomy/term/1 oldalt, akkor ott egy listát találunk, amelyben a linkek a Piros csapat tagjainak egyéni oldalaira mutatnak (www.honlapneve.hu/node/1, stb.); az egyéni oldalakon pedig ott látjuk a cím alatt a kategória linket, amely megmutatja, hogy az adott játékos melyik csapatnak a tagja, és amelyen keresztül visszatérhetünk a csapat oldalára. A menübe felvehetjük a Piros csapat és Kék csapat oldalaira mutató linkeket – ezzel el is készítettünk egy egyszerű webhelyet.
Ezután azonban szeretnénk továbblépni: logikusnak tűnik, hogy a csapatok oldalának tetején, a játékosok listája felett ott legyen a csapatvezető neve és elérhetősége, az edző neve, a csapat története, közös fotója, stb. A Taxonomy modul erre nem ad lehetőséget. A modul által létrehozott kategóriák csak egyszerű dobozok, amelyekbe betehetjük az egyes tartalmakat (a játékosok egyéni oldalait) – de a dobozon csak a kategórianév (Piros csapat, Kék csapat) szerepel, és nem írhatunk rá további információkat.
Próbálkozzunk most a Book modullal. Ennek bekapcsolása után a node oldalakon a Megtekintés és a Szerkesztés mellett megjelenik egy újabb fül: a Vázlat. Hozzunk létre egy "Csapatok" nevű oldalt, a Vázlat fülön nyilvánítsuk könyv címlapnak (azaz olyan oldalnak, amely legfelső szintű); majd hozzuk létre a csapatok oldalait, és ezeket rendeljük a könyv címlap mint "szülő" oldal alá. Mivel most a csapatok oldalai egyszerű Drupal könyvlapok, bármilyen információt rájuk írhatunk, így végre helyet kaphat a csapat elérhetősége, története, stb. Következő lépésben hozzuk létre a játékosok egyéni lapjait, és soroljuk be őket a csapat-oldalak alá. Struktúránk most így néz ki:
Ez a megoldás már megfelel az elképzeléseinknek – és egyszerűbb, pár oldalas webhelyeken ennél többre nincs is szükségünk. Mi azonban szeretnénk további listázó oldalakat készíteni, például a játékosok neme (fiú-lány) szerint.
Ha Taxonomy modullal dolgozunk, a feladat egyszerű. Létrehozunk egy Nemek szótárat, abban két kifejezést (Fiúk, Lányok), majd a játékosokat besoroljuk valamelyik kategóriába. Ha szeretnénk a Piros lányokat listázni, csak kombinálnunk kell a kategóriák azonosítóit az oldalra mutató link végén, és a Drupal magától tudja, hogy mely játékos-oldalakat kell felvennie a listára.
A Piros lányok listáját a következő címen találjuk: www.honlapneve.hu/taxonomy/term/1,4.
A Kék fiúkat pedig itt: www.honlapneve.hu/taxonomy/term/2,3.
A megoldás kifogástalanul működne – ha nem vetettük volna el a kategóriák használatát akkor, amikor kiderült, hogy nem tudjuk a csapatok elérhetőségét a csapat-oldal tetejére kiírni. A Book modullal készített Piros csapat és Kék csapat viszont nem kategória, hanem közönséges oldal, ezért ezeket nem tudjuk a Fiúk-Lányok kategóriákkal kombinálni.
Kézenfekvőnek tűnik, hogy a két rendezési módszert kombináljuk, azaz a játékosok oldalait tegyük be kategóriákba (Piros csapat, Kék csapat, Fiúk, Lányok), és egyúttal soroljuk be őket a Piros csapat és Kék csapat c. könyvlapok alá. Ezzel megoldódott a kombinált listázás problémája. Ugyanakkor most egy zavaró jelenséget tapasztalhatunk: ha látogatónk felkeresi a Piros csapat könyvlapját (elérhetőségekkel, csapattörténettel, stb.), majd onnan elnavigál Játékos-1 személyes oldalára, ott találja Játékos-1 neve mellett a Piros csapat kategóriára mutató linket. Ha tehát az oldal elolvasása után a látogató szeretne a Piros csapat többi tagjával is megismerkedni, akkor rá fog kattintani erre a linkre, ez viszont nem a Piros csapat könyvlapra mutat (ahol az előbb járt, és ahová szeretne visszalépni), hanem a Piros csapat nevű kategória listázó oldalára (amely a látogató számára is nyilvánvaló módon nem azonos a korábban megtekintett csapat-oldallal).
A problémát rövid úton megoldhatjuk, ha eltüntetjük a könyvlapokról a kategória-linkeket. Keressük meg a sminkünk könyvtárában a node.tpl.php nevű fájlt, és készítsünk róla ugyanebbe a könyvtárba egy másolatot node-book.tpl.php néven. Ezzel lényegében arra utasítottuk a Drupalt, hogy könyvlapok esetén a megjelenítéshez ne a node.tpl.php fájlt használja, hanem a most létrehozott node-book.tpl.php-t. Ezután nyissuk meg a fájlt egy kódszerkesztő programmal (Windows alatt pl. Notepad++), és töröljük a taxonómiára vonatkozó részt. Garland smink esetén a törlendő kódrészlet a következő:
Ha most felkeressük bármelyik játékos oldalát, nem látjuk a zavaró kategória-linkeket. Ezzel azonban annak lehetősége is megszűnt, hogy látogatóink maguktól felfedezzék a kombinált kategóriák oldalait (Piros lányok, Kék fiúk) – így ezekre külön fel kell hívnunk a figyelmet. Ehhez kapcsoljuk be az alapcsomagban kapott Path modult, amelynek segítségével egyszerűen megjegyezhető útvonal álneveket rendelhetünk oldalainkhoz. A Piros csapat oldalához a szerkesztő űrlapon adjuk meg a piros útvonal álnevet (az oldal ezután a www.honlapneve.hu/piros címen is elérhető lesz), a Kék csapat oldalához pedig a kek-et; majd vegyük fel a két oldalra mutató linket az elsődleges menübe. A játékosok oldalainak szintén adjunk egyedi útvonalneveket, ahol az útvonal első tagja mindig a csapat neve legyen: piros/kisspal, kek/nagypeter.
Ezután készítsünk egy menüt, amelynek elemei a Piros lányok, ill. Piros fiúk oldalára mutatnak; majd a blokk beállítások között határozzuk meg, hogy ez a menü csak a piros és a piros/* útvonalon található oldalakon jelenjen meg. Ugyanezt ismételjük meg a Kék lányok, Kék fiúk esetén. Most tehát ha látogatónk elnavigál bármelyik csapat, vagy játékos oldalára, akkor feltűnik a lapon egy újabb menü, amelyen keresztül eljuthat a Piros lányok, Piros fiúk, ill. Kék lányok, Kék fiúk oldalakra.