Joomla! mint keretrendszer
Konstantinusz Kft. © 2011
Joomla! mint keretrendszer
1 Tartalomjegyzék 1 2 3
4 5 6
7 8
Tartalomjegyzék .......................................................................................................................2 Bevezetés ................................................................................................................................3 Mely funkciói hasznosak rendszerkészítés esetén? .................................................................4 3.1 Bejelentkezés ....................................................................................................................4 3.2 Adatbázis csatoló ..............................................................................................................5 Joomla vagy saját CMS ............................................................................................................6 4.1 Saját CMS előnyei és hátrányai.........................................................................................6 Telepítés és előkészületek .......................................................................................................8 Template készítés ....................................................................................................................9 6.1 Mi is az a template? ..........................................................................................................9 6.2 Miért kell templatet használni? ..........................................................................................9 6.3 Template szerkezete .......................................................................................................10 Ajánlott komponensek ............................................................................................................11 7.1 Webshop - VirtueMart .....................................................................................................11 Összefoglalás.........................................................................................................................12
2 / 12
Joomla! mint keretrendszer
2 Bevezetés Az esettanulmány célja az egyik legelterjedtebb CMS (Content Management System - Tartalom kezelő rendszer) bemutatása programozói szemmel. Nem felhasználói funkcióit szeretném ismertetni, hiszen abból számtalan leírás található az interneten, sokkal inkább kitérek arra, hogy mire kell odafigyelni a használatánál, és miért ajánlom a használatát, honlap készítéshez, valamint rendszer fejlesztéshez is (természetesen csak akkor, ha PHP + MySQL alapú rendszert akarunk fejleszteni).
Mi is az a CMS? A CMS abban segít minket honlap készítésben, hogy ad egy felületet, ahol módosíthatjuk a honlap menüpontjait, és a honlap tartalmát. Ez által, nem csak FTP-n keresztül programozó tudja az oldalt szerkeszteni, hanem bizonyos mértékig egy egyszerű felhasználó, aki alap számítógépes ismeretekkel rendelkezik.
Miért jó az ügyfélnek, ha ő szerkesztheti a saját honlapját? ●
Mert nem kell fizetnie azért, hogy valaki szerkessze.
●
Nem kell várnia arra amíg a honlap készítő elvégzi a módosítást.
A Joomla! egy PHP és MySQL alapú tartalom kezelő rendszer. Az alap koncepciója az, hogy különböző jogszintű szerzők, küldhessenek be tartalmakat és azokat lehessen megjeleníteni több különféle módon.
Viszont az ilyen irányú felhasználása mellett kivállóan alkalmas honlap készítésre is. Ekkor a honlap üzemeltetője az egyetlen aki tartalmat hozhat létre vagy módosíthat. Segítségével hamar könnyen módosítható oldalt kapunk, kis energia befektetéssel.
A hivatalos oldalon (http://extensions.joomla.org/) az esettanulmány írásának pillanatában 5915 darab modul és komponens áll rendelkezésre, amelyek különösebb szakértelem nélkül telepíthetőek, használhatóak.
A készítés időpontjában a legfrissebb 1.5.22.-as verzió volt a legújabb verzió, ezért ezzel a verzióval kapcsolatban írom le tapasztalataimat.
3 / 12
Joomla! mint keretrendszer
3 Mely funkciói hasznosak rendszerkészítés esetén? Itt olyan funkcióit fogom ismertetni ami általánosan használható nem csak honlapkészítésre. A Joomla az MCV (Model Controller View) koncepciót követi. Ez nagyban megkönnyíti a dolgunkat, ha komponenst vagy modult akarunk fejleszteni hozzá.
Mi a különbség komponens és modul között? A Joomla!-ban van egy kiemelt hely a templateben a component oda csak komponens típusú tartalmak jelenhetnek meg (pl.: statikus tartalom megjelenítő a com_content). Ezzel szemben a modulok csak a “module” típusú helyen jelenhetnek meg. Gyakorlati példa ként úgy fogalmazható meg , hogy a komponens van középen a modulunk pedig körülötte bárhol. Fejlesztési szempontból azonban nincs különbség, hogy komponenst vagy modult írunk.
Mivel van egy kész keret rendszerünk, ezért mindent attól kérdezünk le, és nem magunknak példányosítjuk, ez ha saját keretrendszert fejlesztünk is hasznos. Az alábbi oldalon láthatjuk a keretrendszer teljes dokumentációját: http://api.joomla.org/elementindex_Joomla-Framework.html
Amire ebből mindenképpen szükségünk lesz az a JFactory. Ennek segítségével kérhetünk adatbázis csatlakozási és email küldési lehetőséget. Ha csak ezt ismerjük akkor már magunk is írhatunk egy saját rendszert a keret alá, és nem esünk a kezdő programozók hibáiba.
3.1 Bejelentkezés Felhasználót lehet létrehozni, amivel többet tud, mint bármely programozó által írt első rendszer az az, hogy meg tudja mondani, hogy éppen ki van belépve az oldalon, és ki is lehet léptetni azt akit nem szeretnénk, hogy be legyen jelentkezve. Ez egy rendszer esetében akkor fontos, ha éppen frissítést akarunk telepíteni, és biztosak akarunk lenni benne, hogy használja a rendszert senki.
4 / 12
Joomla! mint keretrendszer
Ha így kezeljük a felhasználók belépését akkor biztosak lehetünk benne, hogy nem követünk el olyan hibát ami súlyos biztonsági kockázatot jelent. Az egyik ilyen rendszeresen visszatérő hiba, hogy láthatóan a lekérdezésben szerepel, hogy user_id=2, és ha ezt a számot átírjuk azonnal egy másik felhasználóval vagyunk bejelentkezve.
Az éppen belépett user lekérdezése: $user=JFactory::getUser();
3.2 Adatbázis csatoló A joomla adatbázis csatolója, megoldja azt a problémát amivel kezdőként rengeteg fölösleges napot lehet eltölteni. Ez a karakter kódolás, PHP + MySQL környezetben általában problémát jelent, hogy az adatbázisnak és magának az oldalnak milyen a karakter kódolása. Mindenki számára azt javaslom, hogy UTF-8 at használjon. Külföldi oldalak szoktak ISO8859-1 -es karakter kódolást alkalmazni, ennek eredményeként, a nevekben az “áéőúóüöí” karakterek rendre hibásan jelennek meg. Ezt, ha a joomla adatbázis csatolóját használjuk megúszhatjuk.
Az adatbási egy példányát a következő paranccsal kérhetjük le: $db=JFactory::getDB();
ezek után a $db->setQuery([SQL kód]); $db->loadAssocList(); Függvényekkel gyakorlatilag bármit meg lehet valósítani, írhatunk saját model-t, ami megvalósítja a rendszerünknek szükséges funkciókat.
5 / 12
Joomla! mint keretrendszer
4 Joomla vagy saját CMS A honlap készítő cégek többsége saját CMS-t, Webshop-ot ír ezek között megtalálhatóak nagyon jók, és rendkívül rossz minőségűek is. Ha valaki elkezdi a honlap készítést akkor javaslom ne úgy kezdje, hogy az első 6-8 hónapban kifejleszt egy CMS-t ami olyan amilyen.
Tapasztalatom szerint frissen végzett programozók első programozási munkája meglehetősen gyengére szokott sikerülni. Hiába tanulják meg az egyetemen a tervezés lépéseit, adatbázisoknál a normalizálás folyamatát, ezt az egyetemről kilépve szinte azonnal elfelejtik használni. Többször hallottam tőlük, hogy “Ó minek, fejben kigondolom, úgyse nagy rendszer” . Ha ilyen hozzáállással állunk neki akkor szinte biztos, hogy bele bukunk az adott fejlesztésbe.
Első honlaphoz vagy webes rendszerhez nem javaslom, hogy teljesen saját rendszerbe kezdjen. Ennek a legfontosabb oka az, hogy a tervezés első lépését, követelmények meghatározása, nem fogjuk tudni megcsinálni, hiszen nincs tapasztalatunk, hogy miket kell tudnia egy ilyen rendszernek.
Itt nem csak arra kell gondolni, hogy menüpont ha rákattint valaki akkor középen megjelenik a tartalom. Hanem bejelentkezés, regisztrációs folyamat, különböző aktív tartalmak. Hányan vannak online. Ezek némelyikéhez nagy szakértelemre van szükség, hiszen minden látogatás külön szálon (process) fut és az sem biztos, hogy egy időben futnak.
4.1 Saját CMS előnyei és hátrányai Az alábbiakban összefoglalom az egyéni CMS előnyeit és hátrányait egy meglévő CMS-hez képest.
Egyéni CMS előnyei:
●
Egyéni, senki sem ismeri a hibáit, ha van ilyen: Találkoztam egy olyan honlapkészítő céggel akinek a saját CMS-e a bárki által élérhető “/adatok” könyvtárban txt-ben tárolta a felhasználói nevet, és a jelszó MD5 kivonatát. Ez ha nem elég hosszú a jelszó akkor 3-4 6 / 12
Joomla! mint keretrendszer
perc alatt törhető. Ennek ellenére az oldal működött hiszen kis látogatottságú oldal, és senki sem próbálkozott, hogy milyen könyvtárak lehetnek. ●
Minden sorát ismerjük a kódjának: Ez csak eleinte igaz. Ha nincs megfelelően ellátva commentel, akkor ha 2 hónap múlva biztos, hogy újra meg kell ismerkednünk vele.
●
Pontosan azt tudja amit kell semmi többet: Ez egyfelől előny, hiszen gyorsan fut és nem futtat olyan kódokat amiknek nem vesszük hasznát. Másik szemszögből viszont, ha új funkció kell bele akkor biztosan nekünk kell megírni azt.
Joomla! előnyei: ●
Sok funkciója van amire ha nem is első lépésben, de később szükség lehet rá.
●
Több millióan tesztelik világszerte.
●
Ha bármi problémánk van találhatunk megoldást bármelyik Joomla fórumon.
●
A közösség fejleszti adja ki az újabb frissítéseket amiket ingyen elérhetünk.
●
Rengeteg modul van hozzá amit szintén nem kell kifejlesztenünk.
7 / 12
Joomla! mint keretrendszer
5 Telepítés és előkészületek
Telepítéshez elegendő egy megfelelő PHP és MySQL-t támogató tárhelyet bérelnünk. A feltöltés után megnyitjuk a tárhelyünk címét, és installációs felületen keresztül beállítjuk a Joomla-t. Célszerű megkérdezni a tárhelyszolgáltatót előre, hogy támogatja-e Joomla telepítését.
8 / 12
Joomla! mint keretrendszer
6 Template készítés
Honlap készítésnél, ez az ami látszik az egész munkából a többi csak “körítés”. A template a template könyvtárba kerül kötelezően tartozik hozzá, egy index.php és egy templateDetails.xml file. Első template-ünknél nyugodtan a beépített templatek valamelyikéből ezeket átmásolhatjuk és ebből indulhatunk ki.
Mielőtt neki állunk célszerű megismerkedni a joomla pár alapfogalmával. Léteznek modulok, ezeket általában fejléc lábléc bal vagy jobb oldali sávjában szerepel egy weboldalban. Van egy kiemelt modul, a komponens (component). A tartalmak csak ebbe a pozícióban jelennek meg. Ennek szokás egy oldalon a legnagyobb teret hagyni.
6.1 Mi is az a template? Egy olyan HTML szerkezet, amely minden oldalon megjelenik ezáltal kialakítva a honlap szerkezetét, és ezen belül van lehetőségünk különböző tartalmak elhelyezésére. Úgy kell felfogni az egészet mint egy szöveg helyettesítés. Egy adott helyre a felhasználó kattintásaitól függően mindig más szöveget helyettesít be.
6.2 Miért kell templatet használni? Statikus oldalaknál (csak HTML, semmi működő kód), találkoztam olyan megoldással, hogy 5060 HTML oldal, benne volt mindegyikben a teljes szerkezet. Nem is volt gond, egészen addig amíg az ügyfél nem kérte meg, hogy alakítsák át az oldal szerkezetét, a menü felülről kerüljön bal oldalra. Ezt 50-60 oldalon átalakítani, és utána minden oldalon letesztelni, rendkívül időigényes feladat.
9 / 12
Joomla! mint keretrendszer
Template felfogás esetén ezt egy helyen átalakítjuk, és kész. Azért javaslom mindenkinek, hogy ebben a felfogásban készítsen honlapot, mert a későbbi módosítás nem annyira időigényes feladat. Saját maga dolgát könnyíti meg ezzel.
Ha nem használunk template-et az olyan mintha a programozásban nem használnánk ciklusokat, hanem ha egy kódnak 60-szor kell lefutnia, akkor hatvanszor egymás után beleírnánk a program kódba.
6.3 Template szerkezete Joomlában a template bizonyos kulcsszavakat tartalmaz, ezek a kulcsszavak mondják meg, hogy melyik modult, vagy komponenst kell beilleszteni az adott helyre. pl.: <jdoc:include type="modules" name="fejlec" /> Ez azt mondja meg a joomlának, hogy az adott helyre illessze be a fejlec névre hallgató modul pozíciót.
Az alábbi kód azt mondja meg, hogy a kiemelt szerepet betöltő komponenst hova illessze be: <jdoc:include type="component" />
A rendszer üzenetek megjelenítéséhez szükséges kód: <jdoc:include type="message" />
Utóbbi kettő a legfontosabb, ha ezek megvannak akkor már működhet az oldalunk.
A letölthető valamint beépített templatek nagyon összetettek mivel általánosra vannak kitalálva, pl.: ha van beállítva jobb oldali modul akkor és csak akkor jelenítse meg a jobb oldali sávot. Saját template esetén e miatt nem kell aggódnunk, a legtöbb oldalon van egy fix szerkezet és az nem változik oldalanként. pl.: a menüt nem helyezzük minden aloldalon máshova, ez nem is célszerű.
10 / 12
Joomla! mint keretrendszer
7 Ajánlott komponensek Mit is kell komponens alatt értenünk? Olyan komplex egységek melyek az oldal tartalmi részében jelennek meg. Ez bármi lehet, webshop, fórum, társkereső, ingatlan nyilvántartó, galéria, gyakorlatilag bármit amit egy honlaphoz egy ügyfél kérhet. Ezek közül csak a webshopra fogok kitérni részletesebben, hiszen egy webshop összetett rendszer, és általában nagyon hasonló tudásúnak kell lennie.
7.1 Webshop - VirtueMart Ez a komponens önálló rendszeré alakult mára és számtalan modul van ami VirtueMart-hoz tartozik. Van saját belépés modulja és több féle kategória megjelenítő modulja is.
Általánosságban a megrendelő nem fogja tudni pontosan megmondani, nekünk, hogy mit szeretne. Ha ilyen körülmények között webshop fejlesztésbe kezdünk akkor az rendkívül időigényes lesz, tekintettel arra, hogy a megrendelő által megadott specifikáció annyiban merül, ki, hogy “szeretnék egy webshopot”. Ez alapján olyan webshopot írni amit a megrendelő később átvesz közel lehetetlen. Célszerű a megrendelőnek megmutatni egy működő webshopot, hogy az megfelelő lesz-e.
Kezdő honlap készítőknek javaslom, hogy ismerjék meg, próbálják ki, mert első nekifutásra jó webshopot írni nem mindenki tud. Mivel a webshopban pénzt kezel az ember főleg bankkártyás fizetés, banki átutalás esetén, ezért jó, hogyha valaki élete első munkájánál nem webshopkészítéshez kezd hozzá. Az interneten több olyan webshop-pal találkoztam, amelyen egy termék árát a megrendelés feladója módosítani tudja, és gyakorlatilag annyiért rendeli meg a terméket amennyiért jónak látja. Ebbe a hibába nem szerencsés belefutni.
11 / 12
Joomla! mint keretrendszer
8 Összefoglalás Összességében a Joomlát nem keretrendszernek szánták, azonban kiválóan alkalmas arra MySQL és PHP környezetben. Webes rendszer készítés alatt itt nem csak összetett vállalat irányítási rendszert értek, hanem webshopot, fórumot, és egyéb honlapon megjeleníthető rendszereket.
PHP és MySQL alapokon sok keret rendszer létezik, ami megkönnyíti a fejlesztést. Ha nem is hassználunk ténylegesen keretrendszert megismerkedni célszerű minél többel. A keretrendszerek nagy előnye, hogy általában nem engedik a programozót szabadon garázdálkodni.
Sajnos a PHP nyelv nem rendelkezik elég szigorú előírásokkal, ahhoz, hogy belekényszerítse a programozót a MCV felfogás követésébe. Kezdőként találkoztam olyan megoldással, hogy a fejlesztőnek volt egy olyan problémája, ahol tipikusan objektumokat kellet volna használnia, e helyett a nyelv szabadsága miatt rossz megoldást választott. PHPban az include() nevű függvény betölt egy adott file-t és ott helyben le is futtatja. A programozó, ezért úgy oldotta meg, hogy ne objektumokat vagy függvényeket kelljen használnia, hogy értéket adott néhány változónak és include -al betöltött egy file-t (amit szintén futás időben határozott meg, hogy melyiket), ami az előtte definiált változók alapján elvégzett valamilyen műveletet.
Ezen megoldás helyett sokkal szerencsésebb lett volna, ha a műveleteket, objektumokba, és azok metódusaiba csoportosítja. Ha egy keretrendszer szabályai szerint programozunk ilyen és ehhez hasonló hajmeresztő megoldásokat, nem fogunk kitalálni, hiszen a keretrendszer valamilyen szinten kényszerít arra, hogy jó megoldást válasszunk.
12 / 12