tarnai lászló: webes tartalomkezelő rendszerek felépítése, fejlesztése (drupal, joomla!),...

103
SZAKDOLGOZAT Tarnai László NYÍREGYHÁZA, 2010.

Upload: tarnailaszlo87

Post on 28-Jul-2015

1.727 views

Category:

Documents


7 download

DESCRIPTION

SZAKDOLGOZATWEBES TARTALOMKEZELŐ RENDSZEREK FELÉPÍTÉSE, FEJLESZTÉSE (DRUPAL, JOOMLA!), SAJÁT CMS KÉSZÍTÉSEKészítette: Tarnai László programtervező informatikus alapszakos (BSc) hallgatóNyíregyháza, 2011.

TRANSCRIPT

Page 1: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

SZAKDOLGOZAT

Tarnai László

NYÍREGYHÁZA, 2010.

Page 2: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

NYÍREGYHÁZI FŐISKOLA

TERMÉSZETTUDOMÁNYI ÉS INFORMATIKAI KAR MATEMATIKA ÉS INFORMATIKA INTÉZET

WEBES TARTALOMKEZEL Ő RENDSZEREK FELÉPÍTÉSE, FEJLESZTÉSE (DRUPAL, JOOMLA!),

SAJÁT CMS KÉSZÍTÉSE

Konzulens: Készítette: Vegera József Tarnai László mérnöktanár programtervező informatikus alapszakos (BSc) hallgató

Nyíregyháza, 2011.

Page 3: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

1

Tartalomjegyzék

Bevezetés ........................................................................................................ 5.

Főbb honlap típusok ..................................................................................... 7.

Céges weboldalak .......................................................................................................... 7.

Közösségi portálok ......................................................................................................... 8.

Blogoldalak .................................................................................................................... 9.

Alapfogalmak ismertetése ......................................................................... 11.

HTML ........................................................................................................................... 11.

CSS ............................................................................................................................... 11.

PHP ............................................................................................................................... 12.

MySQL .......................................................................................................................... 12.

CMS .............................................................................................................................. 12.

CMS rendszerek jellemzői ......................................................................... 13.

Mikor érdemes CMS rendszert alkalmazni? ................................................................ 16.

Alkalmazási területek ................................................................................................... 17.

Előnyök ........................................................................................................................ 18.

Melyik CMS-t válasszuk? ............................................................................................. 18.

Rendszerkövetelmények ............................................................................................... 19.

Tartalomkezelő rendszerek felépítése ...................................................... 20.

Motor ........................................................................................................................... 20.

Kiegészítők ................................................................................................................... 20.

MVC ............................................................................................................................. 21.

Az adminisztrációs felület ismertetése ..................................................... 21.

Tartalmak közzététele ................................................................................ 22.

Felhasználó kezelés a CMS rendszerekben ............................................. 22.

Bővítmények a tartalomkezelő rendszerekben ........................................ 24.

Modulok ....................................................................................................................... 24.

Sablonok ....................................................................................................................... 24.

Drupal .......................................................................................................... 26.

A Drupal legfontosabb jellemzői ................................................................................. 28.

A Drupal architektúrája ............................................................................ 28.

Page 4: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

2

Drupal MVC ................................................................................................................. 29.

Telepítés ....................................................................................................... 30.

A telepítés lépései ......................................................................................................... 32.

A Drupal motorja ....................................................................................... 32.

Alapszolgáltatások ....................................................................................................... 33.

Alapmodulok ................................................................................................................ 33.

Szükséges elemek ......................................................................................................... 33.

Nem szükséges elemek ................................................................................................. 34.

Felhasználói felület ..................................................................................... 34.

Menük ........................................................................................................................... 34.

Navigációs menü .......................................................................................................... 34.

Blokkok ......................................................................................................................... 35.

Kezdőlap ...................................................................................................................... 35.

Modulok kezelése ........................................................................................ 36.

Telepítés és használat .................................................................................................. 36.

Adminisztráció ............................................................................................ 37.

Tartalom beküldése .................................................................................... 39.

Felhasználó kezelés ..................................................................................... 40.

Felhasználók létrehozása ............................................................................................. 41.

Jogosultságok ............................................................................................................... 41.

Sminkek ....................................................................................................... 42.

Telepítés és alkalmazás ................................................................................................ 42.

Eltávolítás .................................................................................................................... 43.

Drupal 7 ....................................................................................................... 44.

Jo omla! ........................................................................................................ 46.

Alapvető tulajdonságok ................................................................................................ 47.

A Joomla! architektúrája .......................................................................... 48.

Joomla! MVC ............................................................................................................... 48.

Joomla 1.5 .................................................................................................... 49.

Installálás .................................................................................................... 49.

Page 5: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

3

A telepítés lépései ......................................................................................................... 50.

Telepítés utáni teendők ................................................................................................ 52.

Bővítmények, szolgáltatások és kiegészítők ............................................. 54.

Komponensek ............................................................................................................... 55.

Modulok ....................................................................................................................... 56.

Beépülő modulok .......................................................................................................... 57.

Sablonok ....................................................................................................................... 57.

Nyelvek ......................................................................................................................... 57.

Bővítmények telepítése és eltávolítása ......................................................................... 57.

Adminisztrációs felület .............................................................................. 59.

Vezérlőpult ................................................................................................................... 59.

A Vezérlőpult funkciói .................................................................................................. 61.

Globális beállítások ..................................................................................................... 64.

Új tartalom létrehozása ............................................................................. 67.

Felhasználói felület ..................................................................................... 69.

Szerkezeti felépítés ....................................................................................................... 70.

Felhasználó kezelés ..................................................................................... 72.

Joomla 1.6 .................................................................................................... 73.

Saját CMS készítése ................................................................................... 75.

Tervezés ....................................................................................................... 75.

Követelmények ............................................................................................................. 75.

Látványterv .................................................................................................................. 76.

Megvalósítás ................................................................................................ 77.

Mappaszerkezet ............................................................................................................ 77.

index.php ...................................................................................................................... 77.

config.php .................................................................................................................... 78.

class.php ...................................................................................................................... 79.

register.php .................................................................................................................. 84.

login.php ...................................................................................................................... 88.

logout.php .................................................................................................................... 90.

install.php .................................................................................................................... 90.

Page 6: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

4

step1.php ...................................................................................................................... 90.

step2.php ...................................................................................................................... 91.

step3.php ...................................................................................................................... 94.

about.php ..................................................................................................................... 95.

get-content.php ............................................................................................................ 95.

add-content.php ........................................................................................................... 95.

manage-content.php ..................................................................................................... 96.

update-content.php ...................................................................................................... 97.

lastmember.php ............................................................................................................ 97.

links.php ....................................................................................................................... 97.

registration.php ............................................................................................................ 98.

search.php .................................................................................................................... 98.

Összegzés ..................................................................................................... 99.

Felhasznált irodalom ................................................................................ 100.

Page 7: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

5

Bevezetés

Manapság az internet egyre nagyobb szerepet kap az élet számos területén, egyre szélesebb

körben terjed el, ugyanakkor igen jelentős szerepet játszik a kommunikáció és a marketing

területén is. Rengeteg helyen találkozunk web és e-mail címekkel – szórólapokon,

plakátokon, rádióban, televízióban – az internet jelenlétét ma már nem zárhatjuk ki a

mindennapjainkból. Akár számítógép nélkül is csatlakozhatunk a webre: az asztali PC-ken

és notebookokon túl egyre több eszközbe építenek WIFI adaptert (mobiltelefonok,

játékkonzolok, stb.).

Egyetlen cég sem hagyhatja figyelmen kívül a világhálóban rejlő lehetőségeket, hiszen az

egyik legfontosabb információforrássá vált. Azonban már nem csak a különböző vállalatok

birtokolják, ugyanis mindenki számára elérhetővé vált, bárki rendelkezhet

internetkapcsolattal otthonában.

A programozás világában számomra mindig is a webprogramozás, a weboldalak

létrehozása, üzemeltetése, és fejlesztése mutatkozott a legérdekesebb feladatnak; diplomám

megszerzését követően is e területen szeretnék elhelyezkedni. Már régóta foglalkozom a

HTML nyelvvel, melyet CSS ismeretek elsajátításával is bővítettem. Később, főiskolai

tanulmányaim során, az "Internet eszközök és szolgáltatások" című tantárgy keretein belül

megismerkedtem a php programozási nyelvvel is. Ezt követően az "Informatika és

ügyvitelszervezés" című szabadon választható tantárgyon keresztül találkoztam a

tartalomkezelő rendszerekkel, a Drupal és Joomla! CMS-ekkel, melyek felkeltették az

érdeklődésemet, így iskolán kívül is foglalkozni kezdtem ezek megismerésével,

használatával. Egy ideje – főiskolai teendőim mellett – egy webfejlesztő cégnél dolgozom,

ahol többféle tartalomkezelő rendszert is megismertem és használok; elsősorban a Joomla!

és a Magento CMS-eket.

A Matematika és Informatika Intézet által javasolt szakdolgozat címek között szerepelt

egy, a webes tartalomkezelő rendszerek felépítésére és fejlesztésére irányuló szakdolgozati

téma; úgy gondoltam, ezen keresztül szélesíthetem eddigi tudásomat a CMS-ekkel

kapcsolatban. Mindazonáltal úgy láttam, ez jó lehetőség arra, hogy HTML, CSS, php és

SQL tudásomat tovább bővítsem, megismerkedhessek a CMS rendszerek lehetőségeivel,

és még inkább elsajátítsam azok használatát, mely előnyt jelenthet számomra a

későbbiekben.

Page 8: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

6

Régebben az internetet statikus HTML oldalak alkották; létrehozásuk egyszerű volt,

azonban frissítésük, karbantartásuk bonyolult és időigényes folyamatot jelentett. Az

internet térhódítása, és az egyre növekvő igények megkövetelték a dinamikus oldalak

megjelenését, azonban a folytonos változást egy erre alkalmas nyelv (például a php)

önmagában nem tudta ellátni – szükség volt az adatok tárolására egy adatbázisszerveren.

Ezen oldalak könnyű létrehozásának és kezelésének érdekében jelentek meg a webes

tartalomkezelő rendszerek.

Ma már sokféle tartalomkezelő rendszer létezik. Célom, hogy átfogó képet kapjak, illetve

adjak ezek felépítéséről, használatáról, alkalmazásáról. Korábbi ismereteimre alapozva, a

szakdolgozat címében megjelölt két tartalomkezelő rendszer – a Drupal és a Joomla! –

vizsgálatával és használatával foglalkoztam behatóbban, így a lentiekben ezeket szeretném

ismertetni.

Mindkettő ingyenesen letölthető, nyílt forráskódú, php nyelven íródott rendszer.

Mindegyik rendelkezik magyar nyelvi csomaggal, kézikönyvvel, használati útmutatóval –

így hazánkban is sokan használják őket –, illetve mindegyiknek van saját, szintén magyar

nyelvű honlapja is, melyek fórumain bárki segítséget kérhet.

Szakdolgozatom gyakorlati részeként egy saját fejlesztésű CMS tesz szolgálatot; ennek

részletes bemutatása is sorra kerül a későbbi fejezetek egyikében.

Remélem, hogy e szakdolgozat – azon túl, hogy segít saját ismereteim bővítésében – egy

mások számára is hasznos dokumentáció lesz, mely jól használható segítség lehet a webes

tartalomkezelő rendszerekkel ismerkedőknek; mindazoknak, akik érdeklődnek a téma

iránt, de még nem jártasak benne. Az iromány jó alapul szolgálhat azok számára is, akik

saját webes tartalomkezelő rendszer fejlesztésébe szeretnének kezdeni.

Page 9: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

7

Az internet főbb honlap típusai

A CMS-ek feladata a webes tartalomkezelés megvalósítása. Ma már rengeteg vállalat

használ ilyen rendszert honlapja alapjául. Gombamód szaporodnak a különféle közösségi

oldalak, internetes portálok, melyek szintén épülhetnek CMS-re. Mindennek tetejében

bárkinek lehetősége van a manapság oly divatossá vált blogírásból is kivenni a részét egy

saját, egyéni blogoldallal, melyet építhet egy tartalomkezelő rendszerre.

Mivel web alapú rendszerekről van szó, érdemes áttekinteni a fentebb említett főbb honlap

típusokat, mielőtt megismerkednénk bármilyen tartalomkezelővel.

1. ábra: A New York State Senate weboldala (Drupal)

Céges weboldalak

Az 1990-es évek első felében néhány vállalat úgy döntött, interneten is hirdetik magukat,

így megkezdték a világháló meghódítását. Többnyire céges adatok webre vitelét hajtották

végre; eleinte csak a cég adatait (cég neve, elérhetősége, tulajdonos neve, vállalkozás

bemutatása, stb.) helyezték el ezeken az oldalakon, később a cég által nyújtott

szolgáltatások, termékek bemutatása is a weboldal feladata lett. Sok oldal még ma is ezt a

szemléletet követi. Elég egyszerű felépítésű oldalakról van szó – a kis- és

középvállalkozások jelentős része igen keveset használ ki a web lehetőségeiből.

Page 10: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

8

Közösségi portálok

Ezen oldaltípus ismertetése előtt tisztázandó a portál definíciója. Legegyszerűbb

megfogalmazás szerint a portál egy olyan webes felület, amely egy megcélzott felhasználói

kör számára személyre szabott hozzáférést biztosít bizonyos információkhoz,

alkalmazásokhoz, és egyéb tartalmakhoz.

Legismertebb jelentése: kapu, porta. Eredetileg azt a feladatot teljesítették, hogyha valaki

leült egy internetkapcsolattal rendelkező számítógép elé, de még nem rendelkezett kellő

ismeretekkel annak használatáról, a portál útmutatást adott a világhálón történő

tájékozódáshoz. Más megközelítésben: a portál olyan webhely, mely tartalmazza a

mindennapi munkához, vagy éppen a felhasználó érdeklődéséhez, szórakozásához

szükséges dolgokat. Egy portál akkor jó, ha leköt, szórakoztat, eligazít és segítséget nyújt a

weben történő böngészésben.

A közösségi oldalak manapság a világháló egyik legnépszerűbb részei. Ennél az típusnál

kiemelendő a Web 2.0, azaz a "webkettő" kifejezést, mely olyan internetes szolgáltatások

gyűjtőneve, amelyek elsősorban a közösségre épülnek, azaz a felhasználók közösen

készítik a tartalmat, vagy megosztják saját, illetve egymás információit. Ezen ismerősök

közötti kapcsolatokra épülő rendszerekben lehetőségünk van keresni, üzeneteket váltani

vagy egyéb adatokat cserélni. A szerver gazdája csak a keretrendszert biztosítja, az oldal

tartalmát a felhasználók hozzák létre, töltik fel, osztják meg, vagy kommentálják. Rengeteg

lehetőség adódik egy ilyen oldalhoz történő csatlakozást követően: saját adatlapot (profilt)

készíthetünk, tagjai lehetünk kisebb közösségeknek (kluboknak), blogot írhatunk,

képalbumokat készíthetünk és apróhirdetéseket adhatunk fel.

A tartalom létrehozása általában AJaX technológiával történik, de egyre elterjedtebbek a

Java vagy Flash alapú felhasználói felületek. Léteznek különféle közösségi portálok,

melyek a személyes, magánéleti kapcsolatokat hivatottak összegyűjteni – napjainkban igen

divatossá vált szájtok tartoznak ide, mint például a Facebook, az iWiW, vagy a MyVIP.

Léteznek olyanok is, melyek valamilyen szakmai, vagy egyéb téma alapján állnak össze –

például a prog.hu programozói portál.

A portáloknak két főbb fajtája létezik:

� vertikális portál

Szigorúan egy adott témával, vagy emberek egy csoportjával foglalkozik. Az adott

témával jóval behatóbban foglalkozik más oldalakhoz képest, ebből adódóan

Page 11: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

9

általában szűkebb közönséghez szólnak. A vertikális portálokat az emberek csak

alkalmi jelleggel, akkor keresik fel, ha az adott témával kapcsolatos információkra

van szükségük.

� horizontális portál

Témák sokaságával foglalkozó "populáris" portál, amelyet az emberek általában

napi rendszerességgel látogatnak. A vertikális portáloknál jóval kevesebb, és

általában jóval kevésbé megbízható információkat kínálnak.

Blogoldalak

A blog szó a "weblog" kifejezésből – mely az angol "web" és a "log" (napló) szavak

összetételéből áll – rövidüléssel keletkezett, és ragadt meg a hétköznapi nyelvben

világszerte. Kezdetben magamutogató fiatalok hoztak létre ilyen oldalakat, céljuk az

önkifejezés volt. Így alakultak ki az úgynevezett énblogok, melyek bárki számára

olvasható személyes naplók: az írásokból megismerhetjük a szerző érzelmi világát,

érdeklődési körét, vagy azt, hogy mik történtek a vele adott napon.

2. ábra: Joomla! alapú blogoldal

Mára a lista kibővült, az énblogok mellett megjelentek újabb webnapló típusok. Létrejöttek

tematikus blogok, melyek egy adott témára koncentrálnak; hírblogok, melyek

Page 12: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

10

hírkivonatokat tartalmaznak egy adott témakörben; leírásblogok, melyek tippeket,

leírásokat adnak az olvasóknak valamilyen művelethez, és így tovább.

Az egyik blogok versenyeztetésével foglalkozó hazai oldal, a Goldenblog az alábbi főbb

kategóriákat különbözteti meg:

� Mainstream: Nagy olvasottságú portálok, kiadványok, szervezetek által bevezetett,

támogatott blogok.

� Gasztro: Gasztronómiai témájú webnaplók.

� Kulturális: Kultúrával foglalkozó blogok, beleértve a művészetekről író

(képzőművészet, irodalom, színház, zene, stb.), és azt művelő oldalakat is

(versblog, irodalmi igényességgel írt naplók, stb.).

� IT: Informatikával foglalkozó blogok.

� Szórakozás: Ezen naplók témái lehetnek különféle programok, TV, szabadidő,

sport, mozi, játék, humor.

� Tanácsadó: Egy adott téma szakértője rendszeres tájékoztatást nyújt olvasóinak,

tippeket, tanácsokat ad látogatóinak, képbe helyezi és orientálja őket.

� Hír: Egy adott téma eseményeinek rendszeres követése (közéleti, gazdasági és

egyéb tematikus híroldalak).

� Fotó: Rendszeresen frissülő, fényképekből álló fotónaplók.

� Helyi érték: Települési, regionális, utazási és "kiküldetési" blogok.

� Komplex: Olyan webnaplók, ahol a szerző személyes bejegyzéseit, tematikus

írásait, fotóit, közéleti észrevételeit egy felületen publikálja. A középpontban a

sorokat jegyző személy áll, ő értékel, elemez többféle témában.

A blogok rövidebb-hosszabb szöveges irományokból, úgynevezett bejegyzésekből, vagy –

az angol "post" szóból eredően – posztokból állnak. Ezek leggyakrabban fordított időrendi

sorrendben találhatók az oldalon – a legfrissebb bejegyzés kerül az oldal tetejére. Minden

bejegyzés saját, állandó, egyedi linket kap, ez az úgynevezett permalink.

A blogok egyik fontos része a hírcsatorna (feed), mely lehetővé teszi kedvenc blogjaink

összesített, egy helyen történő olvasását, továbbá értesít minket a webnapló frissüléséről, a

frissen publikált posztokról. A feedek legelterjedtebb formái az RSS 2.0 és az ATOM 1.0,

mindkettő XML alapú dokumentum.

Page 13: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

11

Alapfogalmak ismertetése

Mivel a szakdolgozat tárgya a webfejlesztéssel kapcsolatos, illetve a CMS rendszerek web

alapúak, így érdemes tisztában lenni néhány ehhez kapcsolódó alapfogalommal, mielőtt

foglalkoznánk bármilyen tartalomkezelővel.

A webes tartalomkezelő rendszerek php nyelven íródnak. Mivel a hangsúly a tartalmon

van, és sok adatot tárolunk, ezért azokat adatbázisba rendezzük – épp ezért a

tartalomkezelők MySQL-re épülnek. Lentebb megismerkedünk ezen fogalmakkal is.

HTML

A HTML (HyperText Markup Language) a webes dokumentumok leírására szolgáló

jelölőnyelv, mely mára internetes szabvánnyá nőtte ki magát. Olyan speciális jelölőket

(tag) alkalmaz, melyek körülveszik a dokumentum adott részeit, és meghatározzák, hogy a

kliens eszköz hogyan értelmezze azokat.

Később megjelent az XHTML (eXtensible HyperText Markup Language) is, mely a

HTML kiterjesztett változata XML-ben (eXtensible Markup Language); jelentős eltérés

nincs a két nyelv között, csak szigorúbb formai követelményeket határoztak meg.

A HTML/XHTML statikus weboldalak írására alkalmas, azaz időben állandó viselkedésű

és kinézetű lapok készíthetők vele.

CSS

A CSS (Cascading Style Sheets) egy stílusleíró nyelv, melynek segítségével olyan

stíluslapok készíthetők HTML/XHTML típusú strukturált dokumentumokhoz, amik

formázzák a weblap kinézetét. Teljes körű stílust lehet megadni, befolyásolva az

elrendezést, a színt, a betűtípusokat.

Tervezése során a legfőbb szempontot az jelentette, hogy elkülönítsék a dokumentum

struktúráját (melyet a HTML ír le) a kinézettől (melyet a CSS határoz meg), ezzel növelve

a weblapok rugalmasságát, használhatóságát, illetve csökkentve a HTML dokumentumok

komplexitását.

(Megjegyzés: A CSS-nek a tartalomkezelő rendszerek szempontjából az egyedi kinézeteknél

– sminkek, témák – van igen jelentős szerepe.)

Page 14: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

12

