Drupal multisite, ahogy én értelmezem

Pál úr képe

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.

  1. 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é.
  2. elkészítettem minden oldalhoz külön-külön a menüket is, és feljegyeztem a számukat
  3. Létrehoztam a sminkeket, és azokat az egyszer telepített Drupal themes könyvtárában helyeztem el.
  4. 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). A settings.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.)
  5. 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.

Hojtsy Gábor képe

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.

0
0