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.
- Piros csapat (node/1)
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
Két alternatív lehetőség
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
Palócz István
https://palocz.hu | https://tanarurkerem.hu
valóban nagyon jó
Valóban nagyon jó cikk, és várom a folytatását! :)
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
Hasznos jól követhető
Hasznos jól követhető cíkk.
Köszönöm!
Itt a szovegben eliras
Itt a szovegben eliras tortent vagy en tevedek?
Szerintem helyessen igy lenne:
www.honlapneve.hu/taxonomy/term/1,4
www.honlapneve.hu/taxonomy/term/2,3
Maskulonben valoban nagyon jo szoveg!
nagyon régi
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. :)