PHP

A php (Hypertext PreProcessor) az egyik legelterjedtebb

webes programozási nyelv. Nyílt forráskódú, HTML-be

ágyazott szerveroldali szkriptnyelv, legfőbb felhasználási

területe a dinamikus weboldalak készítése.

A php oldalak elkészítésénél a HTML-t gyakorlatilag csak mint formázást használják,

ugyanis ezek a lapok php-re épülnek. Amikor egy php nyelven megírt oldalt akarunk

elérni, a kiszolgáló először feldolgozza a php utasításokat, és csak a kész (HTML)

kimenetet küldi a böngészőnek, így a forráskód nem látható kliensoldalról. Ehhez szükség

van egy értelmezőre (interpreter), mely általában egy külső modulja a webszervernek.

A php tulajdonképpen nagymértékű kiegészítése a HTML-nek. Számos olyan feladatra

képes, amelyre az ügyféloldali szkriptek nem, vagy csak korlátozottan (pl. bejelentkezés,

adatbázis-kezelés, fájlkezelés, e-mailküldés, adatfeldolgozás, stb.).

MySQL

A MySQL a legnépszerűbb nyílt forráskódú SQL (Structured

Query Language) adatbázis-kezelő. Mivel nyílt forrású, ezért

ez a legelterjedtebb. Egyedi illesztő felülettel számos

programozási nyelvvel elérhető (pl. C, C++, Delphi, Java, php).

Tökéletesen alkalmazható dinamikus webhelyekhez, így egy tartalomkezelő rendszer

működését tekintve a MySQL elengedhetetlen összetevő.

Az adatbázisok könnyen kezelhetőek php-val, így egyszerűen megjeleníthetők a kívánt

adatok a weblapokon.

CMS

A CMS egy angol mozaikszó (Content Management System), jelentése: tartalomkezelő

rendszer. Többféle megfogalmazás is létezik a webes tartalomkezelő rendszerekre.

Manapság leginkább azokat a web alapú rendszereket hívjuk így, amelyekkel internetes

oldalak, honlapok, portálok készíthetők programozói tudás nélkül. Olyan

szoftverrendszerről van szó, amely nem strukturált információk több felhasználó általi

elkészítését, kezelését, karbantartását, és tárolását teszi lehetővé.

Page 15: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

13

3. ábra: Népszerű CMS-ek logói (balról: Drupal, Joomla!, e107, Wordpress)

A CMS ezen túl gondoskodik a felvitt tartalmak strukturált megjelenítéséről, statisztikák

készítéséről, és lehetőséget nyújt kiegészítő funkciók hozzáadására is. Fontos megjegyezni,

hogy a rendszer használata – általában a honlap elindításánál – csekély mértékben

igényelhet webfejlesztői, programozói ismereteket, azonban főleg a tartalmakra kell

koncentrálnunk. Az alkalmazás jellegéből adódóan a weboldal rövid idő alatt összeáll.

CMS rendszerek jellemzői

A CMS-ek célja, hogy egyszerűen lehessen tartalmakat (szöveg, kép, csatolt állományok,

stb.) felvinni, és azokat elérhetővé tenni az oldalra látogatók számára. A tartalomkezelő

rendszerek egyik legfontosabb tulajdonsága a dinamizmus. A tartalmat, továbbá annak

megjelenését – megfelelő jogosultság esetén – bármikor, bárhonnan meg lehet változtatni;

a tartalmak adatbázisban tárolódnak, ahonnan a rendszer a felhasználó böngészőjének

kérésére közzéteszi azokat.

A tartalomkezelők sablonok (template) segítségével választják el egymástól a tartalmat és

az oldal megjelenését. A sablonokat felfoghatjuk "keretrendszerként" is, ugyanis ha egy

CMS alapú weboldalon arculatot váltunk, elegendő a meglévő sablont lecserélni, a

tartalom változatlan formában jelenik meg az új külsőn. Egy dinamikus honlapot

mindössze egyszer kell grafikailag megtervezni, onnantól kezdve a tartalom könnyedén,

tetszés szerint változtatható. A későbbiekben bármilyen új funkcióval bővítjük oldalunkat,

az mindennemű grafikai átalakítás nélkül beépül oldalunkba, a honlap érintett részét nem

kell újraszerkesztenünk – mint azt egyébként a statikus honlapok esetében szükséges.

A CMS rendszerek tehát lehetőséget adnak arra, hogy az oldal látogatói különböző

szerepkörökben és különböző jogosultságokkal használhassák a weboldalt. A legtöbb

látogatónak általában csak olvasni van lehetősége az oldalakat, persze nagyobb

jogosultságköröket is adhatunk az egyes felhasználóknak. Ahhoz, hogy minden látogató

Page 16: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

14

pontosan azt tehesse meg a honlapon, amire az oldal tulajdonosa vagy adminisztrátora

feljogosítja, elengedhetetlen a látogató személyének beazonosítása. Ehhez a legcélszerűbb

a felhasználók számára egyedi azonosítót létrehozni (más néven beregisztrálni őket), majd

ezekhez rendeljük a jogosultságokat. A regisztrálásra került felhasználó a weboldal

későbbi használata esetén egyedi, általában általa megválasztott felhasználónevének és

jelszavának megadásával azonosítja magát, azaz bejelentkezik.

4. ábra: CMS rendszerek általános struktúrája

Egy CMS alapú weboldalnak tehát szüksége van egy adminisztrátorra, akinek az összes

jogosultság a kezében van; a honlapon olyan feladatokat is végrehajthat, amelyek senki

Page 17: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

15

másnak nem engedélyezettek. Így tehát ő lesz az, aki a többi felhasználó számára kiosztja a

megfelelő jogosultságokat.

A tartalmak létrehozása, beküldése, szerkesztése általában csak regisztrált, és

bejelentkezett látogatók számára engedélyezett. Léteznek olyan beállítások, melyeket

alkalmazva a látogatók bejelentkezés nélkül is küldhetnek be tartalmakat; ez általában

fórum bejegyzések, megjegyzések, illetve kommentek beküldése esetén bárki számára

engedélyezett.

Az oldalra történő regisztráció kétféle módon történhet: saját magunk végezzük el, vagy az

adminisztrátor regisztrál. A két lehetőség közül az adminisztrátor dönti el, melyiket

alkalmazza az oldalon.

5. ábra: CMS-ek legfőbb funkciói

A tartalomkezelőkre jellemző a modulos felépítés, amellyel egyedivé tehetjük oldalunkat.

Általános jellemző a CMS-ekre, hogy a több felhasználós rendszerek, vagyis egyszerre

többen szerkeszthetik a tartalmakat, telepíthetnek kiegészítőket. A meglévő, illetve utólag

hozzáadott modulok segítségével az azonos rendszerű honlapok is teljes mértékben testre

szabhatók.

Page 18: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

16

A legtöbb CMS-ben található beépített keresőrendszer, így a honlapon elhelyezett

tartalmak között könnyen keresgélhetünk, egyszerűen megtalálhatjuk a szükséges

tartalmakat.

A tartalomkezelő rendszerek között mind az alapfunkciók, mind a kiegészítők terén

számos különbség van.

Mikor érdemes CMS rendszer alkalmazni?

Tartalomkezelő rendszert leginkább az aktív kommunikáció szempontjából érdemes

alkalmazni; olyan területeken érdemes használni, ahol fontos az oldalra látogatókkal

történő kommunikáció (pl. portálok, webáruházak, fórumok). Kiváló megoldás lehet, ha

gyorsan és egyszerűen akarunk friss híreket közölni, illetve ha jelentős mennyiségű

tartalmat szeretnénk megosztani elektronikus formában a világhálón. Segítségével

magánszemélyek egyszerűen alakíthatnak ki személyes blogoldalakat, míg a vállalatok

létrehozhatják saját, céges webhelyüket. Vállalati weboldal esetén az adott cég

csökkentheti kiadásait egy CMS alkalmazásával; nem kell drágán megbíznia egy

webfejlesztő céget az oldal elkészítésével. Sok esetben az erre a feladatra felkért cég, vagy

informatikus lassan végzi el a szükséges frissítéseket, azonban egy tartalomkezelő rendszer

alkalmazásával a vállalat dolgozói is könnyedén naprakészen tarthatják a cég honlapját –

ezzel jelentősen lerövidítve a frissítések idejét.

