Tartalomszervezési megoldások I. - Taxonomy és Book modul

Illyés Edith képe

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.

A feladat

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.

Első megoldás: Taxonomy modul

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:

  • Piros csapat (taxonomy/term/1)
    • Játékos-1 (node/1)
    • Játékos-2 (node/2)
    • Játékos-3 (node/3)
    • stb.
  • Kék csapat (taxonomy/term/2)
    • Játékos-4 (node/4)
    • Játékos-5 (node/5)
    • stb.

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.

Második megoldás: Book modul

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:

  • Csapatok
    • Piros csapat (node/1)
      • Játékos-1 (node/2)
      • Játékos-2 (node/3)
      • Játékos-3 (node/4)
      • stb.
    • Kék csapat (node/5)
      • Játékos-4 (node/6)
      • Játékos-5 (node/7)
      • stb.

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.

  • Piros csapat
    • Piros lányok
    • Piros fiúk
  • Kék csapat
    • Kék lányok
    • Kék fiúk

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.

  • Csapatok szótár
    • Piros csapat kategória (taxonomy/term/1)
    • Kék csapat kategória (taxonomy/term/2)
  • Nemek szótár
    • Fiúk kategória (taxonomy/term/3)
    • Lányok kategória (taxonomy/term/4)

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.

Harmadik megoldás: mindent bele!

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.

Hozzászólások

pp képe

1.
Adva vagyon a két kategória piros/kék
Létrehozunk két tartalom típust: játékos és csapat néven.
Ezek után - mint a cikkben - létrehozzuk a kategóriákat és kategórizáljuk a tartalmainkat.
Beállítjuk, hogy a csapat mindig az oldalon elején kiemelten szerepeljen.
Ezek után már szerepel a csapat leírása is az adott listázó oldalon.

Én a sorrendezésben látom fő különbséget (ebből a szempontból) a két lehetőség(tax, book) között. A taxonomy-nál a felvitel sorrendjében fordítva jelennek meg a tagok (ráadásul az egy helyen, globálisan beállítható 10 tartalom per oldal limittel). A book modulnál ezt a sorrendet beállíthatom, de csak a címek jelenhetnek meg az egyéb adatok nem.

2. Szerintem ez a feladat(tudom, hogy csak példa!!!) nem igényel sem taxonomy-t sem book modult. Ugyanis az adatok lassan változnak, hisz a csapatok és játékosok oldalai nem frissülnek minden nap, jó ha egy hónap alatt ki lehet mindenkiből húzni a megfelelő szöveget. ;)
Létrehoznék egy menüt Csapatok néven(ez a breadcrumb miatt kell). Létrehoznék a két csapat és a játékosok számára egy-egy oldalt a megfelelő menübeállításokkal. Bekapcsolnám a tinymce-t és szépen behuzaloznám a kapcsolatokat. Megfelelő menüpontokba és almenükbe elhelyezném az oldalakat, a path auto-val meg normális útvonal álneveket rendelnék hozzájuk. Úgy néznének ki az oldalak ahogy nekem tetszik. Még jogot is lehetne adni a két csapatkapitánynak az adatok módosítására(ő lesz a node létrehozója;))

Nyílván egy rendszeres csapatbajnokság oldalát már ezzel a módszerrel nem lehetne megcsinálni, vagyis meg lehetne, de csinálja az akinek nincs jobb dolga. ;)

A lényeg az, hogy a cikk nagyon jó és igazi hiánypótló itt a druapl.hu-n.

pp

nevergone képe

Valóban nagyon jó cikk, és várom a folytatását! :)

docker képe

Hasznos jól követhető cíkk.
Köszönöm!

vajdasági képe

Itt a szovegben eliras tortent vagy en tevedek?

A Piros lányok listáját a következő címen találjuk: www.honlapneve.hu/taxonomy/term/1,3.

A Kék fiúkat pedig itt: www.honlapneve.hu/taxonomy/term/2,4.

Szerintem helyessen igy lenne:

www.honlapneve.hu/taxonomy/term/1,4

www.honlapneve.hu/taxonomy/term/2,3

Maskulonben valoban nagyon jo szoveg!

Illyés Edith képe

De igen, javítottam, köszi.

Egyébként teljesen lejárt már a szavatossága ennek a leírásnak, jó lenne egy újabb, D7-re aktualizált cikk tartalomtípusok és taxonómia témában. Ha valakinek van kedve hozzá, nyugodtan lehet beküldeni bevezető jellegű cikkeket is, nincs olyan szabály a d.hu-n, hogy csak kóderek írhatnak kódereknek. :)