Körülbelül 3 hónappal ezelőtt azt a feladatot kaptam, hogy egy cégcsoport honlapjait készítsem el. Mivel a Drupal-lal korábban igen kellemes tapasztalataim voltak, arra gondoltam, ezt a feladatot is könnyű lesz vele megoldani.
Az igények nem voltak túl nagyok:
- a cégcsoport európai oldalai kinézetének egy-az-egyben történő átvétele
- rugalmas tartalomkezelés lehetősége (könnyen lehessen az oldalak tartalmát módosítani)
- legyen kicsit interaktívabb, mint egy HTML oldal, vagyis lehessen a weboldalról rögtön üzenetet küldeni
- és ami a legfontosabb, a cégcsoport oldalait (összesen 5 különböző oldalt) egy 'adminisztrátor' egy belépéssel tudja kezelni, módosítani
Ami biztosan nem kerül egyelőre szóba, az az oldalankénti felhasználó-azonosítás (belépés).
Elvileg a Drupal ismer multisite telepítést, de ott megosztott táblákkal kellene zsonglőrködni (a drupal.org fórumai alapján ez a funkció elsősorban a különböző oldalak felhasználóinak elkülönítésére került kifejlesztésre). A fórumokon csak egy-egy elveszített megjegyzés utalt arrra, hogy nem kell ennyire bonyolultan megoldani a feladatot, maradt tehát a kísérletezés. Ennek az eredménye olvasható alább.
Mialatt elindult a megrendelő által igényelt domainek lefoglalása, egy, a webszerver által elérhető könyvtárba - egy ideiglenes címről - elkészült a Drupal telepítése, először az 5.0-ás verzióval, majd a rendszer frissítése most éppen az 5.5-ös verzióra.
Mivel a megrendelő nem sieti el a dolgot, egyelőre az 5 site-ból egy anyaga áll rendelkezésre magyarul, így annak a feltöltése mellett telepítésre kerültek a szükséges modulok. Ezek a következők:
- az alaprendszerből
- Locale
- Menü
- Path
- Taxonomy
- és az Upload modulok
- a külső modulok közül
- CCK - természetesen nem egy egyedi oldaltípusra van szükség
- Views és az Insert view
- Image csomag a tartalomfeltöltéshez
- Image Map
- Pathauto - ez nagyon lényeges és nagyon kényelmes lesz, és hozzá a Token modul, mert az kell neki
- TinyMCE
- Webform és Captcha
A multisite kialakításhoz pedig a következőt tettem.
- Egyrészt létrehoztam egy szótárat, amelyben minden site-hoz készült egy kifejezés-fa. Minden tartalmat be kellett sorolni egy-egy kifejezéshez, ezáltal egy-egy site-hoz. A Pathauto 5.x-2.0 modul segítségével minden tartalomtípushoz megadtam, hogy a cím úgy készüljön el, hogy
[termpath-raw]/[title]
. Ennek következtében minden oldal címében ugyan szerepel a site neve még egyszer, de ez sem a megrendelőt, sem a felhasználót nem zavarja, viszont egyértelmű elkülönítést tesz lehetővé. - elkészítettem minden oldalhoz külön-külön a menüket is, és feljegyeztem a számukat
- Létrehoztam a sminkeket, és azokat az egyszer telepített Drupal
themes
könyvtárában helyeztem el. - Majd nekiláttam a valódi multisite-osításnak: a
sites/default/settigns.php
fájlt a multisite szabályainak megfelelően minden egyes domainhez külön-külön könyvtárba másoltam (ez így nem egészen igaz, mert az 5 site-hoz összesen 10 domainnév tartozik, tehát van olyan könyvtár, ami nem igazi könyvtár, hanem szimbolikus link egy másik könyvtárra). Asettings.php
felépítéséről nem sokat lehet tudni (vagy én vagyok ügyetlen, és nem sokat találtam), így a http://drupal.org/node/183059 alapján a következőképpen editáltam a fájlokat: mindegyikben kiszedegettem a #-okat a$conf = array{}
szakasz elől, és megadtam a 'site_name' változó értékét (majd feltöltöttem UTF-8 kódolással a szerverre őket...), a domainnévhez tartozó smink nevét, a 'site_frontpage' változónál annak az oldalnak az általam létrehozott címét, amit kezdőoldalnak meg szeretnék jeleníteni, a 'menu_primary_menu' és a 'menu_secondary_menu' változóknál pedig az adott site-hoz tartozó menü ID-jét. (Mivel én site-onként egy menüben, de több szinten helyeztem el a menüpontokat, ezért nálam a két szám mindenütt ugyanaz.)
Amikor készen voltam, megtaláltam ezt a fórumtémát.
Amint sajnos továbbra sem sikerült felfedeznem, az egy részletes leírás azokról a változókról, amelyeket a settings.php-ban használni lehet.
Remélem, azért valaki majd tudja használni ezt a leírást, nekem legalábbis elég sok szenvedésembe került mindezt összeszedni. És hogy miért lett a cím az, hogy "ahogy én értelmezem"? Szerintem ugyanis pont az lenne az értelme egy ilyen bonyolult portálmotornak, hogy több / sok site-ot egy helyről könnyen lehessen adminisztrálni. Hogy ez mennyire egyszerű, azt a fentiek alapján döntse el mindenki maga.
adatbázis megosztás, változók
A multisite funkció lehetővé teszi, hogy más adatbázist adj meg minden site-nak, vagy részben megoszd a táblákat. Ha a te multisite igényeidnek megfelel, hogy ugyanaz a tartalom minden webhelyen (pl. az egyik domainjéről is elérhetőek azok a tartalmak, amik a másikról is), akkor ugyanazt az adatbázist is használhatod.
A $conf tömbben minden változó használható, ami a variables táblában van. Ezekhez a legjobb "dokumentáció" a Drupal valamely beállítás oldala. Amikor egy beállítás oldalon vagy, és azt gondolod, hogy neked az a beállítás a többi site-on másképp kell, akkor megnézed a forrásban az űrlap mező nevét (ez a változó neve lesz), és azt az értéket adod neki a settings.php-ben amit az adott webhely kíván.