6. ábra: A Nyíregyházi Főiskola kezdőlapja (http://www.nyf.hu)

Page 19: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

17

Alkalmazási területek

Egy webes tartalomkezelő rendszer számos honlap típus megvalósítására alkalmas. Gyors

és folyamatos fejlődésüknek köszönhetően a világháló egyre nagyobb területét foglalják el,

egyre több webhely kap CMS alapot.

Néhány fontosabb terület, melyek megvalósíthatók CMS-sel:

� céges weboldalak, portálok

� online kereskedelem

� kis- és középvállalatok weboldalai

� nonprofit szervezeti weboldalak

� kormányzati oldalak

� testületi intranetek és extranetek

� oktatási intézmények és templomok weboldalai

� személyes honlapok

� közösségi portálok

� internetes magazinok

� blogok

7. ábra: Joomla! alapú webáruház

Page 20: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

18

Előnyök

Számos előnye van egy tartalomkezelő rendszernek. A fentebb már említett dinamizmuson

túl kiemelendő a fejlett CSS kezelés. Ebből eredően teljes mértékben testre szabhatóak

oldalaink, egyszerűen illeszthetünk be általunk készített webdizájnt; a meglévő, illetve az

általunk készített sminkeken túl számtalan más kinézet letölthető az internetről, melyeket

egyszerűen adhatunk hozzá a rendszerhez. Minden oldalhoz akár saját sablon is rendelhető.

Moduláris felépítésük révén – a jó pár alap modul mellé – egyedi igények alapján

fejlesztett modulok beillesztése is lehetséges. Módunkban áll JavaScript, Flash, és videó

beágyazása a tartalmakba. A CMS rendszerek általában kezelik és támogatják a

keresőbarát URL-eket. Tartalmaznak beépített és online segítség, így ha elakadunk

munkánk során, könnyedén kereshetünk megoldást a problémákra. Fontos, hogy a

felhasználók és csoportok menedzselése egyszerű és rugalmas legyen – a legtöbb

tartalomkezelő rendszer természetesen ezt is biztosítja.

Összefoglalva, a CMS-ek az alábbi főbb előnyökkel rendelkeznek:

� széleskörű alkalmazási terület

� sokoldalú bővíthetőség

� egyszerű tartalom feltöltés és kezelés

� költséghatékony honlap üzemeltetés

� beépített keresőoptimalizálás

� egyszerűen cserélhető dizájn

Melyik CMS-t válasszuk?

Sokféle tartalomkezelő rendszer közül választhatunk. A szabad licencű, ingyenes, és

általában nyílt forráskódú rendszerek mellett sok a kereskedelmi termék, és az egyedi

fejlesztés is. Léteznek egyszerűbb, illetve komplexebb rendszerek, kezdetlegesek és jól

kiforrottak. A népszerűbbek magyar nyelven is "beszélnek" hozzánk, ám léteznek olyanok

is, melyek csak külföldi nyelveket tartalmaznak. Választhatunk különféle

szerverkörnyezeten üzemeltethetőek közül (pl. Java, php, .Net). Vannak általános célú

CMS-ek, illetve speciális verziók (pl. e-learning).

Fontos szempont lehet, hogy a választás előtt ki tudjuk-e próbálni az adott rendszert.

Ebben rejlik az ingyenes, illetve nyílt forrású rendszerek egyik előnye: lehetőségünk van

az interneten, előre telepített rendszerek kipróbálására. A magyar nyelven is használható,

Page 21: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

19

nyílt forrású CMS-ek nagy része a CMS Award oldalon tesztelhető, ezen felül még több

(angol nyelvű) rendszer kipróbálható az OpensourceCMS oldalon.

(Megjegyzés: az ingyenes és a nyílt forrású rendszer fogalma nem ugyanazt jelenti, sokszor

azonban – különösen a CMS-ek esetében – az ingyenes programok nyílt forrásúak is.)

Nem elhanyagolható szempont az sem, ha egy CMS aktív felhasználóiból álló közösség is

elérhető, akiktől szükség esetén segítséget kérhetünk, vagy megoszthatjuk velük

tapasztalatainkat.

A magyar felhasználók körében legelterjedtebb CMS-ek a Drupal, a Joomla!, a Moodle és

a Wordpress. Előbbi kettő általános célú rendszer, míg a Moodle oktatási oldalak, a

Wordpress pedig blogok esetén a legnépszerűbb.

8. ábra: A CMS Award kezdőlapja (http://cmsaward.hu)

Rendszerkövetelmények

A tartalomkezelők nagy részére jellemző, hogy platform függetlenek, azaz nem számít,

milyen operációs rendszert telepítettünk a számítógépre; lehet ez akár a Windows verziók

egyike (pl. NT, Millennium, XP, Vista, Se7en), valamilyen Linux disztribúció (pl.

openSUSE, Ubuntu, Debian), vagy akár egyéb más rendszer.

Page 22: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

20

Fontos, hogy telepítve legyen számítógépünkre egy, a követelményeknek megfelelő php

fordító, amely elősegíti a CMS kódjainak értelmezését. Szükséges ezen kívül egy

adatbázis-kezelő rendszer megléte is; ez a tartalomkezelőtől függ, hogy melyiket

támogatja. A harmadik összetevő – mely elengedhetetlen a CMS működése szempontjából

– egy webszerver; a legelterjedtebb az Apache. Végezetül szükség van egy kliensre, mely

jelen esetben egy böngésző programot takar (pl. Internet Explorer, Firefox, Opera,

Chrome); munkánk nagy része ezzel zajlik.

Tartalomkezelő rendszerek felépítése

Egy tartalomkezelő rendszer két fő részre bontható: a CMS motor központi magja és a

kiegészítők között teszünk különbséget.

Motor

A CMS alapfunkcionalitásait megvalósító alkalmazás, illetve alkalmazások összessége.

Már önmagában is rendkívül sok szolgáltatást nyújt, ám alapvetően a különböző funkciók

hatékony összefogása a feladata. Mivel a motor alkotja rendszerünk magját, fontos, hogy

az itt található kódok kifogástalanok legyenek, ezért ezek garantáltan teszteltek, az esetek

döntő többségében korrektek és használhatóak. Az esetleges hibákat gyorsan javítják, mely

bekerül a soron következő frissítésbe.

Kiegészítők

Az adott CMS-sel foglalkozó közösség által készített kiegészítő funkcionalitások,

szolgáltatások (modulok), kinézetek (sminkek), felületfordítások és dokumentációk

összessége. Nincsenek olyan szigorú ellenőrzés alatt, mint a motor, ezért nem csak

tökéletesen működő komponenseket találhatunk; kellő óvatossággal kell a kiegészítőket

használnunk. Sajnos az is előfordul, hogy a fejlesztő egy idő után már nem foglalkozik az

általa megírt kiegészítővel; nem fejleszti tovább, nem tartja karban, nem javítja ki az

esetleges hibákat, nem frissíti.

A fejlesztés szempontjából a készítők további két kategóriát határoztak meg: mind a mag,

mind a kiegészítők esetén megkülönböztetnek stabil és fejlesztői változatot. Utóbbiakat

csakis nagy körültekintéssel használjuk, továbbá amennyiben lehetőségünk van, ne

alkalmazzuk őket a már elkészült, működő oldalunkon.

Page 23: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

21

MVC

Az MVC egy angol mozaikszó (Model-View-Controller), mely a Modell-Nézet-Vezérlő

kifejezést takarja. Az MVC egy szerkezeti minta, melyet olyan rendszereknél alkalmaznak,

ahol sok adat jelenik meg a felhasználók előtt.

Célja, hogy az adathoz (Model - modell) és a felhasználói felülethez (View - nézet) tartozó

dolgokat szétválassza, annak érdekében, hogy a felhasználói felület ne befolyásolja az

adatkezelést, és az adatokkal történő munka se változtasson a felhasználói felületen. Az

MVC ezt úgy oldja meg, hogy elkülöníti az adatelérést a megjelenítéstől, a felhasználói

interakcióktól egy közbülső összetevő, a vezérlő (Controller) bevezetésével.

A legtöbb CMS is ezt a mintát követi.

9. ábra: Az MVC általános sémája

Az adminisztrációs felület ismertetése

Egy tartalommenedzsment rendszer használatához nincs szükség HTML ismeretekre. A

változásokat weboldalunkon egy úgynevezett adminisztrációs felület segítségével

végezhetjük el, amely az internetről elérhető, de csak regisztrációval – felhasználónévvel

és jelszóval – rendelkező felhasználók férnek hozzá. A változtatások azonnal megjelennek

Page 24: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

22

oldalunkon, így a feladatokat jelentősen rövidebb idő alatt végezhetjük el, mintha egy

általunk megbízott programozó, vagy cég frissítésére várunk. A rendszer bármilyen igény

felmerülése esetén gyorsan és könnyedén bővíthető.

Tartalmak közzététele

A tartalomkezelők alapja a tartalom, e köré épülnek a CMS rendszerek. Alapvető céljuk,

hogy a tartalom előállításához ne legyen szükség programozói szaktudásra. Épp ezért a

rendszernek a tartalmak létrehozásához, szerkesztéséhez egy szövegszerkesztőhöz hasonló

megoldást kell biztosítaniuk a felhasználó számára.

Egy tartalomkezelő rendszernek sokféle tartalomtípust kell kezelnie. Ezek közül a

legegyszerűbbek a szöveges dokumentumok, a különböző írások, hírcikkek, melyek

pusztán szöveget tartalmaznak. A CMS-ek biztosítják a képkezelést is: különféle

formátumú képeket tölthetünk fel és ágyazhatunk be a létrehozott tartalmakba. Akár webes

fotóalbumokat is kreálhatunk, ha beépítjük rendszerűnkbe az ehhez szükséges

kiegészítőket. Megoszthatunk hanganyagokat, zenéket, sőt videókat is, bár ezek kezelésére

nagy valószínűséggel kiegészítő modulok letöltésére és telepítésére van szükség.

Létrehozhatunk fórumtémákat, szavazásokat, blogbejegyzéseket, közzétehetünk különféle

fájlokat; a lehetőségek tárháza szinte kimeríthetetlen.

Az oldalakon közzétett tartalmak függvényében kialakíthatunk bizonyos portálokat:

hírportált, internetes naplót, vagy alkothatunk olyan webhelyet, melyen online zene és

videó lejátszásra adunk lehetőséget a látogatók számára (mint például a Youtube nevezetű

oldalon).

A tartalmakat más szempontok alapján is megkülönböztetjük. Vannak publikus tartalmak,

és vannak olyanok, melyeket az oldal tulajdonosa ugyan már létrehozott, de még nem tette

közzé. Ezeket csak az adminisztrátor látja, az oldal látogatói és az internetes

keresőrendszerek mindaddig nem érik el, míg az adminisztrátor nem élesíti.

Felhasználó-kezelés a CMS rendszerekben

A dinamikus weblapok és az adminisztráció megjelenése megkövetelte a felhasználók

kezelését. Mivel az oldal adminisztrátora nem biztos, hogy a közzétett tartalmakat

mindenkivel meg akarja osztani, elengedhetetlenné válik, hogy felhasználókat hozzunk

Page 25: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

23

létre, regisztráljuk őket a rendszerbe, és különböző jogosultságokkal lássuk el őket. Egy

CMS-nek erre is lehetőséget kell biztosítania, azaz rugalmas felhasználó-kezeléssel kell

rendelkeznie.

Minden rendszernek van egy adminisztrátora, aki teljes jogkörrel rendelkezik, bármit

megtehet az oldalon. Ha az oldal tulajdonosa úgy határoz, nevezhet ki újabb

adminisztrátorokat is maga mellé.

Az oldalra látogatók két csoportba sorolhatók:

� Azonosított felhasználók, akik már regisztrált tagjai a rendszernek, saját

felhasználónévvel és jelszóval rendelkeznek, mellyel beléphetnek a webhelyre.

Jogosultságaik korlátozottak, a jogokat az adminisztrátor rója ki.

� Ismeretlen felhasználók, akik ugyan ellátogatnak a webhelyre, de még nem

tagjai annak, nem rendelkeznek saját regisztrációval. Ezen felhasználók

általában csak a közzétett tartalmakat olvashatják, illetve menthetik le, egyéb

jogosultságuk nincs. Bizonyos esetekben számukra is nyitott néhány opció:

publikus szavazásokban vehetnek részt, vagy anonimként hozzászólásokat

fűzhetnek bizonyos tartalmakhoz. Ezekről szintén az adminisztrátor

rendelkezik.

A weboldal típusától függően hozhatunk létre különböző jogosultsági köröket. Mivel a

tartalomkezelő rendszerek alapvetően a tartalmak csoportos létrehozására, szerkesztésére,

karbantartására lettek kifejlesztve, így célszerű e szerint rendezni a felhasználókat.

Lehetnek olyanok, akik csak híreket, cikkeket tehetnek közzé, és létrehozható olyan kör is,

melynek tagjai az oldalhoz tartozó fórum kezelésére hivatottak.

A létrehozott webhelyre eleinte csak pár látogató érkezik, ám számuk az idő múlásával

valószínűleg egyre növekszik, így bizonyos létszám felett nehézkessé válhat a felhasználók

menedzselése, és a különböző jogosultságok kiosztása. Ezen probléma áthidalására

fejlesztették ki a CMS-ekben a tagok csoportosítását: csoportokat alakíthatunk ki, így nem

felhasználónként egyesével, hanem csoportokra oszthatjuk ki a kívánt jogokat. Ez a

módszer lényegesen leegyszerűsíti és felgyorsítja a felhasználó-kezelést.

Page 26: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

24

Bővítmények a tartalomkezelő rendszerekben

Modulok

Egy CMS alaprendszer igen széleskörű tudással bír, ám meglehet, hogy az alap modulok

és szolgáltatások nem elégítik ki az adminisztrátor, vagy épp az oldalra látogatók igényeit.

A legtöbb tartalomkezelő rendszer filozófiája az, hogy a rendszermag gyors és flexibilis

legyen, illetve minél egyszerűbb legyen az egyedi kiegészítések integrációja.

A bővítményeket két fő csoportra oszthatjuk:

• beépített

Az alaprendszer része, megkapjuk őket a letöltött CMS-sel együtt. A különböző

rendszerbővítmények felett szabadon rendelkezhetünk, hogy használni szeretnénk-e

őket, vagy sem.

• letölthető

Mások által fejlesztett kiegészítők, melyeket az alaprendszer nem tartalmaz. Az

egyes letölthető bővítmények elsősorban az adott CMS hivatalos weboldalán

érhetők el.

Sablonok

10. ábra: A RocketTheme kezdőlapja

Page 27: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

25

A tartalomkezelő rendszerek annak lehetőségét is biztosítják, hogy gyorsan, könnyen,

egyszerűen megváltoztathassuk a látogatók elé táruló webhely külcsínét. Találunk

alapsablonokat, melyeket a CMS telepítését követően élesíthetjük, módosíthatjuk az egyes

paramétereit (színek, fejléckép, stb.).

Ha szerénynek találjuk az alaprendszer nyújtotta megjelenést, lehetőségünk van egyedi

fejlesztésű témák (template-ek, skinek) letöltésére és alkalmazására. Bizonyos

fejlesztőcsapatok kifejezetten sablonok készítésére, szerkesztésére specializálódtak, tőlük

számos egyedi dizájnnal rendelkező minőségi sminket szerezhetünk be saját

rendszerünkhöz. Ilyen például a RocketTheme – a csapat prémium szintű külsőket készít

Drupal, Joomla!, Wordpress, Magento és phpBB rendszerekhez.

Page 28: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

26

Drupal

A Drupal egy php-ben írt nyílt forráskódú tartalomkezelő rendszer.

Legszívesebben kollaboratív (csoportos) CMS-nek hirdetik,

melyet a teljes felhasználói körre kiterjedő szerzői lehetőségeknek

köszönhet – a látogatók regisztrálásával.

Fejlesztése során központi figyelmet kap a szabványos kódok

alkalmazása; fontos, hogy a cél kimenet a lehető legkevesebb

HTML szemetet tartalmazza, illetve megfeleljen az XHTML és CSS 2 szabványoknak.

A Drupal filozófiája a kész kódok minél nagyobb újrahasznosítása. Gyakran a különféle

modulok egymás mellé települve – kihasználva egymás tulajdonságait – sokkal több

funkcionalitást nyújtanak.

A rendszer egyik legnagyobb erénye az úgynevezett taxonómia-kezelés. Ez az összes

kategorizálási problémát hivatott áthidalni (hírrovatok, fórum kategóriák, blog tagek, stb.).

A taxonómia sokoldalú farendszerek létrehozását teszi lehetővé szinonimákkal, a

végpontok közötti kapcsolatokkal, és számos más szolgáltatással.

Egy másik fontos tulajdonsága a rendszernek, hogy szinte minden tartalom úgynevezett

node-okban tárolódik. Egy node a taxonómiák szerint kategorizálható, lehetnek különböző

verziói, hozzászólások tartozhatnak hozzá, és még számos tulajdonsággal rendelkezik.

11. ábra: A Drupal hivatalos honlapja (http://drupal.org)

Page 29: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

27

Az alaprendszer az általánosságban használt modulokat tartalmazza (cikkek, fórumok,

hozzászólások, blogger API támogatás, stb.), továbbá alkotóeleme egy fejlett RSS

aggregátor, így arra is képes, hogy a webhely tartalmát RSS formában is elérhetővé tegye.

A rendszer több kategóriát is megvalósít:

� Tartalomkezelő rendszer (CMS - Content Management System)

� Tartalomkezelő keretrendszer (CMF - Content Management Framework)

� Web alkalmazásfejlesztő keretrendszer (WAF - Web Application Framework)

A Drupal legfontosabb jellemzői

• Rendszer

o Többféle, könnyen testre szabható sablonrendszer támogatása

o Blogger API

o Naplózás és statisztikák készítése

o Automatikus védelem túlterhelés esetén

o Kiváló bővíthetőség

• Adminisztráció

o Beágyazott adminisztrációs felület

o Könnyen megjegyezhető URL álnevek támogatása

o Csoportos, tartalom szintű jogosultság kezelés

o Többféle beviteli formátum

o Verziókezelés

o Beépített súgó

• Tartalomkezelés

o Rengeteg beépített tartalom típus (oldal, fórum, blog, stb.)

o Űrlapok

o Szavazások

o Szálkövető hozzászólások

o Vitafórumok

o Saját tartalomtípusok kialakításának lehetősége

o Indexelt keresés

Page 30: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

28

A Drupal architektúrája

12. ábra: A Drupal architektúrája

Drupal MVC

13. ábra: A Drupal MVC szerkezete

Page 31: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

29

Telepítés

A Drupal CMS-t elérjük a http://drupal.hu oldalon, magyar felületen, melyhez ugyaninnen

letölthető a rendszer honosítása is. Két éppen aktuális verzió közül választhatunk: a 6-os és

a 7-es verziók legújabb kiadása áll rendelkezésünkre. A Drupal 6 egy kiforrottabb

rendszer, támogatottsága nagyobb, a modulok és sminkek zöme is ez alá íródott. Azoknak,

akik még ismerkednek a CMS rendszerekkel, illetve a Drupallal, ajánlatos ezt a verziót

letölteniük; tanulásra alkalmasabb, mint az újabb 7-es Drupal. Utóbbi verziót a haladó

felhasználóknak célszerű használniuk: fejlettebb képességekkel bír, de még jóval kevesebb

hozzá való kiegészítő és smink kering az interneten.

14. ábra: Az "Aktuális kiadások" doboz a drupal.hu-n

Amennyiben fontos a bővíthetőség, és rendszerünket szeretnénk minél több

funkcionalitással ellátni, a 6-os verziót válasszuk, ha viszont kevésbé számít a kiegészítők

számának gyarapítása, megelégszünk az alapmodulokon túl néhány plusz kiegészítéssel, és

szeretnénk a legfrissebb rendszert használni, a Drupal 7 lesz számunkra alkalmasabb.

A letöltött fájl egy .tar.gz kiterjesztésű tömörített állomány, melyet egy arra alkalmas

tömörítőprogrammal (pl. WinRAR) csomagoljunk ki merevelemezünk egy tetszőleges

könyvtárába. Amennyiben azt szeretnénk, hogy a telepítő, illetve a frissen telepített

rendszer egyből magyarul "szóljon" hozzánk, úgy a magyarosítás csomagot is bontsuk ki

ugyanebbe a mappába – az esetleges egyezések esetén természetesen írjuk felül a régebbi

fájlokat. Az így kapott struktúrát kell elhelyeznünk a webszerveren. A telepítésről az

install.php gondoskodik, mely elsőként fut le, ha begépeljük oldalunk címét a böngésző

címsorába. Kövessük a képernyőn megjelenő utasításokat.

Page 32: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

30

A telepítésről, illetve annak konfigurálásáról bővebb információkat kaphat a felhasználó a

Drupal kézikönyvben, melyet a magyar Drupal oldalon ér el.

A telepítés lépései

1. Nyelv kiválasztása

Kezdőlépésként meg kell választanunk rendszerünk nyelvét: a beépített angol nyelv mellett

látnunk kell az általunk hozzáadott magyart is – amennyiben a fentiek szerint hozzáadtuk a

honosítást a CMS-hez.

2. Követelmények ellenőrzése

A telepítő figyelmeztet minket egy elvégzendő feladatra: a telepítés előfeltétele, hogy

másolatot készítsünk a szerveren található ./sites/default/default.settings.php fájlról. Az új

fájl neve settings.php legyen, mely ugyancsak a ./sites/default könyvtárban helyezkedjen

el. Fontos, hogy nem elegendő a meglévő fájlt átnevezni, ugyanis a másolat mellett meg

kell tartanunk az eredetit is. A settings.php jogosultságait úgy kell beállítani, hogy a fájl a

webszerver számára írható legyen.

15. ábra: Előfeltétel problémát jelző hibaüzenet a Drupal 6 telepítése során

Page 33: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

31

Az imént leírtak elvégzését követően kattintsunk az "érdemes újra próbálkozni"

hivatkozásra, ezzel frissítjük a telepítőt. Ekkor leellenőrzi a létrehozott fájlt, illetve minden

más telepítési előfeltételt, és ha mindent rendben talál, folytatódik az installáció.

3. Adatbázis beállítás

Harmadik lépésként el kell végezni az adatbázis beállításokat. Az Alapvető beállítások

szekcióban meg kell adni a MySQL adatbázis nevét, a hozzátartozó felhasználói nevet és

jelszót, melyeket a webszerver szolgáltatójától kaptunk.

A Haladó beállítások blokkot lenyitva a következőket találjuk: az adatbázis hoszt

(alapértelmezésként localhost), az egyedi adatbázis port, és a táblanév előtag megadására

van lehetőségünk.

Ügyeljünk a mezők pontos kitöltésére!

4. Webhely telepítése

Ha a szükséges adatokat helyesen adtuk meg, megkezdődik a Drupal 6 telepítése. Itt egy

folyamatjelző csík tájékoztat minket a művelet állapotáról, továbbá azt is kiírja a telepítő,

hogy a rendszer mely része került épp telepítésre.

5. Fordítások betöltése

A Drupal automatikusan importálja a felületfordításokat a rendszerbe. Ennek állapotáról

ugyancsak folyamatjelző informálja a felhasználót.

6. Webhely beállítása

A hatodik lépésben meg kell adnunk néhány adatot weboldalunkról. Kötelesek vagyunk

megválasztani webhelyünk nevét – ez jelenik meg oldalunk fejlécén, illetve böngészőnk

ablakának címében, illetve a különféle keresőszolgáltatók is ezen a néven jelenítik meg

oldalunkat a találati listában. Ezenfelül szükség van egy létező e-mail címre is, melyről

majd a rendszer küldi a felhasználók számára a különböző üzeneteket és értesítőket (pl. a

regisztráció megerősítéséről szóló e-mailt). Mindkét adat módosítható a későbbiekben.

Lentebb az adminisztrátori adatokat kell megadnunk: ezzel regisztrálásra kerül az

adminisztrátor a rendszerben. Ehhez egy felhasználói név, egy létező e-mail cím, és egy

tetszőleges jelszó megadására van szükség.

A legalsó szekcióban beállíthatjuk az alapértelmezett időzónát, továbbá – ha szerverünk

szolgáltatásai lehetővé teszik – bekapcsolhatjuk a rövid webcímek kezelését. A beállítás

Page 34: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

32

lehetővé teszi, hogy megszabaduljunk a Drupal webcímekben található ?q= résztől.

Aktiválhatjuk a rendszer frissítéseinek automatikus ellenőrzését is – segítségével az

adminisztrátor üzenetet kap új verzió megjelenése esetén. Célszerű bekapcsolni, ugyanis a

későbbiekben – biztonsági okokból – javallott a rendszer folyamatos frissítése. Megeshet,

hogy ezen opció sem aktiválható, oka, hogy némelyik szolgáltatónál a HTTP kérések nem

engedélyezettek.

(Megjegyzés: A rendszer egy, a lap tetején található szövegdobozban értesít minket arról,

hogy a ./sites/default/settings.php fájlon módosításokat hajtott végre.)

7. Fordítások betöltése

A Drupal újra megvizsgálja, illetve betölti a szükséges fordításokat.

8. Kész

Az utolsó lapon értesülünk a telepítés sikerességéről. Az esetlegesen felmerülő hibákról –

melyek az installáció befejezését nem befolyásolják – értesít minket a Drupal.

Most már lehetőségünk van működő weboldalunkra lépni, és használatba venni frissen

telepített Drupal 6 CMS-ünket.

A Drupal motorja

Alapszolgáltatások

A következő lista a System alapmodul fontosabb szolgáltatásait ismerteti:

� Adminisztrációs smink: Az adminisztrációs oldalak megjelenésének beállítása.

� Beviteli formák: Az oldalhoz adott tartalmak szűrésének beállításaira, valamint HTML

és php kód szűrés be- és kikapcsolására van lehetőségünk

� Dátum és idő: A Drupal rendszer dátum és idő megjelenítésével kapcsolatos

beállításait találjuk itt, továbbá az alapértelmezett időzónát is módosíthatjuk.

� Fájlrendszer: Megadhatjuk a fájlrendszer mappáját a szerveren, az ideiglenes fájlok

helyét, illetve a letöltési módot.

� Hibajelentés: Ezen az oldalon beállíthatjuk, hogy rendszerünk mit válaszoljon a

403-as (tiltott hozzáférés) és 404-es (nem található) eseményekre a felhasználóknak.

� Képkezelő eszközkészlet: A feltöltött JPEG képek átméretezési minőségét adhatjuk

meg.

Page 35: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

33

� Nyelvek: A rendszerfelület nyelvének beállítása.

� Rövid webcímek: Be-, illetve kikapcsolhatjuk a rövid webcímek kezelését.

� RSS közzététel: Az alapértelmezett RSS hírcsatorna beállításait adhatjuk meg.

� Teljesítmény: Oldalunk teljesítményének finomhangolása végezhető el itt.

� Webhely információk: Alapvető webhely adatok beállítása.

� Webhely karbantartás: A karbantartási mód engedélyezése, vagy tiltása.

Alapmodulok

A következő néhány pontban áttekintjük a Drupal CMS fontosabb alapfunkcionalitásait.

Ezeket az Adminisztráció/Webhelyépítés/Modulok menüpont alatt találjuk meg. A

későbbiekben az általunk a rendszerhez adott modulok is itt jelennek meg, egy külön

szekcióban.

Két csoportra oszthatjuk az alapmodulokat: vannak olyan modulok, melyek működését

nem állíthatjuk le (kikapcsolásuknak nem is lenne értelme), és vannak olyanok, mely

funkciókból igény szerint válogathat az adminisztrátor.

Szükséges elemek

� Block: Az oldalak fő tartalma körül megjelenő dobozokat kezeli.

� Filter: A tartalmak szűrésének kezelését végzi, mielőtt azok megjelenésre

kerülnének.

� Node: Tartalmak beküldését és megjelenítését lehetővé tevő alapmodul.

� System: A webhely általános beállításait kezeli.

� User: Felhasználók regisztrációját és beléptetését biztosítja.

Nem szükséges elemek

� Aggregator: RSS, RDF, és ATOM formátumú tartalmak olvasását teszi lehetővé.

� Blog: Aktiválja a blog tartalomtípust, melynek segítségével blogbejegyzéseket

hozhatunk létre.

� Color: Bekapcsolásával bizonyos felületek (sminkek) színeit változtathatjuk meg

tetszés szerint.

� Comment: Megadja a hozzászólások lehetőségét a felhasználók, illetve az oldalra

látogatók számára.

Page 36: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

34

� Forum: Segítségével fórumot (fórum tartalomtípust) hozhatunk létre

weboldalunkon.

� Help: A súgókat kapcsolja be.

� Locale: Biztosítja a felületfordítást, így rendszerünk az alapértelmezett angol

nyelven túl képes más nyelveket is használni.

� Menu: Lehetővé teszi a navigációs menük beállítását.

� Path: Ezen funkcióval elfedhetjük az alapértelmezett webcímeket álnevekkel.

� Poll: Egyszerű szavazásokat (szavazás tartalomtípust) hozhatunk vele létre.

� Profile: Testre szabható felhasználói profilok támogatása.

� Search: Aktiválja az oldalon a kulcsszavas keresőt.

� Taxonomy: Tartalmak kategorizálását teszi lehetővé.

� Tracker: Biztosítja a friss tartalmak követését.

� Upload: Fájlok feltöltését és csatolását teszi lehetővé.

Felhasználói felület

Menük

A Drupal technikailag kétféle módon rendezi a menüket. Az egyik a vízszintes felső

menüként szereplő Elsődleges linkek megvalósítás, a másik, hogy az egyes menüpontok

valamelyik oldalsávon, menüblokkban, függőlegesen jelennek meg. A menük beállításait

az Adminisztráció/Webhelyépítés/Menük oldalon találjuk.

Az Elsődleges linkek helyzete smink kérdése – az alapértelmezett Garland smink a

fejlécen helyezi el. Bizonyos témák nem jelenítik meg, míg mások a Másodlagos linkeket

is kezelik.

Navigációs menü

Ebben a menüben jelennek meg a honlap adminisztrálásához szükséges menüpontok. Az egyes

menüpontokat fa hierarchiába rendezték.

Beállításait az Adminisztráció/Webhelyépítés/Menük/Navigáció alatt találjuk. A menüelemek

sorrendje megváltoztatható, emellett további menüpontokat engedélyezhetünk, vagy

meglévőket tilthatunk. Mindezen túl új menüpontokat vehetünk fel, illetve törölhetjük a már

létezőket is – kivéve azokat, melyek alapból a rendszer részét képzik.

Page 37: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

35

(Megjegyzés: Ha új menüpontokat szeretnénk felvenni, új menüben tegyük meg, a

Navigáció menüt érdemes eredeti állapotában hagyni.)

Blokkok

A menük – az Elsődleges linkek kivételével – blokkokban helyezkednek el. A blokkok

azonban nem csak menüket tartalmazhatnak.

Az Adminisztráció/Webhelyépítés/Blokkok lapon érhetők el az ide kapcsolódó beállítások.

Jól látszik, milyen alap blokkok alkotják a Drupalt; fejléc, lábléc, tartalom, bal oldalsáv,

jobb oldalsáv. Ha nem érnénk be a rendszer által generáltakkal, hozzáadhatunk saját

blokkokat is, illetve vannak olyan sminkek, melyek készítenek magunknak újabbakat.

További beállításokat adhatunk meg, ha a blokkok listájában az egyes blokkok neve

melletti beállítás linkre kattintunk. Megadhatunk címet (mely felülírja a menütől kapottat),

szabályozhatjuk, hogy a tagok kikapcsolhassák-e az adott blokkot, megjelenítését

jogosultsághoz is köthetjük (alapértelmezés szerint mindenki elérheti azokat). Végezetül

megadhatunk útvonalakat, azaz hogy mely oldalakon jelenjen, vagy épp ne jelenjen meg a

blokk.

Kezdőlap

1. Az oldal felső része a Fejléc. Ide kerül a cím, a jelmondat, a webhely logója, és az

Elsődleges linkek. Bizonyos sminkek tartalmaznak fejlécképet, amit tetszés szerint

lecserélhetünk.

Page 38: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

36

2. Az oldal alsó része a Lábléc. Alapértelmezés szerint ide egy apró Drupal logó

kerül, mely a hivatalos honlapra hivatkozik – ezt természetesen kikapcsolhatjuk, ha

nincs rá szükségünk. Továbbá itt nyílik lehetőségünk feliratkozni az oldal RSS

hírfolyamára.

3. Az oldal legnagyobb részét a Tartalom teszi ki, mely általában középre kerül.

Többnyire látható a tartalom címe, a szerző neve, a publikálás dátuma, és

természetesen maga a közzétett tartalom.

4. A bal oldali blokk a Bal oldalsáv. Itt találhatjuk a bejelentkezéshez szükséges

menüt, mely belépés után átvált a Navigáció menüre. A Bal oldalsávra többnyire

modulok kerülnek; helyezhetünk el szavazásokat, vagy az online tagokról

információkat szolgáltató dobozt is.

5. A jobb oldali blokk a Jobb oldalsáv. Nem különbözik a fentebb részletezett Bal

oldalsávtól: moduljainkat pakolhatjuk rá, illetve különböző információkat

jeleníthetünk meg rajta – például a friss tartalmak címeit, vagy a legutóbbi fórum

hozzászólásokra mutató hivatkozást. A Drupal telepítése után alapértelmezettként

ez a blokk üres, nem tartalmaz elemeket.

Modulok kezelése

A Drupal alapcsomagjában található modulok igen sok szolgáltatást nyújtanak számunkra.

Rendszerünk további modulokkal bővíthető – az interneten több ezer kiegészítő modul

érhető el. Azonban ezen modulok nagy részében nem bízhatunk meg úgy, mint az

alapmodulokban, de körültekintő alkalmazásukkal igen sok programozói munkától

kímélhetjük meg magunkat, és rengeteg hasznos funkcióval bővíthetjük rendszerünket.

Telepítés és használat

A http://drupal.org/project/modules oldalról tölthetünk le modulokat. Alkalmazás előtt

célszerű minden ismeretlen modult tesztkörnyezetben kipróbálni. A fejlesztői (dev)

verziókat csak kellő óvatossággal érdemes éles rendszerünkben használni. A modulok

letöltése előtt válasszuk az alaprendszerünkhöz illő verziót.

Minden modult .tar.gz kiterjesztésű tömörített állomány formájában tölthetünk le, melynek

tartalmát a sites/all/modules könyvtárba kell feltöltenünk webszerverünkre. A tömörített

állományokban találunk a telepítésre, illetve a modul működésére vonatkozó, úgynevezett

Page 39: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

37

"readme" fájlt is, melyet érdemes átolvasnunk, mielőtt a bővítményt beintegrálnánk a

Drupalba.

A feltöltés végeztével a rendszerhez adott modul nem lesz aktív, nekünk kell azzá tenni.

Ezt az Adminisztráció/Webhelyépítés/Modulok menüpont alatt tehetjük meg. Az

alapmodulok mellett a listában látnunk kell az általunk rendszerhez adott kiegészítőket is.

Az aktiváláshoz helyezzünk pipát a modul címe előtt található jelölőnégyzetbe, majd

kattintsunk a Beállítások mentése gombra. Ezzel új modulunk aktívvá válik.

16. ábra: A Drupal modulok listája (részlet)

A modul tényleges használata előtt konfigurálnunk is kell azt. Ez többnyire az

Adminisztráció oldalon megjelenő újabb menüpontok segítségével tehetjük meg – újabb,

általában a rendszerhez adott modul nevével egyező menüpontok keletkeznek.

Amennyiben szeretnénk egy modult eltávolítani a rendszerből, helytelen megoldás lehet a

webszerverre feltöltött fájlokat és könyvtárakat szimplán letörölnünk. Helyette kapcsoljuk

oldalunkat offline módba, majd deaktiváljuk a modult. Ezt követően az

Adminisztráció/Webhelyépítés/Modulok menüben kattintsunk az Eltávolítás fülre, majd

távolítsuk el a modult. Ellenőrizzük oldalunk helyes működését, és ha mindent rendben

találunk, töröljük le a modul állományait. Ha mindezzel végeztünk, kapcsoljuk újra online

módba oldalunkat.

Adminisztráció

A regisztrált felhasználó bejelentkezés után megtekintheti, illetve módosíthatja adatait.

Átállíthatja magának az oldal nyelvét, ha engedélyezve vannak más, az alapértelmezettől

Page 40: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

38

eltérő nyelvek. Megváltoztathatja felhasználónevét, jelszavát, új e-mail címet adhat meg.

Beállíthat aláírást, mely minden hozzászólása alatt megjelenik, valamint módosíthatja az

időzónát, ha az adminisztrátor által meghatározott zóna számára nem megfelelő.

Az adminisztrátor a bejelentkezést követően egy bővebb menüt kap, mint a felhasználók.

Az Adminisztráció menüpont alatt konfigurálhatjuk be oldalunkat.

Itt öt szekciót találunk:

� Tartalom kezelés: Itt kezelhetjük a létrehozott tartalmakat. Megtekinhetjük

létrehozott tartalmainkat, szerkeszthetjük, vagy törölhetjük őket. Beállíthatjuk,

hogy a címlapon hány tartalom jelenjen meg, milyen hosszú legyen a bevezető

szövegük, illetve kötelezővé tehetjük az előnézet használatát. Kategorizálhatjuk

meglévő tartalmainkat, beállíthatjuk az RSS közzététel formáját. Kilistázhatjuk a

webhelyre érkezett hozzászólásokat, illetve itt van lehetőségünk a moderálásra.

� Felhasználó kezelés: Rendszerünkbe regisztrált felhasználóinkat kezelhetjük.

Csoportokat hozhatunk létre, illetve szerkeszthetjük azokat. Megadhatjuk a

rendszerbe való regisztráció feltételeit, illetve a rendszer által a felhasználóknak

küldött e-mailek szövegét. Beállíthatjuk az elérési szabályokat: felhasználók, e-mail

címek, és IP címek tiltásait konfigurálhatjuk. A különböző csoportoknak más-más

elérési szabályokat adhatunk meg a szolgáltatásokra vonatkozóan.

� Naplók: Rendszer eseménynaplókat és más állapotadatokat tekinthetünk meg itt.

Kérhetünk a rendszerről állapotjelentést – az esetleges hibák kilistázásával – illetve

megnézhetjük a tiltott oldalakkal (403) és nem található oldalakkal (404)

kapcsolatos hibákat.

� Webhely építés: Oldalunk megjelenésének beállításai tartoznak ide. Beállíthatjuk,

hogy a weboldal blokkjaiban milyen összetevők jelenjenek meg, vagyis az oldal

elrendezésén változtathatunk. Kezelhetjük a webhely navigációs menüjét, új

menüpontokat hozhatunk létre, illetve szerkeszthetjük, vagy törölhetjük a

meglévőket. Be- és kikapcsolhatjuk a különféle kiegészítő modulokat, valamint új

sminket állíthatunk be oldalunkra.

� Webhely beállítása: A rendszer működésére vonatkozó beállítások és funkciók

összessége. Ez a System alapmodul, részeit fentebb, az "Alapszolgáltatások"

témakörben részleteztük.

Page 41: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

39

Tartalom beküldése

A tartalmak beküldését bejelentkezve végezhetjük el, ehhez a Navigáció menüben a

Tartalom beküldése menüpontra kell kattintanunk. Alapesetben két tartalomtípus közül

választhatunk: oldal vagy írás. Amennyiben engedélyezve van rendszerünkben a Blog,

vagy a Forum modul, úgy ezekhez kapcsolódóan megjelennek további válaszható

tartalomtípusok. Bármelyikre kattintunk, folytatásként ugyanazt a felületet kapjuk.

Megadhatjuk a tartalom szerzőjének nevét és a beküldés időpontját. Lehetőségünk van a

hozzászólások olvasását és írását engedélyezni, vagy tiltani. Eldönthetjük, hogy a tartalmat

közzétesszük-e – a felhasználók csak ebben az esetben olvashatják azt. Megadhatjuk, hogy

a tartalom címlapra kerüljön-e, illetve kiemelhetjük azt az oldal tetejére, a többi meglévő

tartalom fölé. Elhelyezhetjük menüben, megadhatjuk a menüpontként megjelenő nevét,

rövid leírást, a szülő menüpontot, illetve a tartalom prioritását.

17. ábra: Írás tartalomtípus beküldése Drupalban

Page 42: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

40

A szövegtörzs beviteli formáját három típus közül választhatjuk ki:

� szűrt HTML (Filtered HTML)

� teljes HTML (Full HTML)

� PHP kód (PHP Code)

Ezek a felhasználók által megadható szövegek különböző feldolgozási módjait határozzák

meg. Mindegyik saját tulajdonságokkal rendelkezik, segítségükkel nem kívánt részeket

szűrhetünk ki a begépelt szövegből (például rosszindulatú HTML elemeket). Sok esetben a

felhasználók nem választhatnak, általában csak egy beviteli forma engedélyezett számukra.

Használatuk csoportokhoz köthető, és egy alapértelmezett forma is megadható, melyet minden

felhasználó elérhet. A beviteli formákat a Webhely beállítása/Beviteli formák menüpont alatt

módosíthatjuk.

Különféle szűrőket alkalmazhatunk az egyes beviteli formákra. A HTML szűréssel

korlátozhatjuk a felhasználók HTML beküldési lehetőségeit. Az URL szűrő átalakítja a

begépelt web és e-mail címeket linkekké, továbbá aktiválhatjuk a Sortörés átalakítót is,

mely a szövegbe írt sortöréseket HTML sortörésekké alakítja (<p> és <br> tagek

alkalmazásával). Találunk itt egy php kiértékelő nevezetű szűrőt is, mellyel php kódokat

futtathatunk, azaz php kódot ágyazhatunk a felvitt tartalomba.

A Beállítás fülre kattintva elvégezhetjük finomhangolást is. Megadhatjuk az URL szűrő

számára a linkek szövegének maximális hosszát. Beállíthatjuk a HTML szűrést is;

megadhatjuk a tiltott HTML elemek kezelési módját, felsorolhatjuk az engedélyezett

HTML tageket, valamint bekapcsolhatjuk a Drupal HTML súgóját. Aktiválhatjuk a

Kéretlen link eltérítőt is, melynek bekapcsolása után a rendszer figyelmen kívül hagyja a

tartalomban elhelyezett összes linket.

Felhasználó kezelés

Az eddigiekben az adminisztrátor egyedül alakította ki a honlapot, egymaga tette meg a

szükséges beállításokat, és vitte fel az oldalra a tartalmakat. Ez idáig kétféle felhasználóval

találkozott a webhely: az adminisztrátorral, aki mindent megtehet az oldallal, és a névtelen,

nem azonosított felhasználókkal, akik csak a publikus tevékenységeket hajthatják végre.

Ahhoz, hogy az oldalt más felhasználók is építhessék, vagy nem szeretnénk bizonyos

tartalmakat mindenki számára elérhetővé tenni, szükség lesz a felhasználók kezelésére.

Page 43: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

41

Felhasználók létrehozása

Első körben meg kell határoznunk, hogy adminisztrátorként csakis mi magunk hozhatunk

létre új felhasználókat, vagy megnyitjuk a regisztrációt bárki számára

(Adminisztráció/Felhasználókezelés/Felhasználó beállításai).

Három lehetőség közül választhatunk:

� Csak a webhely karbantartói hozhatnak létre új felhasználót.

� A webhely látogatói létrehozhatnak felhasználót adminisztrátori jóváhagyás nélkül.

� A látogatók regisztrálhatnak új felhasználót, de csak adminisztrátori elfogadással.

További beállítási lehetőség az e-mail cím ellenőrzés; a biztonság szempontjából érdemes

alkalmazni, ugyanis ezzel ellenőrizhetjük, hogy valós címet adnak-e meg azok, akik

rendszerünkbe szeretnének regisztrálni. Ezen felül megadhatunk regisztrációs irányelveket,

továbbá engedélyezhetjük a tagoknak az egyedi aláírás és kép megadását is.

Új felhasználót az Aminisztráció/Felhasználókezelés/Felhasználók oldalon hozhatunk létre.

Ugyanitt találjuk a rendszer felhasználóinak listáját, adataikat az adminisztrátor bármikor

módosíthatja.

Jogosultságok

A jogosultságok határozzák meg, melyik felhasználó mit tehet meg a webhelyen. A

felhasználók regisztrációjának tehát az egyik legfőbb oka, hogy annyi joggal

rendelkezzenek az oldalon, amennyivel az adminisztrátor felruházza őket. Mivel egy

webhelynek több ezer regisztrált tagja is lehet, lehetetlen lenne minden egyes

felhasználónak külön meghatározni a jogokat. Épp ezért alakították ki, hogy a Drupal

csoportonként lássa el a tagokat jogosultságokkal. Egy tag egyszerre több csoportba is

tartozhat, ekkor a kapott jogok összeadódnak.

Alapértelmezésben két állandó csoport létezik a Drupalban:

� Anonim, be nem jelentkezett látogató

� Azonosított felhasználó

Új csoportot az Adminisztráció/Felhasználókezelés/Csoportok oldalon hozhatunk létre. Itt

található a csoportok listája, melyek neve mellett található jogosultságok szerkesztése

feliratra kattintva adhatók meg a jogosultságok. A beállításokat elvégezhetjük itt is –

Page 44: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

42

csoportonként egyesével –, vagy az Adminisztráció/Felhasználókezelés/Jogosultságok

oldalon összesített formában szerkeszthetjük azokat.

Fontos, hogy az azonosított felhasználónak adott jog minden további, az adminisztrátor

által létrehozott csoportnak is megadja a jogot, hiszen ezen csoportok tagjai is

azonosítottak a rendszerben, vagyis az azonosított felhasználó csoport részeit képezik.

A többi csoport oszlopaiban csak a további speciális jogokat kell bejelölnünk.

Sminkek

A modulokhoz hasonlóan számos sminket letölthetünk az internetről, mellyel egyedi külsőt

varázsolhatunk oldalunknak. Fontos megjegyeznünk, hogy az egyes témák minőségileg

jelentősen eltérnek egymástól. Épp ezért egy egyedi smink alkalmazását követően további

hibajelenségek jelentkezhetnek:

� nem lefordítható szövegek kerültek a sminkbe

� hibás karakter megjelenítés (eltérések a kódolásban)

� az új smink bizonyos kimeneti információkat nem jelenít meg

� bizonyos moduloktól a smink szétesik

� a rendszerben megadottaktól eltérő dátumformátum megjelenítés

Mielőtt bármilyen új "ruhába" bújtatnánk rendszerünket, érdemes az adminisztrációs

sminket beállítanunk valamelyik, a Drupalban megtalálható alap sminkre (érdemes a

telepítés után látható Garland sminket választanunk). Ez azért szükséges, hogy könnyebben

elháríthassuk az esetleges hibákat, melyek egy új kinézet alkalmazása után

jelentkezhetnek.

Keressük meg az Adminisztráció/Webhely beállítása/Adminisztrációs smink oldalt, ahol a

legördülő listából válasszuk ki a rendelkezésre álló témák egyikét.

Telepítés és alkalmazás

A hivatalos Drupal oldal Themes szekciójában (http://drupal.org/project/Themes) találunk

különböző sminkeket. Ne hagyjuk figyelmen kívül a smink verziószámát és minőségi

jellemzőjét! Akárcsak a modulok esetében, itt sem érdemes dev változatot használnunk

rendszerünkben.

Page 45: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

43

18. ábra: A Dark Elegance nevezetű Drupal smink

A telepítés nem sokban tér el a moduloknál alkalmazott folyamattól. A letöltött fájlt egy

arra alkalmas tömörítőprogrammal csomagoljuk ki, majd töltsük fel őket webszerverünk

sites/all/themes alkönyvtárába. Miután ezzel végeztünk, az új sminket az

Adminisztráció/Webhelyépítés/Sminkek oldalon élesíthetjük.

A kívánt téma kiválasztása után testre is szabhatjuk azt. Bekapcsolhatjuk az oldal

logójának, nevének, jelmondatának, missziójának, illetve a webhely ikonjának

megjelenítését, aktiválhatunk keresődobozt, vagy azt, hogy a felhasználók képe

megjelenjen-e a beküldött tartalmak mellett, mindezen felül megadhatunk a beküldési

információkra vonatkozó beállításokat is.

(Megjegyzés: Előfordulhat, hogy bizonyos opciók inaktívak, amennyiben a smink nem

támogatja azokat.)

Eltávolítás

Amennyiben egy sminkre nincs tovább szükségünk, és azt szeretnénk, hogy ne látszódjon a

listában, úgy el kell távolítanunk.

Ha az éppen alkalmazott témától akarunk megszabadulni, elsőként módosítanunk kell az

aktív sminket. Ehhez keressük fel az Adminisztráció/Webhelyépítés/Sminkek oldalt, majd

válasszunk ki egy másik sminket a rendszer számára.

Page 46: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

44

Ha a törölni kívánt külső (már) nem aktív, eltávolíthatjuk. Ez egyszerűen zajlik. Keressük

meg a webszerveren a sites\all\themes könyvtárban a smink mappáját, és egyszerűen

töröljük le.

Kellő programozói (HTML, CSS, php) ismeretekkel új témák is írhatók, illetve

módosítások végezhetők el a Drupalhoz adott meglévő sminkeken. Lecserélhetjük a

képeket és vizuális elemeket, továbbá CSS formázásokat végezhetünk el a sminkhez

tartozó style.css fájl módosításával. A php nyelvben jártasak komolyabb szerkezeti

átalakításokat is végezhetek, továbbá az esetleges hibákat is kijavíthatják.

Drupal 7

2011. január 5-én érkezett meg az internetes felhasználók közé a

Drupal új, 7-es számmal fémjelzett verziója. Ezt követően az 5-ös

újabb verziói már nem kerültek ki a világhálóra, fejlesztése leállt, a

6-os és 7-es változatok kerültek a Drupal fejlesztőinek és

felhasználóinak fókuszába.

Ezen verzió fejlesztése során előtérbe helyezték a felhasználói élmény növelését, valamint

a stabilitás és a sebesség növelését. A Joomla! nagy előnye az volt, hogy már a "csupasz"

alaprendszer is fejlettebb tartalomszerkesztési és médiakezelési lehetőségekkel bírt a

Drupallal szemben – a hetedik főverzióval ez megszűnt.

A Drupal 7 megjelenése mellett napvilágot látott jó néhány fontos modul újabb verziója is,

melyek már kompatibilisek az új generációs CMS-sel. Egyes modulok bekerültek a magba,

ezzel az alaprendszer tudása jelentősen kibővült. A népszerű és igen hasznos Views modul

teljes egészében, az ugyancsak fontos CCK modul jelentős része, valamint a FileField és

ImageField is belekerült a Drupal core-ba – utóbbi kettő kiváltotta a régi Upload modult.

A Drupal 7 újdonságai:

• jobb média- és dokumentumkezelés

• beépített automatikus egységtesztelési környezet

• nagyobb stabilitás

• beépített képkezelés (vágás, méretezés, stb.)

• az egyedi tartalomtípusok és az egyéni adatmezők bekerültek a magba

Page 47: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

45

• közvetlen adatkezelés bármely tartalomtípushoz, felhasználóhoz vagy

taxonómiához

• fejlettebb fordítás támogatás

• továbbfejlesztett felhasználói felület

• a Views modul belekerült a magba

• beépített WYSIWYG szövegszerkesztő

• egyszerűbb rendszerfrissítés

• megnövelt teljesítmény

• továbbfejlesztett gyorstárazás

• finomhangolt kereső

• jobb import/export funkciók

• javított node hozzáférés rendszer

• verziókövetés és frissítés, Drupal 6-ról Drupal 7-re történő költözés támogatása

• adatbázis absztrakciós réteg; többféle adatbázis használatának támogatása

(Microsoft SQL Server, Oracle, MySQL, SQLite, PostgreSQL, MongoDB,

MariaDB)

Rendszerkövetelmények:

� HTTP szerver, ajánlott Apache 2.0 (vagy újabb verzió)

� PHP 5.2.4 (vagy újabb verzió)

� SQL szerver: MySQL 5.0, PostgreSQL 8.3, SQLite 3.4.2 (vagy újabb verziók)

Page 48: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

46

Joomla!

A Joomla! egy PHP nyelven írt, MySQL adatbázist használó,

nyílt forráskódú webes tartalomkezelő rendszer, melyet a

díjnyertes Mambo rendszer programozói fejlesztettek ki.

Valójában a két rendszer megegyezik, illetve a Joomla! a

Mambo újabb verziójának tekinthető.

A rendszer egészére a GNU/GPL licenc érvényes; szabadon felhasználható, szerkeszthető.

A legtöbb CMS-hez hasonlóan a Joomla! is platformtól független; Windows, Linux, Unix-

alapú, vagy más rendszereken is futtatható, amennyiben a számítógépre telepítve vannak a

szükséges programok (PHP, MySQL, Apache, XAMPP, stb.).

Első verziója (v1.0.0) 2005. szeptember 16-án jelent meg – ez a Mambo 4.5.2.3-as

verziójának felelt meg. Két és félévi fejlesztés után, 2008. január 22-én a Joomla!

különvált a Mambo-tól, ekkor jelent meg a rendszer 1.5 verziószámú stabil kiadása. Ez

jelentette projekt új, önálló korszakának kezdetét.

Fejlesztőcsapata egységes alkalmazás keretrendszer létrehozására törekszik, nem a

portálrendszerekre általában jellemző bővítményekre, modulokra. Emiatt alaprendszere

rendkívül hatékony, és mindenki számára megkönnyíti az igény szerinti bővítést. Az alap

Joomla! számos modult tartalmaz, melyek egyedi beállításával teljesen testre szabott

weboldalt alakíthatunk ki.

19. ábra: A Joomla! hivatalos honlapja (http://www.joomla.org)

Page 49: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

47

Nem szükséges a HTML nyelv ismerete, mivel beépített WYSIWYG szövegszerkesztő

segítségével a Wordhöz hasonlóan formázható a szöveg. Nincs szükség a dokumentumok

FTP-n keresztüli feltöltésére; csak el kell menteni a begépelt szöveget, majd publikálni, és

a weboldal, illetve annak tartalma máris megtekinthető bárki számára.

A Joomla! a következő alkalmazási területeket fedi le:

• Portál típusú weboldalak frissítése hírekkel, cikkekkel és képekkel

• MS Word, MS Excel és Acrobat PDF dokumentumok publikálása

• Fejléc, lábléc és hirdetések kezelése

• Szavazóűrlapok készítése

• Linkgyűjtemények kezelése

• GYIK-ok (Gyakran Ismételt Kérdések) kezelése

• Médiafájlok kezelése

• Hírforrások (RSS) kezelése

• Archivált oldalak kezelése

Alapvető tulajdonságok

• Rendszer

o Hatékony sablonkezelő rendszer

o Statisztikák

o Kiváló bővíthetőség

o Saját tartalomkezelő makró nyelv (Mambot)

• Adminisztráció

o Fejlett, elkülönített adminisztrációs rendszer

o Hierarchikus, csoportos felhasználó kezelés

o Média feltöltési és kezelési felület

o Fejlett csomag-, bővítmény-, és sablontelepítő rendszer

o Többféle vizuális tartalomszerkesztő (WYSIWYG)

o Beépített súgó

• Tartalomkezelés

o Egyszerűen szerkeszthető szöveges tartalom

Page 50: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

48

o Szavazások

o Űrlapok

o Lehetőség a tartalmak értékelésére (szavazás, értékelés)

o Időzíthető tartalom megjelenés

A Joomla! architektúrája

20. ábra: A Joomla! architektúrája

Joomla! MVC

21. ábra: A Joomla! MVC felépítése

Page 51: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

49

Joomla! 1.5

A CMS ezen verziója 2008. január 22-én jelent meg, Khepri fedőnévvel. A rendszer sokat

finomult az előző verzióhoz képest; egyszerűsödött a cikkek kezelése, a bővítmények

installálása. Kibővült a karakterkészlet (többek között a jobbról-balra írásirányúakkal), és

új API-t (alkalmazásprogramozási felület) is kapott.

Az alábbiakban a Joomla! 1.5-ös verzióján keresztül ismerjük meg a rendszer telepítését,

konfigurálását, használatát. Lentebb az 1.6-os változat is áttekintésre kerül.

Installálás

Hasonlóan zajlik a telepítés a Joomla! esetében is, mint bármely más CMS-nél. A

http://www.joomla.org.hu oldalról tölthetjük le a rendszert. A felhasználónak itt annyiból

kényelmesebb a dolga, hogy nem szükséges külön a CMS-t és külön a magyarosítást

letöltenie, ugyanis a Joomla! készítői egybeépítették a két csomagot, így a felhasználónak

már nem kell külön a honosítással bajlódnia, a kitömörített fájlokat azonnal másolhatja a

webszerverre.

22. ábra: Az "Új bővítmények" doboz a magyar Joomla! oldalon

További pluszt jelent az is, hogy kétféle fordítás létezik a Joomla!-hoz: egy tegező és egy

magázó változat, a felhasználó a neki tetsző stílusban "szólaltathatja meg" weboldalát. A

lementett fájl .zip kiterjesztésű.

A telepítéssel kapcsolatban segítséget a http://wiki.joomla.org.hu oldalon találunk.

Page 52: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

50

A telepítés lépései

1. Nyelv

Az első oldalon a telepítő, illetve a rendszer nyelvének kiválasztása a feladat. Amennyiben

kijelöltük a listában a kívánt nyelvet, kattintsunk a Tovább gombra – a telepítő egyes

állomásait is ezzel hagyhatjuk el a későbbiekben.

2. Telepítés előtti ellenőrzés

A telepítő leellenőrzi, hogy minden megfelel-e a minimális követelménynek (PHP, Zlib,

XML, MySQL, stb.). Amennyiben valamely elem sorában a Nem szó szerepel, úgy azon

feltételt teljesíteni kell, máskülönben a telepítés nem folytatható. Ha a feltételek

teljesítéséhez szükséges módosításokat végrehajtottuk, az Újraellenőrzés gombra kattintás

után a rendszer újabb vizsgálatot végez el. Amely feltételek rendben vannak, azok sorában

az Igen szó olvasható – mindegyik sorban ennek kell szerepelnie.

A második ellenőrzési egységben a PHP beállításokat részletezi a rendszer. Az első oszlop

az ajánlott, a második a jelenlegi beállítást mutatja. Ha ezek a beállítások nem

megfelelőek, attól a Joomla! működni fog, a telepítés folytatható.

(Megjegyzés: Ingyenes tárhely-szolgáltatónál ezek a beállítások általában nem

módosíthatók.)

3. Licenc

Ebben a pontban a Joomla! végfelhasználói licencszerződése olvasható. Semmilyen

beállítást nem kell megadnunk, innen egyszerűen továbbléphetünk.

4. Adatbázis

Ez a lépés a telepítés legfontosabb állomása. Itt adjuk meg a rendszer működése

szempontjából elengedhetetlen paramétereket.

Jelöljük ki a használt adatbázis típusát – általában mysql, amit a rendszer

alapértelmezésként fel is ajánl. A következő a kiszolgáló neve. Ez szinte minden esetben

localhost. Amennyiben nem az, úgy a beállításról a webszerver szolgáltatójánál kaphatunk

tájékoztatást. A Felhasználónév mezőben a tárhely szolgáltatójánál regisztrált nevet kell

megadnunk. Ha saját számítógépen dolgozunk (pl. Apache-csal), akkor ez a név általában

az alapértelmezett root MySQL felhasználónév. A Jelszó mezőbe a tárhely regisztrációja

Page 53: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

51

során megválasztott jelszavunk kerüljön. Az adatbázis nevét a szolgáltatótól kapjuk –

általában felhasználóinév.szolgáltatóneve.sql (pl.: weboldalam.extra.sql).

A Speciális beállítások alatt kiválaszthatjuk, milyen műveletet hajtson végre a Joomla!, ha

adatbázisunk nem üres. Eldobhatja a létező táblákat, vagy biztonsági mentést készít róluk.

Adhatunk meg a táblaneveinknek előtagot – a telepítő figyelmeztet, hogy ne használjuk a

’_bak’ előtagot, ugyanis azzal a biztonsági mentések neveit látja el a rendszer.

Ha minden adatot helyesen adtunk meg, folytatódhat az installálás.

5. FTP beállításai

Ez a pont a Linux és Unix rendszerek használóit érinti. Nekik szükséges az FTP

fájlrendszer réteg engedélyezése, és az ehhez kapcsolódó beállítások megadása: FTP

felhasználónév, FTP jelszó, FTP gyökérútvonal. Lehetőség van az FTP elérési út

automatikus keresésére, továbbá az FTP beállítások ellenőrzésére.

A Speciális beállítások blokkban megváltoztathatjuk az FTP állomás címét és portját,

azonfelül kérhetjük az FTP jelszó tárolását.

6. Beállítások

Az első mezőben adjuk meg webhelyünk nevét – ez szerepel majd a fejlécben, és a

böngészőablak címében.

A következő egységben adjuk meg az első felhasználó, azaz az oldal adminisztrátorának e-

mail címét és a bejelentkezéshez szükséges jelszavát.

Lentebb két lehetőség kínálkozik fel a telepítés befejezése előtt: alapértelmezett

mintaadatok telepítése vagy áttelepítő parancsfájl betöltése. Ha új felhasználók vagyunk, és

még nem rendelkezünk korábbi Joomla! rendszerrel, vagy kezdő felhasználók vagyunk,

válasszuk az első pontot, majd kattintsunk a Mintaadatok telepítése gombra. Ha már

haladó felhasználók vagyunk, és rendelkezünk Joomla! kompatibilis SQL parancsfájllal,

úgy abból betallózhatjuk beállításainkat. Hasznos lehet, ha régebbi webhelyünket

szeretnénk költöztetni.

7. Befejezés

Az utolsó oldalon tájékoztatást kapunk a telepítés sikerességéről, illetve a további

teendőkről. Hogy megkezdhetjük a rendszer használatát, el kell távolítanunk az installation

mappát a webszerverről – ez afféle óvintézkedés a rendszer biztonsága érdekében, ahogy a

Page 54: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

52

telepítő is leírja. Nem fontos letörölni a könyvtárat, elegendő átnevezni, így a rendszer a

továbbiakban nem érzékeli, viszont szükség esetén egyszerűen visszaállítható.

A Joomla! azt is közli, hogy a bejelentkezéshez szükséges név az admin lesz.

Felül két gombot találunk: a Webhely gombbal már elkészült weblapunkra mehetünk, az

Adminisztráció gombbal pedig megnyitjuk az adminisztrációs felületet, ahol

megkezdhetjük a webhely kiépítését.

Ha még nem töröltük az installation mappát, újabb figyelmeztetést kapunk, és mindaddig

nem dolgozhatunk a webhellyel, amíg nem teszünk eleget a rendszer követelésének.

Telepítés utáni teendők

A telepítés befejező oldaláról két helyre léphetünk tovább:

� Webhely: a telepített rendszer felhasználói oldalának megnyitása

� Adminisztráció: a Joomla! kiszolgáló oldalának (adminisztrációs felületének)

megnyitása

Telepítés után a felhasználói oldalon még nincs lehetőség sem regisztrációra, sem

bejelentkezésre. Ha el szeretnénk kezdeni az éles munkát, a webhely beállításainak

konfigurálását, a felhasználói oldal kiépítését, a kiszolgáló oldalra kell jutnunk. Ehhez

vagy a fentebb említett Adminisztráció gombra kell kattintanunk, vagy – ha már bezártuk a

telepítőt – a következő formában kell begépelnünk oldalunk címét a böngésző címsorába:

http://oldalam.hu/administrator. Adjuk meg felhasználónevünket és jelszavunkat. Ha

szükséges, állítsuk át a nyelvet, majd klikkeljünk a Belépés gombra.

Első lépésként ajánlatos elzárni a felhasználói oldalt a látogatók elől.

Ehhez a következő lépéseket kell elvégeznünk:

1. Kattintsunk a Webhely menü Globális beállítások pontjára, vagy az ikonok között

található Globális beállítások gombra.

2. A Webhely beállításai szekcióban, A webhely offline sorban válasszuk az Igen

opciót.

Ha szeretnénk módosítani az üzemen kívüli üzenetet, tetszés szerint átírhatjuk a

dobozban található szöveget.

3. Kattintsunk a Mentés gombra.

Visszakerülünk a kiszolgáló oldal első lapjára.

Page 55: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

53

4. Az Előnézet linkre kattintva ellenőrizhetjük a változtatást.

23. ábra: A telepített Joomla! rendszer felhasználói oldala offline módban

A második fontos intézkedés, hogy a regisztrációt, illetve a bejelentkezést elérhetővé

tegyük a felhasználói oldalon is. Néhány egyszerű lépéssel ez a probléma is megoldható.

1. Kattintsunk a Bővítmények menü Modulkezelő pontjára.

2. A megjelenő lapon nyomjuk meg az Új gombot.

3. A megjelenő listában jelöljük ki a Belépés modult.

4. Kattintsunk a Következő gombra.

5. A Cím mezőbe gépeljük be a modul címét (ez jelenik meg a modul címsorában).

Ha nem tartunk igényt a cím megjelenítésére, lehetőségünk van annak

kikapcsolására.

A többi opció alapértelmezés szerint megfelelő.

6. Kattintsunk a Mentés gombra.

Visszakerülünk a Modulkezelő lapjára.

7. Az Előnézet linkre kattintva ellenőrizhetjük az új modult.

Page 56: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

54

24. ábra: A Belépés modul a Joomla! felhasználói oldalán

Innentől kezdve a látogatóknak lehetőségük van a regisztrációra, az adminisztrátor pedig

megkezdheti a webhely kiépítését, a tartalmak felvitelét.

Bővítmények, szolgáltatások és kiegészítők

A Joomla! CMS is alkalmas különböző beépülő funkcionalitások kezelésére. A rendszer

tudása növelhető, ha az adminisztrátor a rendszerhez ad olyan kiegészítőket, melyeket az

alapcsomag nem tartalmaz. Számtalan funkcióval ruházhatjuk fel webhelyünket; ehhez

különféle komponensek és modulok telepítése szükséges. Egyedi külsőt varázsolhatunk

felhasználói oldalunknak, ha új sablont alkalmazunk rajta. Amennyiben igény van rá,

módunkban áll a webhely többnyelvűségének biztosítása; a felhasználók tetszés szerint

választhatják meg az oldal nyelvét, ha erre lehetőséget adunk.

Ötféle csoportot különböztethetünk meg:

� komponensek

� modulok

� beépülő modulok

� sablonok

� nyelvek

Page 57: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

55

25. ábra: A Joomla! bővítmények típusai – szemléltetve

Komponensek

A komponens a legnagyobb és legbonyolultabb bővítménytípus a Joomla!-ban,

tulajdonképp mini-alkalmazásnak tekinthető. Két részre osztható: webhely komponens,

mely a felhasználói oldalon jelenik meg; adminisztrátori, mely a kiszolgáló oldalon

funkcionál.

Az oldal fő részeit alkotják; mindegyikhez kapcsolódik menüpont, és minden egyes

menüpont egy-egy komponenst hív meg. A Joomla! weboldalak minden egyes

betöltődésekor egy komponens kerül meghívásra, amely visszaküldi a fő oldaltörzset

(például a com_registration komponens a regisztrációt kezeli).

A komponenseket az adminisztrátori főlap Komponensek menüjében találjuk.

Menüpontok:

� Hirdetés: A Hirdetéskezelőbe visz minket. Meglévő hirdetéseinket szerkeszthetjük,

vagy újakat kreálhatunk, illetve kategorizálhatjuk azokat kategóriák létrehozásával.

Ezek grafikus hirdetések vagy szövegek, amelyek a Joomla! felhasználói oldal

bizonyos részein jelennek meg.

Page 58: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

56

� Kapcsolat: A Kapcsolatkezelőbe irányítja az adminisztrátort, ahol a webhely

kapcsolattartási adatait vihetjük fel (név, cím, telefonszám, e-mail cím). Itt is

lehetőség van kategóriák alkotására.

� Hírcsatornák: A Hírcsatorna-kezelőre hivatkozik, ahol már webhelyek hírcsatornáit

rögzíthetjük rendszerünkben – természetesen kategorizálva, ha úgy szeretnénk.

� Szavazások: Megnyitja a Szavazáskezelőt, ahol egyszerű szavazásokat

készíthetünk, illetve bonyolíthatunk le oldalunkon. A felhasználóknak lehetőségük

lesz a feltett kérdésre válaszolniuk, a megadott válaszlehetőségek közül kiválasztva

egyet. Egy szavazáshoz maximum tizenkét válaszadási lehetőség tartozhat.

� Keresés: A Keresési statisztika képernyő jeleink meg, ahol összegzést kapunk arról,

hány alkalommal kerestek rá egyes kulcsszó-kombinációkra, és hány találatot adtak

vissza a keresések.

� Webes hivatkozások: A Webes hivatkozás kezelőbe kerülünk; más webhelyek

hivatkozásait vehetjük fel, linkgyűjtemény előállítására és kezelésére szolgál,

melynek segítségével az általunk kedvelt és mások számára ajánlott honlapok

címeit gyűjthetjük össze. Itt ugyancsak lehetőség nyílik kategóriákba rendezésre.

Modulok

A modulok kisebb és rugalmasabb alkalmazások. Szerepük az oldal felépítésében,

megjelenítésében, elrendezésében van. A különféle sablonok különböző modul

elrendezéseket valósítanak meg.

Néha kapcsolódnak komponenshez is (például a Legfrissebb hírek, amely a com_content

komponenshez kapcsolódik; a legújabb tartalmi elemeket jeleníti meg listaként).

Menüpontokhoz rendelhetjük őket, azaz eldönthetjük, hogy adott menüponthoz

(komponenshez) megjelenjen-e egy bizonyos modul, azonban nem feltétlenül szükséges

komponensekhez, vagy egyáltalán bármihez kötni őket. Tartalmazhatnak HTML kódot

vagy szöveget is.

A modulokat leginkább kis dobozokat alkotnak, melyek egy komponens köré

csoportosulnak (például ilyen a bejelentkezés modul). A lábléc is egy modult testesít meg.

A modulok Vezérlőpultban, a Bővítmények menü Modulkezelő pontja alatt érhető el.

Ha az Új gombra kattintunk, látatjuk, milyen modulokkal bővíthetjük a felhasználói oldalt

(Webhely), vagy épp a kiszolgáló oldalt (Adminisztrátor).

Page 59: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

57

Beépülő modulok

A beépülő modulok nélkülözhetetlenek az eseménykezelésben. A rendszer bővítmények

legfejlettebb típusát képezik.

A Joomla! bármely részének végrehajtásához – legyen az alapfunkció, modul, vagy

komponens – előidézhető egy esemény. Ekkor az eseményhez kapcsolt beépülő modul

kezeli a végrehajtást. A korábbi 1.0-ás verziókban ezen feladatokat a mambotok látták el.

A beépülők listáját a kiszolgáló oldal főmenüjében, a Bővítmények menü Beépülő modul-

kezelő pontja alatt éri el az adminisztrátor (például itt találjuk a TinyMCE nevű

WYSIWYG szövegszerkesztőt).

Sablonok

A sablon biztosítja a Joomla! webhely külső megjelenését; cseréjével megváltoztathatjuk,

hogyan is nézzen ki oldalunk. A sablonok különböző mezőket tartalmaznak, melyekben a

komponensek és modulok megjelennek.

Viszonylag egyszerű megalkotni, módosítani őket (HTML és CSS ismeret szükséges

hozzá), és a lehető legnagyobb rugalmasságot nyújtják az oldal stílusának létrehozásához.

Sok-sok ingyenes Joomla! kinézetet lehet letölteni, de léteznek kereskedelmi sablonklubok

is, melyektől tagsági díj fejében minőségi sablonok vásárolhatók.

Ahhoz, hogy elérjük a rendszer sablonjait, adminisztrációs felületen kattintsunk a

Bővítmények menü Sablonkezelő pontjára.

Nyelvek

A nyelvi csomagok a felhasználói és a kiszolgáló oldal nyelvének módosítását egyaránt

lehetővé teszik. Kétféle nyelvi csomag létezik a Joomla!-hoz: alapcsomag és bővítmény. A

csomagok tartalmaznak egy XML fájlt is, melyek a PDF tartalom generálásához összegzik

a nyelv és a betűtípus információkat. A nyelvi fájlok kulcs/érték párokat tartalmaznak,

ezek a párok teszik lehetővé a statikus szövegláncok fordítását, amelyek a rendszer

forráskódjához rendeltek.

A nyelvek menedzselése a Bővítmények menü Nyelvkezelő menüpontja alatt található.

Bővítmények telepítése és eltávolítása

A különféle bővítményeket többnyire .zip formátumú archívumba csomagolva leljük fel a

világhálón. Ahhoz, hogy a Joomla! használni tudja ezen modulokat, nem elegendő a

Page 60: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

58

tömörített állomány tartalmát feltöltenünk a webszerverre, hanem az adatbázis megfelelő

tábláiba is be kell jegyeznünk őket. Ez elvégezhető kézzel is, de sokkal kényelmesebb, ha a

telepítést választjuk.

Egy bővítmény telepítését a Bővítménykezelő segítségével végezhetjük el, melyet a

Bővítmények menü Telepítés/Eltávolítás pontja alatt érünk el.

26. ábra: A bővítmények telepítésére szolgáló oldal a Joomla!-ban

Több lehetőségünk is van. A telepítendő fájlt nem feltétlenül kell letöltenünk, mindössze a

távoli fájl webcímére van szükségünk, melyet a Telepítési URL mezőbe kell bemásolnunk,

majd a Telepítés gombot megnyomnunk. Amennyiben a telepíteni kívánt bővítmény

tömörített állományát valamilyen háttértárolóról szeretnénk Joomla! rendszerünkhöz adni,

egyszerűen tallózzuk be a fájlt, majd kattintsunk a Fájl feltöltése & Telepítés gombra.

A Modulkezelőben listába rendezve láthatjuk az eddig meglévő modulokat. A kezelő

logikusan két részre osztott menüjének egyike a honlap modulok kezelésére szolgál, másik

menüpontja pedig az adminisztrátori modulokéra. A honlap modulok leginkább abban

különböznek az adminisztrátori moduloktól, hogy nem tartalmaznak adminisztrátori

elemeket, illetve tartalmuk a webes felületen jelenik meg.

A modulok kezelése mindig az adminisztrációs felületen történik. Létrehozhatunk, vagy

törölhetünk egy modult, megváltoztathatjuk általános beállításait (név, hozzáférési szint,

Page 61: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

59

megjelenés helye az oldalon, stb.). Mindegyiknek van egy típusa (pl.: mod_mainmenu),

továbbá különféle paramétereket adhatunk meg nekik.

Adminisztrációs felület

A Joomla! – számos CMS-től eltérően – teljesen elkülönített felületen oldja meg a

weboldal adminisztrációs feladatait. Ezt az alkalmazást nevezik adminisztrációs felületnek

(backend).

Vezérlőpult

A Vezérlőpult segítségével az adminisztrátor könnyen kiismerheti magát a Joomla!

rendszerben. Itt találunk minden, a tartalmak létrehozásával, a felhasználók kezelésével, és

a rendszer hangolásával kapcsolatos beállítást.

A Vezérlőpult megjelenése és elrendezése nagyon hasonlít az e107 admin területéhez. Az

oldal tetején a fejléc található; baloldalán a Joomla! logó és a webhely neve, jobb oldalán a

rendszer verziószáma olvasható.

A fejléc alatt vízszintes menüt találunk, melyben minden opciót megtalálunk,

kategorizálva.

A Webhely alatt hivatkozást találunk a Vezérlőpultra, továbbá megnyithatjuk a

Felhasználókezelőt, a Médiakezelőt, és a Globális beállításokat. A Kilépés paranccsal

elhagyhatjuk az adminisztrációs felületet, befejezhetjük munkánkat.

A Menük alatt a Menükezelőbe navigálhatjuk magunkat. A Menüpont kuka a még nem

véglegesen törölt menüpontokat rejti. A választóvonal alatt az egyes menüket láthatjuk (az

alaprendszer egyetlen menüt tartalmaz, ez a Főmenü).

A Tartalom menü a Cikk-kezelő, és az ahhoz tartozó Cikk kuka egységeket takarja.

Találunk még itt hivatkozást a Szekciókezelő, Kategória-kezelő, és Címlapkezelő részekre

is.

A Komponensek menü már összetettebb. Itt érjük el a jelenlegi hirdetéseket, kapcsolatokat,

hírcsatornákat, webes hivatkozásokat, az aktív szavazásokat, és a keresési statisztikát.

A Bővítmények menü alatt van lehetőségünk a Bővítménykezelő megnyitására, ahol

kiegészítőket telepíthetünk, vagy távolíthatunk el, továbbá módunkban áll a Modulkezelő, a

Beépülő modul-kezelő, a Sablonkezelő, és a Nyelvkezelő megnyitása is.

Page 62: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

60

27. ábra: A Joomla! vezérlőpultja

Az Eszközök menü biztosítja, hogy elolvashassuk bejövő üzeneteinket, vagy új levelet

írhassunk. Lentebb a Tömeges levelek menüponttal találkozunk, melynek segítségével

egyszerre több felhasználónak küldhetünk üzenetet. A Globális visszavétel segítségével a

félbehagyott tartalmakat menedzselhetjük. Az alsó két opcióval a cache tisztítható meg:

Gyorsítótár kiürítése törli a cache összes elemét, míg A lejárt gyorsítótár kiürítése funkció

csak a már nem aktív cache elemektől szabadítja meg a rendszert.

A Súgó menüben a Joomla! súgó érhető el, a Rendszerinformáció menüponttal pedig a

telepített rendszerről kaphatunk részletes leírást (alapinformációk, PHP beállítások,

könyvtárengedélyek, stb.).

A horizontális menütől jobbra hivatkozást találunk a kiszolgáló oldalra; munkánk közben

az Előnézet linkre kattintva ellenőrizhetjük a webhelyen végzett módosításokat. Láthatjuk

az olvasatlan levelek és a bejelentkezett felhasználók számát, a Kilépés linkkel pedig

kijelentkezhetünk a rendszerből.

Az oldal legnagyobb része két blokkra osztott. A baloldali ikonokkal elérjük a rendszer

minden egységét; tulajdonképp ez tartalmazza a Vezérlőpult különböző főbb egységeit.

A jobboldali részben különféle információkat, statisztikákat kapunk; megnézhetjük az

aktív felhasználók listáját, melyek a legnépszerűbb cikkek, a legújabb elemek, és egy

menüstatisztikát is megtekinthetünk.

Az oldal lábléce egy-egy hivatkozást tartalmaz a hivatalos Joomla! weboldalra, és a GNU

honlapjára.

Page 63: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

61

A Vezérlőpult funkciói

� Új cikk

Itt hozható létre új cikk.

Műveletek:

- Előnézet: megnyit egy előugró ablakot, melyben megtekinthetjük, hogyan fest

majd a cikk a felhasználói oldalon (WYSIWYG szerkesztő használata esetén –

mint például a TinyMCE – erre nincs szükség)

- Mentés: menti a változtatásokat, majd átirányít a Cikk-kezelőbe

- Alkalmaz: menti a változásokat, de ugyanazon az oldalon marad

- Bezárás: munkánk megszakítása mentés nélkül (minden nem mentett változás

elvész)

- Súgó: az Új cikk súgójának megnyitása

(Részletesebben a „Tartalom beküldése” témakör taglalja.)

� Cikk-kezelő

A létrehozott cikkek kezelése.

Műveletek:

- Archívumból: egy vagy több cikk archivált állapotának eltávolítása

- Archiválás: egy vagy több cikk archiválása; az archivált cikkek megőrzésre

kerülnek a webhelyen, de nem tehetők közzé, amíg archiválva vannak

- Közzététel: még nem élesített cikkek aktiválása

- Visszavonás: közzétett cikkek deaktiválása

- Áthelyezés: cikkek áthelyezése; új képernyőt nyit meg, melynek baloldalán a

lehetséges célterületek, jobboldalán az áthelyezésre kijelölt cikkek listája

látható

- Másolás: cikkek másolása; új képernyőt nyit meg, melynek baloldalán a

lehetséges célterületek, jobboldalán a másolásra kijelölt cikkek listája látható

- Törlés: kijelölt cikkek törlése; a törölt cikkek előbb a kukába kerülnek, ahonnan

később még visszaállíthatók

- Módosítás: meglévő cikkek szerkesztése

- Új: új cikk létrehozása

- Paraméterek: a cikkekre vonatkozó globális beállítások képernyőjének

megnyitása

Page 64: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

62

- Súgó: a Cikk-kezelő súgójának megnyitása

� Címlapkezelő

Itt szabályozható, hogy mely cikkek és milyen sorrendben jelenjenek meg a címlapon.

Műveletek:

- Archiválás: egy vagy több cikk archiválása; az archivált cikkek megőrzésre

kerülnek a webhelyen, de nem tehetők közzé, amíg archiválva vannak

- Közzététel: még nem élesített cikkek aktiválása

- Visszavonás: közzétett cikkek deaktiválása

- Eltávolítás: kiválasztott elemek eltávolítása a címlapról; az elemek nem

törlődnek, csak a címlapról tűnnek el, más oldalakon továbbra is elérhetőek

lesznek

- Súgó: a Címlapkezelő súgójának megnyitása

� Szekciókezelő:

A Szekciókezelőben módosíthatók a már létező szekciók, illetve hozhatók létre újak.

Műveletek:

- Közzététel: még nem élesített szekciók aktiválása

- Visszavonás: közzétett szekciók deaktiválása

- Másolás: szekciók másolása; új képernyőt nyit meg, melynek baloldalán a

lehetséges célterületek, jobboldalán a másolásra kijelölt szekciók listája látható

- Törlés: kijelölt szekciók törlése

- Módosítás: meglévő szekciók szerkesztése

- Új: új szekció létrehozása

- Súgó: a Szekciókezelő súgójának megnyitása

� Kategória-kezelő

Új kategóriák létrehozása, illetve a létrehozott kategóriák módosítása.

Műveletek:

- Közzététel: még nem élesített kategóriák aktiválása

- Visszavonás: közzétett kategóriák deaktiválása

- Áthelyezés: kategóriák áthelyezése; új képernyőt nyit meg, melynek baloldalán

a lehetséges célterületek, jobboldalán az áthelyezésre kijelölt kategóriák listája

látható

Page 65: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

63

- Másolás: kategóriák másolása; új képernyőt nyit meg, melynek baloldalán a

lehetséges célterületek, jobboldalán a másolásra kijelölt kategóriák listája

látható

- Törlés: kijelölt kategóriák törlése

- Módosítás: meglévő kategóriák szerkesztése

- Új: új kategória létrehozása

- Súgó: a Kategória-kezelő súgójának megnyitása

� Médiakezelő

A feltöltött médiafájlok karbantartására szolgál.

Ez az oldal eltér a többi Vezérlőpult elem oldalától. A Médiakezelő megnyitását követően

egy egyszerű fájlkezelőt kap kézhez az adminisztrátor. Baloldalon a Media könyvtár

fastruktúrája látható – mely fizikailag a webszerver images könyvtára –, jobboldalon az

aktuálisan kijelölt mappa fájljai között lehet mozogni. Utóbbi nézete módosítható: a

Bélyegképek nézet és a Részletek nézet áll rendelkezésre.

Mód van új mappa létrehozására: a mappanév begépelése után a Könyvtár létrehozása

gombra kell kattintani.

Fájl feltöltésére is adott a lehetőség: a kívánt fájl betallózását követően A feltöltés indítása

gombban kezdhetjük meg a folyamatot.

Műveletek:

- Törlés: kijelölt fájlok törlése

- Súgó: a Médiakezelő súgójának megnyitása

� Menükezelő

A Menükezelő felelős a Joomla! menüinek kinézetéért és működéséért.

Műveletek:

- Másolás: menü másolása; a ráklikkelést követően írható be az új menü címe és

modulneve (a cím az, mely a Menükezelőben a menüre hivatkozik, a modulnév

az, mely a Modulkezelőben a modulra hivatkozik)

- Törlés: kijelölt menük törlése

- Módosítás: meglévő menük szerkesztése

- Új: új menü létrehozása

- Súgó: a Menükezelő súgójának megnyitása

Page 66: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

64

� Nyelvkezelő

A Nyelvkezelőben állítható be Joomla! felhasználói és kiszolgáló oldalának

alapértelmezett nyelve.

Műveletek:

- Alapértelmezett: az alapértelmezett nyelv kiválasztása

- Súgó: a Nyelvkezelő súgójának megnyitása

� Felhasználókezelő

Itt tekinthető meg a regisztrált felhasználók listája, továbbá lehetőség van a felhasználók

adatainak módosítására, és új felhasználók hozzáadására is.

Műveletek:

- Kilépés: kijelölt felhasználók kijelentkeztetése

- Törlés: kijelölt felhasználók törlése

- Módosítás: meglévő felhasználók szerkesztése

- Új: új felhasználó létrehozása

- Súgó: a Felhasználókezelő súgójának megnyitása

(Részletesen a „Felhasználó-kezelés” témakör taglalja.)

� Globális beállítások

Ezen az oldalon végezhető el a telepített Joomla! rendszer beállításainak testre szabása.

Műveletek:

- Mentés: menti a változásokat, majd átirányít a Vezérlőpultba

- Alkalmaz: menti a változásokat, de ugyanazon az oldalon marad

- Bezárás: munkánk megszakítása mentés nélkül (minden nem mentett változás

elvész)

- Súgó: a Globális beállítások súgójának megnyitása

(Részletesen a „Globális beállítások” témakör taglalja.)

Globális beállítások

Itt a Joomla! működésének testre szabása, az egész rendszerre kiterjedő beállítások

megadása végezhető el. A változások elmentését követően a configuration.php fájl

tartalma módosul – a biztonság érdekében a mentés után érdemes írásvédetté tenni.

Page 67: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

65

• Webhely

Felhasználói felületre vonatkozó beállítások.

A Webhely beállításai blokkban offline módba rakhatjuk oldalunkat, és megadhatjuk az

ehhez tartozó üzemen kívüli üzenetet. Módosíthatjuk a (telepítés során automatikusan

létrehozott) webhely nevét, ami megjelenik a fejlécen. Beállíthatjuk az alapértelmezett

WYSIWYG szövegszerkesztőt (alapértelmezésben TinyMCE), a listák és hírcsatorna-

tételek számát, és a hírcsatorna e-mail címét.

A Metaadatok beállításai dobozban megadhatjuk a webhely globális meta leírását,

kulcsszavakat a keresőrobotok számára, a cím és a szerző megjelenítésének módját.

A Keresőoptimalizálás beállításai blokkban keresőbaráttá tehetjük a webhely URL-jeit,

bekapcsolhatjuk az utótag URL-hez fűzését, továbbá – Apache szervert használók –

rendelkezhetnek a mod_rewrite használatáról (könnyebben megjegyezhető, "beszédes"

URL-k létrehozásához).

• Rendszer

A rendszer működését szabályzó beállítások.

A Rendszerbeállítások rész mutat egy titkos szót, melyet a Joomla! generált a telepítés

során, biztonsági okokból. Módosíthatjuk a naplózás elérési útját, engedélyezhetjük a

webszolgáltatásokat, és beállíthatjuk a súgókiszolgálót. Utóbbi alapértelmezésben English

(GB) – help.joomla.org, melyet átállíthatunk magyarra: a legördülő menüben keressük meg

a Hungarian – joomla.org.hu sort.

A Felhasználó beállításai blokkban a regisztrációs rendszerrel kapcsolatos beállításokat

adhatjuk meg: a felhasználók regisztrációjának engedélyezése, az újonnan regisztrált

felhasználók típusa, az új felhasználói fiókok aktiválása, és a tagok adatainak

megjelenítése a felhasználói oldalakon.

A Média beállításai egységben a webhelyre feltölthető engedélyezett fájltípusok listáját

adhatjuk meg, kiköthetjük a fájlok maximális méretét (bájtban), megváltoztathatjuk a

média és a képeket tároló könyvtárak elérési útját. Korlátozhatjuk a fájlfeltöltést: teljesen

letilthatjuk, vagy adott felhasználócsoportnak engedélyezhetjük. Beállíthatjuk a MIME

típusok vizsgálatát (alapértelmezés szerint aktív), az engedélyezett és nem engedélyezett

MIME típusok listáját, továbbá a megengedett és mellőzött képfájl típusokat. Itt

kapcsolhatjuk be a Flash feltöltőt is.

A Hibakeresés beállításai két opciót foglal magába: be-, illetve kikapcsolhatjuk a

hibakeresést a rendszerben és a nyelvben.

Page 68: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

66

A Gyorsítótárazás beállításai a cache-re vonatkoznak. Aktiválhatjuk a gyorsítótárazás,

megadhatjuk az időtartamát (percben), és a kezelő típusát.

A Munkamenet beállításai dobozban az egyes munkamenetek élettartamának idejét

szabhatjuk meg (percben), illetve a kezelő típusát választhatjuk meg.

• Kiszolgáló

A kiszolgálóval (szerverrel) kapcsolatos beállítások. Itt a telepítés során megadott

paraméterekkel találkozunk viszont – néhány egyéb opció kíséretében.

A Kiszolgáló beállításai alatt az ideiglenes fájlok könyvtárának elérési útját írhatjuk át,

engedélyezhetjük a GZIP oldaltömörítést, megválaszthatjuk a hibajelentés módját, és az

SSL kényszerítés területét.

A Területi beállítások az időzóna meghatározására szolgál.

Az FTP beállításai az FTP réteg opcióit tartalmazza. Engedélyezhetjük vagy tilthatjuk az

FTP-t. A kiszolgáló nevét az Ügyfélkapura bejelentkezve tudjuk leolvasni a

Rendszeradatok menüpont alatt. A port minden esetben a 21-es. A felhasználónév és jelszó

megegyezik az Ügyfélkapu belépési azonosítóival. A gyökér részhez azt a könyvtárnevet

kell megadni, amelyben a Joomla! oldal megtalálható. Ez általában a domain névvel

megegyező azonosító (például az oldalunk címe oldalam.hu, akkor a mezőbe a /oldalam.hu

elérési utat kell megadni).

Az Adatbázis beállításai blokk a telepítés során megadott adatbázis adatokat foglalja

magában: adatbázis típusa, kiszolgáló neve, felhasználónév és jelszó, adatbázis táblák

előtagja.

A Levelezés beállításai értelemszerűen a levelezéssel kapcsolatos lehetőségeket rejti.

Kiválaszthatjuk a postázó (levélküldés) típusát, megadhatjuk a feladó e-mail címét és nevét

(alapértelmezés szerint ez az adminisztrátor, melynek adatait a Joomla! automatikusan

elhelyezi a megfelelő mezőkben). Amennyiben rendelkezünk a Sendmail postázóval,

megadhatjuk annak pontos elérési útját. Lentebb az SMTP beállításokkal találkozunk:

hitelesítés kérése, biztonság típusa, port száma, SMTP felhasználónév, jelszó, és

kiszolgáló.

Page 69: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

67

Új tartalom létrehozása

Ha bejelentkeztünk a rendszerbe, Vezérlőpulton az Új cikk gombbal hozhatunk létre

tartalmat. A megjelenő oldalon begépelhetjük a tartalom címét, majd a vagylagos címet.

Utóbbival egy meglévő menüpontra mutató hivatkozást hozhatunk létre – ez a dupla

tartalom elkerülése szempontjából lehet fontos.

28. ábra: Új cikk beküldése a Joomla!-ban (felső rész)

Megadhatjuk, hogy a cikk a mentést követően legyen közzétéve, vagy sem, illetve

címlapra kerüljön-e. Amennyiben vannak létrehozott szekcióink és kategóriáink, úgy

azokba besorolhatjuk a cikket.

Ezen opciók alatt találjuk a munkaterületet, mely a Wordre hasonlító WYSIWYG

szövegszerkesztőből áll. A nagy mezőbe a cikk tartalmát írjuk. Felette a

szövegszerkesztőkben megszokott gombokkal találkozunk (igazítás, felsorolás és

számozás, táblázat, stb.).

Alul lehetőségük van az Oldaltörés gomb használatával több oldalra bontani a cikket, a

Bővebben gombbal két részre bontani, bevezetőre és teljes nézetre – ilyenkor szekció- és

kategórianézetben csak a bevezető jelenik meg –, illetve a Kép gomb használatával képet

szúrhatunk be a cikkbe egy egyszerű képfeltöltő segítségével, amely a Joomla!

Médiakezelőjéhez csatlakozik. A Szerkesztő átváltása gombbal megválhatunk a

WYSIWYG szerkesztőtől, és egy egyszerű szövegdobozt kapunk, melyben HTML kódok

segítségével formázhatjuk meg a begépelt szöveget.

Page 70: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

68

29. ábra: Új cikk beküldése a Joomla!-ban (alsó rész)

A munkaterülettől jobbra található blokkban láthatjuk aktuális cikkünk információit;

állapot, találatok, javítások, a létrehozás, valamint a módosítás dátumát. Beállíthatjuk a

cikk további paramétereit: a szerzőt, melynek megadhatunk alternatív nevet is, a

hozzáférési szintet (mely felhasználócsoport érheti el a cikket), a létrehozás dátumát,

valamint a közzététel kezdetét és végét (mely időintervallumban legyen aktív a tartalom).

30. ábra: Cikk információk és paraméterek a Joomla! szerkesztőjében

Mindezen felül, alkalmazhatunk speciális beállításokat is: legyen-e bevezetője a

cikkünknek, megjelenjen-e a szerző, a szekció, vagy a kategórianév, látsszon-e a

létrehozás, módosítás dátuma és időpontja. Megadhatjuk, hogy mely elemek jelenjenek

meg a létrehozott cikkben hivatkozásként (cím, szerző, szekció, kategória), átállíthatjuk

Page 71: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

69

cikkünk nyelvét, valamint aktiválhatjuk a PDF, Nyomtatás, és E-mail ikonokat is. Ha nem

módosítunk semmit, a globális beállítások érvényesülnek a cikken.

A Metaadatok alatt begépelhetünk egy rövid leírást a cikkhez, továbbá megadhatunk

kulcsszavakat, melyek az oldalon történő keresést teszik hatékonyabbá a későbbiekben.

Amennyiben begépeltük cikkünk szövegét, megformáztuk, megszerkesztettük, majd

minden beállítást elvégeztünk rajta, az Mentés gomb segítségével tárolhatjuk a

változásokat. Munkánkat menet közben többször is elmenthetjük az Alkalmaz gombbal. Ha

szeretnénk megtekinteni, hogyan fest majd a tartalom végeredményben a felhasználói

oldalon, az Előnézet gombbal megtehetjük. Ha nem kívánjuk a cikket létrehozni,

kattintsunk a Mégse gombra, mely után a Cikk-kezelőbe visz minket a rendszer. Ha

munkánk során elakadnánk, a Súgó gomb megnyomásával segítséget kérhetünk a

rendszertől.

Felhasználói felület

Szerkezeti felépítés

A Joomla! szerkezete háromszintű: tartalom, kategória, szekció.

Az első szinten található a tartalom. Ezt hozzá kell rendelni egy kategóriához – egy

kategória tartalmazhat egy vagy több tartalmat is. A kategóriákba a dinamikus tartalmak

kerülnek, vagyis azok a tartalmak, melyek folyamatosan változnak, frissülnek (pl. hírek).

Ezek megjelenése a rajtuk, illetve az oldalon alkalmazott moduloktól függ. A kategóriát

hozzá kell rendelni egy szekcióhoz, mely tartalmazhat akár több kategóriát is. A tartalmak,

a kategóriák, valamint a szekciók közvetlenül hozzárendelhetők az egyes menükhöz. A

menü független a struktúrától, tehát lehet több mint háromszintű is.

Amikor létrehozunk egy weblapot, azt különböző tartalmakkal töltjük fel – ezeket később

rendszereznünk kell. A tartalom lehet kategória része is, vagy önállóan is megjelenhet a

menüben (statikus tartalom). A statikus tartalmat nem kell külön rendszerezni; önálló

tartalom, amely megjelenik a menüben, amelyhez integráltuk.

Page 72: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

70

31. ábra: A Joomla! szerkezete

Szerkezeti elemek

1. Főmenü

Ennek a segítségével navigálhatunk a különböző oldalakra (pl. Hírek, Blog, Linkek,

GYIK). Innen bármikor törölhetünk meglévő menüelemeket, illetve hozzáadhatunk újakat.

2. Bejelentkezés modul

Itt léphetünk be az oldalra, hogy a védett tartalmakat is láthassuk, kommentálhassuk

(amennyiben van rá lehetőség), illetve itt regisztrálhatnak a webhelyre a látogatók.

3. Fejléc

A weboldal egyedi fejlécképét (header), a webhely főcímét és alcímét hivatott

megjeleníteni. Elhelyezhetők benne dinamikus és statikus tartalmak egyaránt, valamint

Flash animációk is (pl. diavetítés).

Page 73: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

71

4. Szavazás

Webhelyünkön különféle témákban indíthatunk szavazásokat, melyek ebben a blokkban

kerülnek ki a frontendre.

5. Friss hírek

Linkkatalógus formájában szedi össze a legfrissebb híreket. A dobozban a hírek címe

jelenik meg hivatkozásként, az egyes linkek időrendi sorrendben visszafelé helyezkednek

el (a legfrissebb kerül a legfelső helyre).

6. Népszerű cikkek

A friss hírek formáját követve, szintén linkkatalógust állít össze – a cikkek olvasottsága

alapján. A legolvasottabb kerül az első helyre (legfelülre).

7. Keresés

Segítségével kereshetünk a webhelyen található cikkek, blogbejegyzések, fórumtémák

között.

8. Banner

A banner felületen különböző reklámok elhelyezésére van lehetőség – az egyes reklámok

egyben hivatkozások is a reklámozott termék vagy szolgáltatás oldalára.

32. ábra: Egy alapértelmezett banner a Joomla! frontend oldalán

9. Hirdetés

Egyszerű hirdetések megjelenítésére, illetve azok linkjeinek összegyűjtésére szolgál.

10. Lábléc

Az oldal készítőinek információit, RSS feed linket, hivatkozást a Joomla! hivatalos

honlapjára, valamint XHTML és CSS validációról szóló igazolást tartalmazhat.

Page 74: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

72

11. Tartalom

A webhely legnagyobb egysége; mely a felvitt tartalmakra (híreket, cikkeket) terjed ki.

Általában tartalmazza a tartalom címét, magát a szövegtörzset, a szerző megjelölését, a

létrehozás dátumát, címkéket, valamint hivatkozást a tartalomhoz fűzött hozzászólásokhoz.

Felhasználó kezelés

Mint minden CMS, a Joomla! is elkülöníti az adminisztrációs felületet (backend) a

felhasználói oldaltól (frontend) - ez lényeges szempont a felhasználó kezelés tekintetében.

A Joomla! a phpGACL rendszeren alapul, így hozzáférés vezérlése (ACL, access control

list) is ezen nyugszik, ezért három fő felhasználócsoportot definiál:

• Mindenki: az oldal olyan látogatói, akik semmiféle joggal nem rendelkeznek; csak

a felhasználói oldalon, mindenki számára közzétett (publikus) tartalomhoz

férhetnek hozzá.

• Regisztráltak: a webhely olyan részeinek hozzáférésére jogosultak, melyekhez nem

mindenki férhet hozzá. Három csoportra tagolódik, az egyes csoportok különböző

jogokkal bírnak: szerzők, szerkesztők, közzétevők.

• Speciális: a backendhez és a frontendhez egyaránt hozzáférő felhasználók (kezelők,

adminisztrátorok, főadminisztrátorok).

A telepítés során a rendszer főadminisztrátori jogot ad a telepítést végző személynek, így

ez az ember lesz az, aki majd minden jogosultsággal rendelkezik.

A későbbiekben lehetőség van a felhasználók másik felhasználócsoportba történő

áthelyezésére. Ehhez nyissuk meg a Webhely/Felhasználókezelő menüpont által meghívott

oldalt, ahol keressük meg a mozgatni kívánt tagot. Kattintsunk a nevére, a betöltődő

oldalon a Csoport választómezőben jelöljük ki az új csoportot, majd az eszköztáron

kattintsunk a Mentés vagy az Alkalmaz gombra.

Ha vannak olyan cikkeink, melyek nem mindenki számára láthatóak, akkor a Globális

beállítások képernyő Rendszer fülén, a Felhasználó beállításai részben állítsuk igenre A

felhasználók regisztrálásának engedélyezése beállítást. Ebben az esetben az Új felhasználói

fiók aktiválása opciót is javallott igenre módosítani.

Page 75: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

73

Joomla! 1.6

A Joomla! 1.6-os verziójának első bétaverziója 2010. május

17-én jelent meg. A végleges változatra kevesebb, mint egy

évet kellett várni; az 1.6.0-ás verzió 2011. január 10-én

debütált a CMS hivatalos honlapján.

A fejlesztők a rendszer jelentős részét alapjaitól újjáépítették.

Újabb célokat tűztek ki az új generációs Joomla! számára; egy kiterjesztett hozzáférés

szabályozási rendszer, a többszintű kategóriák megvalósítása, valamint szabványos

Modell-Nézet-Vezérlő (MVC) fejlesztőkörnyezet alkalmazása.

A Joomla 1.6 készítése során nagy hangsúlyt fektettek a fejleszthetőségre; a fejlesztők

immár a tervezés, a telepítés és frissítés valamennyi szakaszában könnyebben tudnak

bővítményeket építeni.

A külső megjelenés, illetve a template-ek területén történt fejlesztések a grafikai tervezők

kezébe ad nagyobb rugalmasságot. A tervezők gyakorlatilag minden kimenetet felül

tudnak bírálni a Joomla! adminisztrációjából. Egyedi adminisztrációs sablonok rendelhetők

hozzá az egyes felhasználókhoz, ami bármilyen speciális igény teljesítését lehetővé teszi a

webmesterek számára.

Számos változtatás és új funkció látott napvilágot:

o új ACL (Access Control List) jogosultság rendszer

1. új felhasználói csoportok létrehozása

2. felhasználók csoportokhoz rendelése

3. csoportok hozzáférési szintekhez rendelése

4. hozzáférési szintek tartalmi elemek tulajdonságaihoz rendelése

o többszintes kategória rendszer

o MooTools v1.2

A MooTools segítségével látványos effektek helyezhetők a rendszerbe.

o a kommentrendszert a Joomla! magba építették

o nincs "Örökölt mód" a Joomla! 1.6-ban

Az örökölt módot a Joomla! 1.5-ben láthattuk először. Célja az volt, hogy a korábbi

bővítmények futhassanak az új verzióban is, de a mód használata jelentős lassulást

okozott, sőt, olykor nem is működött megfelelően.

o teljesen átírt menü- és modulkezelő

Page 76: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

74

o többstílusú variációs lehetőség a sablonoknál (egy sablonnak egyszerre több stílusa

lehet)

o átalakított bővítménykezelő

1. bővítmények automatikus frissítése

2. új bővítmények felfedezése

o URL átirányítási lehetőség

o a szavazáskezelőt kiszedték a Joomla! magból

o megtekintési szintek finomítása, a tartalmak megjelenítésének és szerkesztésének

csiszoltabb hozzáférés szabályozása

o átalakított telepítő, új funkciók a telepítés egyes szakaszaiban

o kibővített nyelvi támogatás

o meghatározható a modulok közzétételének kezdő és záró időpontja

o magasabb szintű modul felügyelet

o új sablonok; szemantikus jelölések alkalmazása

o korszerűbb, egyszerűsített munkafolyamatok

Rendszerkövetelmények:

� Apache v2.x

� PHP v5.2.4 (vagy újabb verzió)

� MySQL v5.0.4 (vagy újabb verzió)

Page 77: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

75

Saját CMS készítése

Tervezés

Minden programfejlesztést egy alapos tervezés előz meg, melynek során a fejlesztő felméri

az igényeket, és meghatározza, milyen feladatokat kell teljesítenie az általa lekódolt

programnak.

Jómagam egy képzeletbeli hírportált (NYF CMS) terveztem, mely néhány egyszerű

funkció ellátására hivatott: tartalmak közzététele, szerkesztése, törlése, valamit

felhasználók regisztrációja, beléptetése a rendszerbe.

Két fő egysége van az oldalnak:

- felhasználói felület: itt az oldal látogatói csak olvashatják a tartalmakat, de nem

szerkeszthetik azokat, valamint nem adhatnak az adatbázishoz új hírelemeket, és

nem törölhetnek a meglévő hírek közül egyet sem

- szerkesztő felület: az oldalra látogató személy a regisztrációt és a belépést követően

megkapja azokat a plusz funkcionalitásokat, melyek segítségével hozzáadhat,

szerkeszthet és törölhet tartalmakat

A portál megvalósítása során főként php kódokat alkalmaztam, de találhatók a forrásban

HTML tagek is, melyekkel néhány statikus tartalom kerül megjelenítésre. Az oldal

kinézetéért egy CSS stíluslap felelős.

Az adatokat egy MySQL adatbázisban tárolom, mivel php kódok segítségével egyszerűen

lehet vele dolgozni, valamint bizonyos SQL parancsok (SELECT, INSERT, CREATE,

DELETE, UPDATE) futtatása is könnyedén megoldható.

Az adatbázis, valamint az egyes adattáblák létrehozásáért szintén egy php kód felelős – ez

lesz a CMS telepítője.

Követelmények

A rendszer fejlesztéséhez és használatához szükséges egy webszerver, egy php értelmező,

valamint egy MySQL kezelő program. Mindezek összehangolására létezik keretrendszer

Page 78: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

76

is, mely csupán egy egyszerű telepítés után használható. Ilyen a XAMPP vagy az AppServ.

Én az utóbbi mellett döntöttem – a CD mellékleten megtalálható.

Telepítést követően a C:\AppServ\www\nyfcms könyvtárban dolgoztam – itt zajlik a

fejlesztés, később a használat is. Ahhoz, hogy a munkát ellenőrizhessem, illetve a

felhasználó megnyithassa a rendszert, tetszőleges böngészőprogram címsorába kell

begépelni a következőt: http://localhost/nyfcms.

Látványterv

33. ábra: Az NYF CMS látványterve

Page 79: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

77

Megvalósítás

Mappaszerkezet

gyökér /admin /includes /install /style

index.php

A fájlt egy php szkripttel kezdjük: meghívjuk az osztályainkat tartalmazó class.php-t, majd

elindítjuk a munkamenetet. Ezt követően példányosítjuk az osztályunkat, és csatlakozunk

az adatbázishoz.

Az adminisztrációhoz tartozó oldalak kódjainak mindegyikét a session_start();

függvénnyel kell kezdeni, hogy a főoldalon megkezdett munkamenet ne szakadjon meg.

<?php require ( 'includes/class.php' ); session_start(); ob_start(); $obj = new sajatCMS (); $obj -> connect (); ?>

A következő kódrészlet a főmenüt valósítja meg. A Főoldal hivatkozás minden oldalon

megjelenik, a Tartalom hozzáadása és a Tartalom szerkesztése hivatkozások csak a

regisztrált is bejelentkezett tagok számára válik láthatóvá.

A CMS többi oldalán is ez a séma lesz érvényben a főmenüre.

<div id="menubar"> <ul id="menu"> <li class="selected"><a href="index.php">F őoldal</a></li> <li> <?php if ($_SESSION[ 'logged_in' ] == true ) { print "<a href=\"admin/add-content.php\">Tartalom hozzáad ása</a>" ; } ?></li>

Page 80: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

78

<li> <?php if ($_SESSION[ 'logged_in' ] == true ) { print "<a href=\"admin/manage-content.php\">Tartalom szer kesztése</a>" ; } ?></li> </ul> </div>

Az alábbi kód a jobb oldali sávon megjelenő modulokat include-olja a rendszerbe:

bejelentkezés modul, Regisztráció gomb, kereső modul, hasznos linkek modul. Ha valaki

belép a rendszerbe, a Regisztráció gomb eltűnik, továbbá megjelenik egy újabb modul,

mely kiírja annak az öt felhasználónak a nevét, akik legutóbb beregisztráltak. Lentebb

áttekintésre kerülnek ezek a modulok is.

Akárcsak a főmenü esetében, az oldalsáv is ezt a mintát használja az összes aloldalon.

<div class="sidebar"> <?php require ( 'login.php' ); require ( 'includes/registration.php' ); print "<br />" ; include ( 'includes/search.php' ); print "<br />" ; include ( 'includes/links.php' ); ?> </div>

A következő kóddarab két feltételből áll: ha nincs aktív bejelentkezés (munkamenet), a

get-content.php kerül meghívásra, azaz az oldal tartalma csak olvasható, nem bővíthető

vagy szerkeszthető. Ha viszont a bejelentkezés munkamenet igaz értékkel tér vissza,

átirányítás történik az admin/index.php-ra, ahol már szerkesztési feladatok is elvégezhetők.

<?php if ( $_SESSION[ 'logged_in' ] != true ) { require ('admin/get-content.php'); } if ( $_SESSION[ 'logged_in' ] == true ) { header ( 'Location: admin/index.php' ); } ?>

config.php

Ebből a fájlból olvasom ki az adatbázis csatlakozáshoz szükséges adatokat (host,

felhasználónév, jelszó, adatbázis neve). Mindegyikhez deklarálok egy-egy változót.

Page 81: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

79

A fájl csupán ennyit tartalmaz:

<?php $db_host = "localhost" ; $db_username = "root" ; $db_password = "password" ; $db = "nyfcms" ; ?>

class.php <?php class sajatCMS {

Függvény – adatbázis csatlakozási adatok beállítása:

function set_data () { if ( isset ( $_POST[ 'host' ]) && isset ( $_POST[ 'username' ]) && isset ( $_POST[ 'password' ])) { $file = "../includes/config.php" ;

A config.php tartalmának törlése, mielőtt új adatokat mentünk bele:

$fp = fopen( "../includes/config.php" , "w" ); fwrite( $fp , "" ); fclose( $fp ); $tofile = "<?php\n\t \$db_host = \"" . $_POST[ 'host' ] . "\";\n\t \$db_username = \"" . $_POST[ 'username' ] . "\";\n\t \$db_password = \"" . $_POST[ 'password' ] . "\";\n\t \$db = \"nyfcms\";\n?>" ; $fp = fopen( $file , "a" ); fwrite( $fp , $tofile ); fclose( $fp ); } }

Függvény – csatlakozás az adatbázishoz:

Ha a csatlakozási paraméterek nem megfelelők (a config.php-ben), átirányítás történik az

install.php-re, egyébként megtörténik a csatlakozás.

function connect () { include ( 'config.php' );

Page 82: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

80

$con = mysql_connect( $db_host , $db_username , $db_password ) or die ( '<meta http-equiv="refresh" content="3; install.php ">' );

UTF-8 kódolás beállítása:

mysql_query( 'SET NAMES utf8' ); mysql_query( 'SET CHARACTER_SET utf8' );

Kiválasztja az adatbázist, amihez csatlakozni szeretnénk (nyfcms), amennyiben nem tud, a

kód futása megszakad:

mysql_select_db( $db , $con ) or die (mysql_error()); }

Függvény – tartalom lekérése az adatbázisból:

A tartalom lekérése sorszám (id) alapján történik. Deklarálok egy $return változót, mely a

kezdőlapra hivatkozik – ez minden egyes bejegyzés alatt megjelenik majd, amikor

rákattintunk a bejegyzés címére.

Ha nem kattintunk egyetlen bejegyzés címre sem, a tartalmak megjelennek a főoldalon – id

alapján csökkenő sorrendben, azaz a legfrissebb kerül a legelső helyre (felülre).

function get_content ( $id = '') { if ( $id != ""): $id = mysql_real_escape_string( $id ); $sql = "SELECT * FROM cms_content WHERE id = '$id'" ; $return = '<p><a href="index.php">Vissza a f őoldalra...</a></p>' ; else : $sql = "SELECT * FROM cms_content ORDER BY id DESC" ; endif ; $res = mysql_query( $sql ) or die (mysql_error());

Itt történik meg az egyes adatmezők kiolvasása (és egyben formázása) a cms_content

táblából. Ha olyan id-t kérünk le a táblából, ami nem létezik, hibaüzenetet kapunk.

if (mysql_num_rows( $res ) != 0): while ( $row = mysql_fetch_assoc( $res )) { print '<h1><a href="index.php?id=' . $row [ 'id' ] . '">' . $row [ 'title' ] . '</a></h1>' ; print '<p>' . $row [ 'body' ] . '</p>' ;

Page 83: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

81

print '<h4>Írta: ' . $row [ 'author' ] . ' | Dátum: ' . $row [ 'date' ] . '</h4>' ; } else : print "<p>A kért oldal nem létezik!</p>" ; endif ; print $return ; }

Függvény – tartalom hozzáadása:

Deklarálom az egyes adatmezőkhöz tartozó változókat (cím, törzs, szerző, dátum).

function add_content ( $p) { $title = mysql_real_escape_string( $p[ 'title' ]); $body = mysql_real_escape_string( $p[ 'body' ]); $author = $_SESSION[ 'nickname' ]; $postdate = date( 'Y-m-d' );

Leellenőrzöm, hogy a cím mező és a törzs szövegdoboz kitöltésre került-e (tartalmaz-e

karaktereket). A felhasználó mindaddig hibaüzenetet kap, amíg nem tölti ki mindkét

beviteli egységet.

Ha mindkét mező kitöltésre került, az új adatokat beszúrom az adatbázisba. A sikerességről

tájékoztatást kap a felhasználó.

if (! $title || ! $body ): if (! $title ): print "<p>Cím megadása kötelez ő!</p>" ; endif ; if (! $body ): print "<p>Törzs megadása kötelez ő!</p>" ; endif ; print '<p><a href="../admin/add-content.php">Próbálja újra!</a></p>' ; else : $sql = "INSERT INTO cms_content VALUES (null, '$title', '$body', '$author', '$postdate')" ; $res = mysql_query($sql) or die (mysql_error()); print "<p>Hozzáadás sikeres!</p>" ; endif ; }

Page 84: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

82

Függvény – tartalom szerkesztése:

Kiolvasom az adatokat a cms_content táblából.

function manage_content () { print '<div id="manage">' ; $sql = "SELECT * FROM cms_content ORDER BY id DESC" ; $res = mysql_query( $sql ) or die (mysql_error()); while ( $row = mysql_fetch_assoc($res)): ?>

Két hivatkozást hozok létre, az egyikkel módosíthatom (update-content.php), a másikkal

törölhetem a meglévő tartalmakat. A megfelelő tartalmat id alapján azonosítom.

<div> <h2 class="title"> <?=$row [ 'title' ] ?></h2> <span class="actions"> <a href= "update-content.php?id= <?=$row [ 'id' ]; ?>"> Szerkesztés </a> | <a href= "?delete= <?=$row [ 'id' ]; ?>"> Törlés </a> </span> </div> <?php endwhile ; print '</div>' ; }

Függvény – tartalom törlése:

Ha egy tartalmat kijelöl a felhasználó törlésre, akkor az ahhoz tartozó id-t jelöli ki az

adattáblában. Törlés esetén az adott sorszámhoz tartozó mezőket törli az adattáblából. A

sikeres törlésről tájékoztatást kap a felhasználó.

function delete_content ( $id ) { if (! $id ): return false ; else : $id = mysql_real_escape_string( $id ); $sql = "DELETE FROM cms_content WHERE id = '$id'" ; $res = mysql_query( $sql ) or die (mysql_error()); print "Törlés végrehajtva!" ; endif ; }

Page 85: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

83

Függvény – tartalom frissítése (módosítások mentése):

Az adattáblából történő kiolvasás után egy – az új tartalom létrehozásánál látott – űrlapot

hozok létre. Az egyes mezőkben megjelenik a hozzájuk tartozó tartalom, melyet a

felhasználó átírhat.

function update_content_form ( $id ) { $id = mysql_real_escape_string( $id ); $sql = "SELECT * FROM cms_content WHERE id = '$id'" ; $res = mysql_query($sql) or die (mysql_error()); $row = mysql_fetch_assoc( $res ); ?> <form method= "post" action= "index.php" > <input type= "hidden" name="update" value= "true" /> <input type= "hidden" name="id" value= "<?=$row['id']?>" > <div> <label for= "title" >Cím: </label> <input type= "text" name="title" id= "title" value= " <?=$row['title']; ?>" /> </div> <br /> <div> <label for= "body" >Törzs: </label> <textarea name= "body" id= "body" rows= "8" cols= "40"> <?=$row['body']; ?></textarea> </div> <br /> <input type= "submit" name="submit" value= "Módosítás" /> </form> <?php } function update_content ( $p) { $title = mysql_real_escape_string( $p[ 'title' ]); $body = mysql_real_escape_string( $p[ 'body' ]); $id = mysql_real_escape_string( $p[ 'id' ]);

Itt is ellenőrizni kell, hogy nem maradt-e üresen valamelyik beviteli egység. Ha nem, akkor

végrehajtható a módosítás – sikerességéről üzenet kerül kiírásra.

Page 86: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

84

if (! $title || ! $body ): if (! $title ): print "<p>Cím megadása kötelez ő!</p>" ; endif ; if (! $body ): print "<p>Törzs megadása kötelez ő!</p>" ; endif ; print '<p><a href="update-content.php?id=' . $id . '">Próbálja újra!</a></p>' ; else : $sql = "UPDATE cms_content SET title = '$title', body = '$body' WHERE id = '$id'" ; $res = mysql_query($sql) or die (mysql_error()); print "<p>Módosítás befejezve!</p>" ; endif ; } } ?>

register.php <center> <?php include ( 'includes/class.php' ); $obj = new sajatCMS (); $obj -> connect ();

Alapértelmezett időzóna beállítása:

date_default_timezone_set( 'Europe/Budapest' );

Változók deklarálása: felhasználónév (becenév), jelszó (kódolással), jelszó megerősítése

(kódolással), e-mail cím, IP cím, dátum, idő.

if ( isset ( $_POST['registration'])) { $nickname = $_POST[ 'nickname' ]; $password = md5( $_POST[ 'password' ]); $confirm = md5( $_POST[ 'confirm' ]); $email = $_POST[ 'email' ]; $ip = $_SERVER[ 'REMOTE_ADDR']; $date = date( 'Y-m-d' ); $time = date( 'H:i:s' );

Page 87: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

85

A regisztrációs űrlap kitöltöttségének ellenőrzése kerül sorra. Minden egyes hibáról,

hiányosságról értesítést kap a regisztrálni kívánó személy.

if ( $nickname == NULL | $password == NULL | $confirm == NULL | $email == NULL) { print "<b>Minden mez ő kitöltése kötelez ő!</b>" ; } elseif (strlen( $_POST[ 'nickname' ]) < 3) { print "<b>A felhasználónév túl rövid.</b>" ; } elseif (strlen( $_POST[ 'nickname' ]) > 100) { print "<b>A felhasználónév túl hosszú.</b>" ; } elseif (!ereg( '^[0-9a-zA-Z\.\-\_áéíóöüó űÁÉÍÓÖÜŐŰ]+$' , $_POST[ 'nickname' ])) { print "<b>Helytelen felhasználónév formátum.</b>" ; } elseif (strlen( $_POST[ 'password' ]) < 3) { print "<b>A jelszó túl rövid.</b>" ; } elseif (strlen( $_POST[ 'password' ]) > 30) { print "<b>A jelszó túl hosszú.</b>" ; } elseif (strlen( $_POST[ 'email' ]) < 10) { print "<b>A megadott e-mail cím túl rövid.</b>" ; } elseif (strlen( $_POST[ 'email' ]) > 75) { print "<b>A megadott e-mail cím túl hosszú.</b>" ; } elseif ( $_POST[ 'email' ] == (!eregi ("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$" , $_POST[ 'email' ]))) { print "<b>Helytelen e-mail cím formátum.</b>" ; } else { if ( $_POST[ 'password' ] != $_POST[ 'confirm' ]) { print "<b>A két jelszó nem egyezik!</b>" ; }

Page 88: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

86

Felhasználónév és e-mail cím foglaltságának ellenőrzése:

else { if (!get_magic_quotes_gpc()) { $_POST[ 'nickname' ] = addslashes( $_POST[ 'nickname' ]); } $nickcheck = $_POST[ 'nickname' ]; $check_nickname1 = mysql_query( "SELECT nickname FROM cms_user WHERE nickname = '$nickcheck'" ) or die (mysql_error()); $check_nickname2 = mysql_num_rows( $check_nickname1 ); if ( $check_nickname2 != 0) { print "<b>A megadott felhasználónév (" . $_POST[ 'nickname' ] . ") már létezik. Kérem, válasszon másikat!</b>" ; } if (!get_magic_quotes_gpc()) { $_POST[ 'email' ] = addslashes( $_POST[ 'email' ]); } $emailcheck = $_POST[ 'email' ]; $check_email1 = mysql_query ("SELECT email FROM cms_user WHERE email = '$emailcheck'" ) or die (mysql_error()); $check_email2 = mysql_num_rows( $check_email1 ); if ( $check_email2 != 0) { print "<b>A megadott e-mail cím (" . $_POST[ 'email' ] . ") már létezik. Kérem, válasszon másikat!</b>" ; }

Ha minden rendben van az űrlap kitöltésével, beillesztjük az értékeket a cms_user

adattábla megfelelő mezőibe. Természetesen itt is üzenetet kap a felhasználó, hogy

regisztrációja sikeresen befejeződött, majd a rendszer átirányítja a kezdőlapra, ahol

bejelentkezhet.

else { $sql = "INSERT INTO cms_user (nickname, password, email, ip, regdate, regtime) VALUES('$nickname', '$ password', '$email', '$ip', '$date', '$time')" ; mysql_query( $sql ) or die (mysql_error()); print '<meta http-equiv="refresh" content="5; index.php">' ; print "<b>A(z) " . $nickname . " felhasználó regisztrációja sikerült.<br />Most már bejelentkezh et felhasználónevével és jelszavával.<br />Hamarosan átirányítjuk a kezd őoldalra..." ; }

Page 89: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

87

} } } ?>

Bejelentkezés űrlap a következő elemekkel: felhasználónév, jelszó, jelszó megerősítése, e-

mail cím, Regisztráció gomb.

<h1>Regisztráció </h1> <form action= "register.php" method= "post" > <table> <tr> <td align= "right" > Felhasználónév: <input type= "text" size= "15" maxlength= "25" onclick= "this.value='';" onfocus= "this.select()" onblur= "this.value=!this.value?'':this.value;" name="nickname" > </td> </tr> <tr> <td align= "right" > Jelszó: <input type= "password" size= "15" maxlength= "25" onclick= "this.value='';" onfocus= "this.select()" onblur= "this.value=!this.value?'':this.value;" name="password" > </td> </tr> <tr> <td align= "right" > Jelszó meger ősítése: <input type= "password" size= "15" maxlength= "25" onclick= "this.value='';" onfocus= "this.select()" onblur= "this.value=!this.value?'':this.value;" name="confirm" > </td> </tr> <tr> <td align= "right" > E-mail cím: <input type= "text" size= "15" maxlength= "25" onclick= "this.value='';" onfocus= "this.select()" onblur= "this.value=!this.value?'':this.value;" name="email" > </td> </tr> <tr> <td align= "center" > <input type= "submit" value= "Regisztráció" name="registration" > </td> </tr> </table>

Page 90: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

88

</form> </center>

login.php

Ez a fájl felel a tagok bejelentkezéséért.

<?php require ( 'includes/config.php' ); mysql_connect( $db_host , $db_username , $db_password ); mysql_select_db( $db );

Leellenőrzöm a felhasználó által elküldött adatokat (felhasználónév és a kódolt jelszó). Ha

az adatok helyesek és a mezők nem üresek, megtörténik a bejelentkezés, elindul a

munkamenet az adott felhasználónak. A munkamenet a kijelentkezéssel ér véget.

if ( $_SESSION[ 'logged_in' ] != true ) { if (isset( $_POST[ 'login' ])) { $nickname = $_POST[ 'nickname' ]; $password = md5( $_POST[ 'password' ]); $sql = "SELECT * FROM cms_user WHERE nickname='$nickname' AND password='$password'" ; $query = mysql_query( $sql ); if (mysql_num_rows( $query ) != NULL) { $_SESSION[ 'nickname' ] = $_POST[ 'nickname' ]; $_SESSION[ 'logged_in' ] = true ; header( "Location: " . $_SERVER[ 'PHP_SELF' ]); }

Ha valamely mezőt üresen hagyta a felhasználó, vagy rossz jelszót ad meg, értesítést kap

róla – a bejelentkezés természetesen nem történik meg.

else { if ( $nickname == NULL || $password == NULL) { print "Minden mez ő kitöltése kötelez ő!\n" ; } elseif ( $query [ 'password' ] != $password ) { print "Helytelen jelszó!\n" ; } } }

Page 91: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

89

?>

Bejelentkezés űrlap, felhasználónév és jelszó mezővel, valamint a Bejelentkezés gombbal.

<center> <form action= " <?php print $_SERVER[ 'PHP_SELF' ]; ?>" method= "post" > <table> <tr> <td align= "center"> Felhasználónév: </td> </tr> <tr> <td> <input type= "text" name="nickname" /> </td> </tr> <tr> <td align= "center"> Jelszó: </td> </tr> <tr> <td> <input type= "password" name="password" /> </td> </tr> <tr> <td> <center> <input type ="submit" name="login" value= " Belépés " /> </center> </td> </tr> </table> </form> </center> <?php }

Ha épp van aktív bejelentkezés, a fenti űrlap helyén megjelenik a bejelentkezett

felhasználó neve, alatta egy link, mellyel kijelentkezhet. Ha erre kattint, megszakítja a

hozzá tartozó munkamenetét, onnantól csak olvashatja a meglévő tartalmakat.

else { print "<center>Bejelentkezve: " . $_SESSION[ 'nickname' ] . "<br />" ; print "<br />" ; print "<a href=\"../logout.php\">[ Kijelentkezés ]</a></c enter>" ; } ?>

Page 92: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

90

logout.php

Ez a fájl akkor kerül meghívásra, amikor a bejelentkezett felhasználó kilép a rendszerből.

Az ekkor lefutó szkript lezárja a folyamatban lévő munkameneteket, majd átirányítja a

kijelentkezett tagot a kezdőlapra.

<?php session_start(); unset ( $_SESSION[ 'logged_in' ]); unset ( $_SESSION[ 'nick' ]); header( 'Location: index.php' ); ?>

install.php

Ez a fájl akkor kerül lefutásra, ha az adatbázishoz történő csatlakozás nem sikerül:

helytelenek a csatlakozási adatok vagy nem létezik az adatbázis, illetve az abban lévő

táblák.

Az install.php kódjának lényegi része a következő:

<p>A folytatáshoz kattintson a Telepítés gombra gombra ! </b> <table id= "anim_button" width= 0 cellpadding= 0 cellspacing= 0 border= 0> <tr> <td style= "padding-right: 0px" > <a href= "install/step1.php" style= "background-image: url(style/install.png); width: 175px; height: 50px; display: block; "><br/> </a> </td> </tr> </table>

Ez a kód megjelenít egy gombot, melyre kattintva új oldal töltődik be (install/step1.php),

mely a telepítési folyamat első lépése lesz.

step1.php

A fájl kódja egy űrlapot kreál, melynek segítségével a config.php fájlba mentheti a

felhasználó a MySQL csatlakozási adatokat (hoszt, felhasználónév, jelszó, adatbázis neve).

Page 93: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

91

<table width= "400" border= "0" > <tr> <td align= "center" > <form action= "step2.php" method= "post" name="install" > <b> MySQL host: <font color="#FF0000"> * </font></b> <br /> <input type= "text" size= "50" name="host" onclick= "this.value='';" onfocus="this.select()" onblur= "this.value=!this.value?'localhost':this.value;" value= "localhost" style= "margin-left: 10" /> <br /><br /> <b> MySQL felhasználónév: <font color="#FF0000">*</font></b><br /> <input type= "text" size= "50" name="username" onclick= "this.value='';" onfocus="this.select()" onblur= "this.value=!this.value?'root':this.value;" value= "root" style= "margin-left: 10" /> <br /><br /> <b> MySQL jelszó: </b> <br /> <input type= "password" size= "50" name="password" onclick= "this.value='';" onfocus= "this.select()" onblur= "this.value=!this.value?'':this.value;" value= "" style= "margin-left: 10" /> <br /><br /> <input value= " Rögzítés " type= "submit" > </form> </td> </tr> </table>

Ha helyesen töltöttük ki az űrlap mezőit, betöltődik a következő szkript, illetve fájl.

step2.php

Első lépésként az előző oldalon kitöltött űrlapon megadott adatokat beleírja a config.php-

be, hogy később létrejöhessen a MySQL kapcsolat. Az esetleges sikertelenségről

tájékoztatást ír ki a képernyőre.

<?php include ( '../includes/class.php' );

Page 94: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

92

if ( isset ( $_POST[ 'host' ]) && isset ( $_POST[ 'username' ]) && isset ( $_POST[ 'password' ])) { $file = "../includes/config.php" ; $fp = fopen( "../includes/config.php" , "w" ); fwrite( $fp , "" ); fclose( $fp ); $tofile = "<?php\n\t \$db_host = \"" . $_POST[ 'host' ] . "\";\n\t \$db_username = \"" . $_POST[ 'username' ] . "\";\n\t \$db_password = \"" . $_POST[ 'password' ] . "\";\n\t \$db = \"nyfcms\";\n?>" ; $fp = fopen( $file , "a" ); fwrite( $fp , $tofile ); fclose( $fp ); print "Adatbázis beállítások mentése sikeres." ; } else { print "Adatbázis beállítások mentése sikertelen." ; } ?>

A szkript második feladata az adatbázis, valamint a táblák létrehozása.

<?php

UTF-8 kódolás beállítása:

mysql_query( 'SET NAMES utf8' ); mysql_query( 'SET CHARACTER_SET utf8' );

MySQL kapcsolódás megkísérlése:

$con = mysql_connect( "localhost" , "root" , "password" ); if (! $con ) { die ( '<b><i>Csatlakozás sikertelen!</i></b><br />' . mysql_error()); }

Adatbázis létrehozása (nyfcms):

if (mysql_query( "CREATE DATABASE IF NOT EXISTS nyfcms" , $con )) { print "<b><i>Az adatbázis létrehozása sikerült.</i></b><b r />" ; } else {

Page 95: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

93

print "<b><i>Az adatbázis létrehozása sikertelen.</i></b> <br />" . mysql_error(); } mysql_select_db( "nyfcms" , $con );

A cms_content tábla létrehozása az alábbi mezőkkel:

� id – Tartalom sorszáma (automatikus növeléssel)

� title – Tartalom címe (maximum 100 karakter hosszú lehet)

� body – Tartalom törzse

� author – Szerző neve (maximum 50 karakter hosszú lehet)

� date – Tartalom létrehozásának dátuma

$sql = "CREATE TABLE IF NOT EXISTS cms_content ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), title VARCHAR(100) NOT NULL, body LONGTEXT NOT NULL, author VARCHAR(50) NOT NULL, date DATE NOT NULL )" ; mysql_query( $sql , $con ); mysql_close( $con ); ?> <?php $con = mysql_connect( "localhost" , "root" , "password" ); if (! $con ) { die ( '<b><i>MySQL üzenet: Csatlakozás sikertelen!</i></b><br />' . mysql_error()); } else { print "<b><i>Az adatbázis táblák létrehozása sikerült.</i></b><br />" ; }

A cms_user tábla létrehozása az alábbi mezőkkel:

� userID – Felhasználó sorszáma (automatikus növeléssel)

� nickname – Felhasználónév (maximum 100 karakter hosszú lehet)

� password – Jelszó (maximum 30 karakter hosszú lehet)

� email – Felhasználó e-mail címe (maximum 75 karakter hosszú lehet)

� ip – Annak az eszköznek az IP címe, amelyről a regisztráció érkezik

Page 96: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

94

� regdate – Regisztráció dátuma

� regtime – Regisztráció ideje

$sql = "DROP TABLE IF EXISTS cms_user" ; mysql_select_db( "nyfcms" , $con ); $sql = "CREATE TABLE cms_user ( userID MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY K EY, nickname VARCHAR(100) NOT NULL, password VARCHAR(30) NOT NULL, email VARCHAR(75) NOT NULL, ip VARCHAR(20) NOT NULL, regdate DATE NOT NULL, regtime TIME NOT NULL )" ; mysql_query( $sql , $con ); mysql_close( $con ); ?>

Ha minden rendben zajlik le, következik a step3.php futtatása.

step3.php

Ennek a fájlnak csupán a tájékoztatás a lényege: közli a felhasználóval, hogy a telepítés a

végére ért, megkezdheti a CMS használatát. A Befejezés gombra kattintva a főoldalra

(index.php) kerül a felhasználó.

<table id= "anim_button" width= 0 cellpadding= 0 cellspacing= 0 border= 0> <tr> <td style= "padding-right: 0px" > <a href= "../index.php" style= "background-image: url(../style/finish.png); width: 175px; height: 50px; display: block; "><br/> </a> </td> </tr> </table>

Page 97: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

95

about.php

Az about.php segítségével a tagok felvehetik a kapcsolatot a fejlesztővel. Egy e-mail küldő

formról van szó, ahol meg kell adni a nevet, az e-mail címet, és az üzenet szövegét.

<h1>Kapcsolat </h1> <p>Ha bármilyen észrevétele van az oldallal kapcsolatb an, írja meg nekem: </p> <form action= "mailto:[email protected]" method= "post" > <div class="form_settings"> <p><span> Név: </span> <input class= "contact" type= "text" name="your_name" value= "" /> </p> <p><span> E-mail cím: </span> <input class= "contact" type= "text" name="your_email" value= "" /> </p> <p><span> Üzenet: </span> <textarea class= "contact textarea" rows= "8" cols= "50" name="your_enquiry" ></textarea> </p> <p style="padding-top: 15px"><span> &nbsp; </span> <input class= "submit" type= "submit" name="contact_submitted" value= "Küldés" /> </p> </div> </form>

get-content.php

Ennek a fájlnak a tartalmát a főoldalon hívom meg, abban az esetben, ha nincs aktív

bejelentkezés – ez a fájl segít abban, hogy az oldalra látogató nem regisztrált személyek

láthassák a tartalmakat.

<?php if ( isset ( $_GET[ 'id' ])) { $obj -> get_content ( $_GET[ 'id' ]); } else { $obj -> get_content (); } ?>

add-content.php

Ez a fájl akkor nyílik meg és töltődik be, amikor a felhasználó új tartalmat akar felvinni, és

a Tartalom hozzáadása gombra kattint a főmenüben. Az oldal egy formot tartalmaz,

Page 98: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

96

amivel rögzíthető új cikk. Meg kell adni a címet, a törzsöt, majd a Hozzáadás gombbal

menthető az új bejegyzés. Ekkor kerül meghívásra a class.php-ből az add_content

függvény.

<h1><b><i> Tartalom hozzáadása </i></b></h1> <form method= "post" action= "index.php" > <input type= "hidden" name="add" value= "true" /> <div> <label for= "title" >Cím: </label> <input type= "text" name="title" id= "title" /> </div> <br /> <div> <label for= "body" >Törzs: </label> <textarea name= "body" id= "body" rows= "8" cols= "40" ></textarea> </div> <br /> <input type= "submit" name= "submit" value= "Hozzáadás" /> </p> </form>

manage-content.php

Ha a tartalmak melletti opciók közül a törlést választja a felhasználó, meghívásra kerül a

delete_content függvény, ha viszont a szerkesztés mellett dönt, a manage_content

függvény lesz beélesítve.

<h2><b><i> Meglév ő tartalmak listája </i></b></h2> <?php if ( $_GET[ 'delete' ]) { $obj -> delete_content ( $_GET[ 'delete' ]); } $obj -> manage_content (); ?>

Page 99: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

97

update-content.php

Ebben a fájlban az update_content_form hívódik meg, mely ugyanúgy néz ki, mint a

hozzáadáskor látott űrlap. A különbség csupán annyi, hogy az egyes inputokban

megjelennek a kiolvasott tartalmak, amiket módosítani szeretne a felhasználó – azaz az

adott bejegyzés címe és törzse.

<?php $obj -> update_content_form ( $_GET[ 'id' ]); ?>

Ha a form kitöltése, vagyis a módosítás befejeződött, és az adatok elküldésre kerültek, az

update_content függvény végzi el a módosítások adatbázisban történő tárolását.

lastmember.php

Ezzel a modullal megjeleníthetjük az utolsó öt regisztrált nevét csökkenő sorrendben

(mindig a legfrissebb regisztrált neve kerül felülre).

<h2>Utolsó 5 tag </h2> <?php $sql = "SELECT nickname, regdate FROM cms_user ORDER BY re gdate DESC LIMIT 5" ; $res = mysql_query( $sql ) or die (mysql_error()); if (mysql_num_rows( $res ) != 0) { while ( $row = mysql_fetch_assoc( $res )) { print "<b><i>" . $row [ 'nickname' ] . "</i></b>" ; } } ?>

links.php

Ez a modul hasznos linkeket jelenít meg az oldalsávon. A linkekre kattintva a hivatkozott

oldal új böngészőablakban nyílik meg.

<h3>Hasznos linkek </h3> <ul> <li> <a href= "http://www.nyf.hu/" target= "_blank"> Nyíregyhá Főiskola </a> </li> <li> <a href= "http://drupal.hu/" target= "_blank"> Drupal Magyarország </a></li>

Page 100: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

98

<li> <a href= "http://www.joomla.org.hu/" target= "_blank"> Joomla! Magyarország </a> </li> </ul>

registration.php

Dizájnos gomb a regisztrációs form megnyitásához.

<center> <table id= "anim_button" width= 0 cellpadding= 0 cellspacing= 0 border= 0> <tr> <td style= "padding-right: 0px" > <a href= "regtest.php" style="background-image: url(style/registration.png); width: 175px; height: 50px; display: block;" > <br/> </a> </td> </tr> </table> </center>

search.php

Egy egyszerű keresőt helyez el a webhelyen.

<h3>Keresés </h3> <form id= "search_form" action= "#" method= "post" > <p> <input class= "search" type= "text" name="search_field" onclick= "this.value='';" onfocus= "this.select()" onblur= "this.value=!this.value?'Kulcsszavak...':this.value ;" value= "Kulcsszavak..." /> <input type= "button" name="search" value= " OK " /> </p> </form>

Page 101: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

99

Összegzés

Az internet jó ideje az internet a mindennapi élet része, már nem számít különlegességnek,

ha valaki otthonában rendelkezik aktív előfizetéssel. Ennek köszönhetően a világhálón

való aktív részvétel is egyre jobban előtérbe kerül, így már nem csak használjuk, hanem

tartalmakkal aktívan bővítjük az internetet.

Mindezek fényében ma már természetes dolog, hogy a legtöbb komoly vállalat rendelkezik

saját céges honlappal, vagy az, hogy számos hírportál vagy közösségi oldal létezik.

Az általam fejlesztett portál célja, hogy egy vagy több felhasználó szerkeszthesse a

webhely tartalmát különösebb programozási tudás nélkül is. Ez úgy valósulhat meg, hogy

minden egyes funkcionalitáshoz külön kezelőfelületet kell létrehozni, hogy az „admin

szintű” felhasználók csupán néhány kattintással képesek legyenek beállításokat

végrehajtani, tartalmakat létrehozni. Talán ez az egyik oka, hogy a különféle CMS-ek

egyre nagyobb népszerűségre tesznek szert.

A Drupal és Joomla! rendszerek jövője egyértelműen hosszú távú, stabil, fejlődésük

dinamikus, népszerűségük egyre növekvő, és töretlen. Épp ezért nem elegendő csak

használni őket, hanem – az informatika fejlődésével lépést tartva – folyamatosan

fejleszteni kell őket, hogy minél több embert csábítson használatukra.

Page 102: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

100

Felhasznált irodalom

1. Matt Zandstra: Tanuljuk meg a PHP5 használatát 24 óra alatt – Kiskapu Kiadó,

2004.

2. Jesse Feiler: Tanuljuk meg a Drupal használatát 24 óra alatt – Kiskapu Kiadó,

2011.

3. Peter Moulding: PHP haladóknak fekete könyv – Perfact, 2002.

4. Nagy Gusztáv: Webes szabványok v0.1 – Budapest, 2010.

5. Nagy Gusztáv: Drupal 6 alapismeretek – Ad Librium Kft., Budapest, 2010.

6. Nagy Gusztáv: Web programozás I. – Budapest, 2008.

7. Nagy Gusztáv: Webes tartalomkezelő rendszerek 1.0 – Budapest, 2009.

8. Szilágyi György: Webes alkalmazásfejlesztés a Drupal tartalomkezelő rendszer

felhasználásával – Debrecen, 2007.

9. Kerepesi László: Saját fejlesztésű CMS létrehozása – Nyíregyháza, 2009.

10. Lóránt Miklós: Közösségi portálok és a dinamikus web kapcsolata – Debrecen,

2007.

11. Karácsony Erika: A CMS rendszerek magyarországi jövője, az IKreator

pozicionálása és értékesítési lehetőségei – Budapest, 2004.

12. Markert László András: Termék alapú bevételmegosztásos elszámolórendszer

fejlesztése – Budapest, 2007.

13. Modovics Mihály: A WordPress tartalomkezelő rendszer bemutatása – Pécs, 2007.

Page 103: Tarnai László: Webes tartalomkezelő rendszerek felépítése, fejlesztése (Drupal, Joomla!), saját CMS készítése (Nyíregyháza, 2011.)

101

14. 2004 második magyarországi PHP konferencia – Budapest, 2004.

15. Dévai István: Drupal a CMS! – 2007.

16. Lovászi Nándor Zsolt: A Joomla! tartalomkezelő rendszer bemutatása

17. Fábián Zoltán: CMS rendszerek használata az iskolai weboldalak kialakításában

18. Szabó Bálint: A Drupal CMS rendszer felépítése

19. PC World: Dinamikus weblapot Joomlával 1-3. – 2008.

(http://pcworld.hu/dinamikus-weblapot-joomlaval-1-20080919.html)

20. drupal.hu | A Drupal tartalomkezelő magyar honlapja (http://drupal.hu)

21. Magyar Joomla! Felhasználók Nemzetközi Egyesülete (http://www.joomla.org.hu)

22. Drupal - Open Source CMS | drupal.org (http://drupal.org)

23. Joomla! - the dynamic portal engine and content management system

(http://www.joomla.org)

24. Wikipédia, a szabad enciklopédia (http://hu.wikipedia.org)