A Joomla! 1.5 támogatja az Örökölt módot, melynek segítségével a fejlesztők könnyen átalakíthatják régebbi verzióhoz készült bővítményeiket Joomla! 1.5 alá. Mindenesetre ajánlott minél előbb megszabadulni tőle.
Ez a sorozat első része, melyben megismerhetjük, hogyan lehet átírni a meglévő bővítményeket, hogy azok a Joomla! 1.5 keretrendszerét használják.
A cikk nem lenne teljes anélkül, hogy megnéznénk hogyan lehet be-, illetve kikapcsolni az örökölt módot.
Tartalomjegyzék |
Az örökölt mód beépülő modul formájában található meg a Joomla! 1.5-ben, a Rendszer csoportban. Az adminisztrációs felületen válasszuk ki a Bővítmények > Beépülő modul-kezelő menüpontot. A leggyorsabb módja a beépülő megtalálásának, hogy a szűrő mezőbe beírjuk az "örökölt mód" kifejezést.
Alapértelmezésként az örökölt mód nincs engedélyezve. Kattintsunk a piros-fehér X-re az aktiválásához. Fent az eszközsor jobb oldalán egy szöveg jelenik meg, amely tudatja, hogy az örökölt mód mostantól engedélyezve van.
Engedélyeznünk kell az örökölt módot ahhoz, hogy Joomla! 1.0-hoz készült bővítményeket tudjunk telepíteni. A telepítő egy verzióellenőrzést végez, és ha a bővítmény nem Joomla! 1.5-höz készült, figyelmeztet minket, hogy engedélyeznünk kell az örökölt módot.
A Letterman nevű komponensen keresztül kerül bemutatásra az örökölt mód eltvolítása. (Bővebb információ a komponensről a bővítmény oldalán található.) Eddig ezek a lépések kerültek végrehajtásra:
És BUMM! Az ég leszakad, a föld szétnyílik és rengeteg hibaüzenet jelenik meg a képernyőn. Tulajdonképpen ami történik az kevésbé drámai. Egy fehér képernyő tárul elém a következő üzenettel: "Direct Access to this location is not allowed". Hrm.
Az első dolog, hogy néhány konstans neve megváltozott. Ez a konstans leállítja a megjelenítést, a Joomla! egyik legfőbb biztonsági ellenőrzése azok ellen, akik közvetlen eléréssel akarják megnyitni a PHP fájlt.
Könnyen javítható. A szerkesztő segítségével keressünk rá a _VALID_MOS kifejezésre minden fájlban, majd cseréljük le _JEXEC-re. (Arra figyeljünk, hogy csak a telepített komponens fájljaiban cseréljük le, a örölési mód beépülőben ne!) És nem szabad elfelejteni, néha az adminisztrciós felületen lévő komponens hivatkozhat néhány felhasználó oldali komponensre (például egy .class.php fájlra), szóval át kell nézni mind az adminisztrációs, mind a felhasználó oldali fájlokat.
Mi történt ezután: "Fatal Error: Class 'mosDBTable' not found". Ez megint egy egyszerű keresés és csere. Az új osztály melyet használnunk kell a JTable, de a konstruktor nevét is le kell cserélnünk __construct-ra. Például:
class mosLettermanSubscribers extends JTable {
// Sok definiált változófunction __construct( &$database ) {
$this->mosDBTable( '#__letterman_subscribers', 'subscriber_id', $database );
}}Még mindig hibaüzenetet kapunk a $this->mosDBTable sorból. Ezt a hívást le kell cserélni a szülőosztály __construct metódusára így:
class mosLettermanSubscribers extends JTable {
// Sok definiált változófunction __construct( &$database ) {
parent::__construct( '#__letterman_subscribers', 'subscriber_id', $database );
}}Még mindig nem örülhetünk.
Fatal error: Call to a member function setQuery() on a non-object
Első rénézésre egy kicsit ismeretlennek tűnik. Gondolkodhatunk, mi a gond a $database változóval? Jogos kérdés. A válasz az, hogy többé nem létezik globális változóként. A javításához meg kell keresnünk az összes előfordulását a
global $database;
kifejezésnek, és le kell cserélni a következőre:
$database = &JFactory::getDBO();
A JFactory egy nagyszerű osztály az új API-ban. Hozzáférést ad néhány változóhoz anélkül, hogy globális változók használatához folyamodnánk. Ebben az esetben az adatbázishoz való kapcsolódást segíti elő.
Ez eltart egy ideig. A legegyszerűbb módja ha egy olyan fejlesztői környezetben dolgozunk, amely fájlokban tud keresni. Fordítás JText használatával
Még sok alap dolgot kell felfedeznünk ahhoz, hogy kikerüljünk a fehér képernyő birodalmából, de ugorjunk egy kissé érdekesebb dologra, mielőtt befejezzük ezt a részt. Végül is eljutottunk addig a pontig ahol láthatjuk (tulajdonképpen csak akkor, ha a bővítménykezelőben engedélyezzük az örökölt módot):
Notice: Use of undefined constant _CMN_NEW
Rendben. Nos, a proléma az, hogy a régi nyelvi fájl konstansai valami miatt nem töltődtek be. Nem kell nagyon aggódni emiatt, át fogjuk alakítani úgy, hogy az új fordítási rendszert használja. Az 1.5-ös verzió az .ini formátumot használja a fordításokhoz. A bővítményeinkben a JText nevezetű osztályt fogjuk használni a szavak és kifejezések fordításához. Hasonlóan mint ez:
<?php echo JText::_( 'New' );?>
A cikk forrása: The Art of Joomla!