Bevezető

Bevezetés
Az OCMS egy PHP-alapú, webes tartalomkezelő rendszer (Content Management System), amelyet moduláris felépítéssel és rugalmas bővíthetőséggel terveztünk.
Adatbázis-kezelés
Az OCMS elsődlegesen a MySQL adatbázis-kezelő rendszerrel működik. A fejlesztési és tesztelési környezetek kizárólag MySQL-alapú szervereken futottak, és jelenleg is ezen a platformon zajlanak.
Az adatbázis-kapcsolat a PHP PDO (PHP Data Objects) interfészén keresztül valósul meg, amely elméletileg lehetővé teszi más, PDO által támogatott adatbázis-kezelők használatát is, például:
-
Microsoft SQL Server
-
PostgreSQL
-
Oracle
-
Informix
Fontos azonban megjegyezni, hogy ezen adatbázis-rendszerekkel kapcsolatos kompatibilitási tesztek jelenleg nem történtek, így azok használata további validációt igényel.
Template-rendszer
Az OCMS saját fejlesztésű template-megoldást alkalmaz, amelynek központi eleme a HtmlReader osztály.
A sablonfájlok:
-
.tplkiterjesztésűek -
tiszta HTML-alapú struktúrát követnek
-
a keretrendszertől függetlenül is megjeleníthetők böngészőben
A template-fájlok speciális, komment-alapú vezérlőelemeket tartalmazhatnak, amelyek a háttérben futó feldolgozást irányítják. A támogatott szerkezeti elemek közé tartoznak:
-
IFDEF – feltételesen megjelenített blokkok
-
LOOP – ismétlődő és egymásba ágyazható blokkok
-
Változók – szöveg, szám vagy tömb típusú adatmegjelenítés
A megközelítés célja a megjelenítési réteg és az alkalmazáslogika egyértelmű szétválasztása.
Moduláris felépítés
Az OCMS alapmodulokon túlmenően opcionálisan aktiválható modulokat is tartalmaz. Ezek a supervisor jogosultságával rendelkező felhasználók által kapcsolhatók be vagy ki.
A modulrendszer biztosítja:
-
a funkcionalitás rugalmas bővíthetőségét
-
az eltérő projektigényekhez való alkalmazkodást
-
a költséghatékony rendszerösszeállítást
A jelenleg leggyakrabban használt modulok:
-
Űrlapkezelő
-
Földrajzi modul
-
Szálláshely-kezelő
-
Csomagajánlat-kezelő
-
Hírkezelő
Jogosultságkezelés
Az adminisztrációs felületen többszintű jogosultsági rendszer működik, amely lehetővé teszi a felhasználók szerepköralapú hozzáférés-szabályozását.
Könyvtárstruktúra
A modulok fájljai funkciójuk szerint elkülönített könyvtárakban találhatók:
-
/admin– adminisztrációs felülethez tartozó fájlok -
/incés/includes/public– publikus megjelenítéshez kapcsolódó elemek -
/includes/common– adminisztrációs és publikus felületen egyaránt használt közös függvények
Ez a szervezés biztosítja az átlátható struktúrát és a karbantarthatóságot.
Fejlesztéstörténet
Az OCMS fejlesztése hivatalosan 2011-ben indult el, és azóta folyamatos fejlesztés és karbantartás alatt áll.
A rendszer folyamatos fejlesztési modell szerint működik, amelynek célja a stabilitás megőrzése mellett az új funkciók és technológiai fejlesztések fokozatos bevezetése. Az egyes kiadások rendszeres karbantartási és funkcionális frissítéseket tartalmaznak.
A fejlesztés egyik alapelve a visszamenőleges kompatibilitás megőrzése. Különös figyelmet fordítunk arra, hogy az új verziók bevezetése ne igényeljen aránytalan mértékű módosítást a meglévő implementációkban, és a rendszerfrissítések hosszú távon is biztonságosan elvégezhetők legyenek.
A rendszer jelenlegi stabil kiadása: 1.7.44.
A verziók bevezetésével kapcsolatos változtatások, fejlesztések és hibajavítások részletes dokumentációja az alábbi oldalon érhető el: Verziótörténet és változásnapló
Az OCMS célkitűzése
Az OCMS elsődleges célja, hogy egyszerre támogassa a fejlesztők, a dizájnerek és az adminisztrátorok hatékony munkavégzését. A rendszer tervezése során kiemelt szempont volt az egyszerű bővíthetőség és az átlátható működés, miközben a teljesítményből sem engedtünk.
Programozói szempont
Az OCMS egyik legfontosabb jellemzője a rugalmas működésmódosítás.
Számos rendszerfüggvény viselkedése módosítható anélkül, hogy az eredeti implementációhoz hozzá kellene nyúlni. A rendszer nem klasszikus PHP osztályöröklésre épít, hanem egy egyedi, könnyen kezelhető helyettesítési mechanizmust alkalmaz.
Ennek előnyei:
nincs szükség bonyolult osztályhierarchiák kialakítására
egy adott funkció módosításához elegendő csak az érintett függvényhez kapcsolódó kiegészítést elkészíteni
a rendszer magja érintetlen marad, így a frissíthetőség biztosított
Ez a megközelítés egyszerűbbé és gyorsabbá teszi az egyedi fejlesztéseket.
Dizájneri szempont
A dizájnerek munkáját a HtmlReader nevű, egyedi fejlesztésű template-rendszer támogatja.
A HtmlReader sablonjai:
tiszta HTML fájlok
nem tartalmaznak programkódot
nem igényelnek PHP-ismeretet
A sablonokban egy minimalista komment-alapú jelölőrendszer használható, amely a háttérben futó PHP feldolgozást vezérli. A jelölőkészlet szándékosan egyszerű és gyorsan elsajátítható.
Ennek eredményeként:
a frontend fejlesztés és a backend logika egyértelműen elkülönül
a dizájner kizárólag a megjelenésre koncentrálhat
nincs szükség template-nyelv tanulására
Adminisztrátori szempont
Az OCMS adminisztrációs felületeit a használhatóság jegyében terveztük.
Jellemzői:
letisztult, áttekinthető felépítés
logikus menürendszer
minimális technikai előismeret igénye
A rendszer alkalmas arra is, hogy olyan felhasználók kezeljék, akik nem rendelkeznek HTML- vagy CSS-ismeretekkel. Több éles projektben a tartalomkarbantartást teljes mértékben nem technikai háttérrel rendelkező személyek végzik.
Rövid technológiai összefoglaló
Az OCMS PHP programnyelven készült, és elsődlegesen MySQL adatbázis-kezelőt használ.
Szerveroldali követelmények
-
PHP: minimum 5.7
-
Tesztelt verziók: 5.7 – 8.2
-
Éles környezetben fut: PHP 8.2 verzión, stabil működéssel
A fejlesztés során alapelv, hogy a kód kompatibilis legyen az aktuális PHP-verziókkal, ugyanakkor megőrizze a visszamenőleges kompatibilitást a minimálisan támogatott verzióig. Ennek köszönhetően a rendszer eltérő verziószintű szerverkörnyezetekben is megbízhatóan üzemeltethető.
Adatbázis
-
MySQL: minimum 5.7
-
Az adatbázis-kapcsolat a PHP PDO (PHP Data Objects) interfészen keresztül valósul meg.
Kliensoldali technológiák
A kliensoldali működés JavaScript-alapú, amely elsősorban a következő könyvtárra épül:
-
jQuery: v3.7.1
A jQuery használata biztosítja a böngészőfüggetlen DOM-kezelést, az eseménykezelést és az aszinkron (AJAX) kommunikáció támogatását.






