Lassan nyakunkon a Joomla! jelenlegi LTS verziójának cseréje, így neki kell kezdeni – ha morogva és zsörtölődve is – a régebbi modulok, komponensek áttekintésének, ki miképp támogatja az új verziót.
Nem látom értelmét elmélkedni a miért kell változtatni kérdésen, hisz a jelenlegi MVC architektúrát továbbra is támogatja a Joomla!, bár az új fejlesztéseket már érdemes a HMVC irányából megközelíteni, és abban elkészíteni (most még csak a szigorúan új fejlesztésekre gondolok). Igen ám, de mi lesz akkor az eddigi fejlesztéseinkkel? Miképp fogja azt a Joomla! 3.x támogatni?
Aki elég bátor eddig is kipróbálhatta, a régi modulokat az új verzióra telepíteni, és bár a megjelenítési réteg változása miatt a felületek nem szépen jelentek meg (visszlát MooTools, helló Bootstrap), mégis alapvetően minden alapszinten működőnek látszott. Mostanáig, amikor is megjelent a Joomla! 3.2 és vele előtérbe helyezték a Framework frissítését. Szerintem sokan jártak úgy – mint én is –, hogy miután a J! 3.2 lassan a következő LTS verzióval egyezővé válik, így elkezdték kisebb-nagyobb oldalaik teszt átállítását. Ennek kapcsán aztán volt ne mulass, hisz számos apró buktatóba lehet belekerülni (de erről majd egy másik cikk fog szólni).
Vettem tehát kedvenc nagy site-mat és elvégeztem a Joomla upgrade-t. Ez alapvetően nem egy túl nehéz dolog, némi telepítés, és egyéb mágiát követően a rendesen testreszabott oldal is megmozdult élni kezdett. Miután ezzel megvoltam, jött a következő lépés, nézzük meg az egyedi fejlesztéseket, miképpen muzsikálnak az új környezetben. Mint mondtam voltak már előzetes tesztjeim, így azt láttam, hogy mennek a dolgok, nem kell mindent előröl kezdeni. Viszont most néhány kattintás után szép üres fehér képernyő fogadott (ugyebár ilyenkor a PHP értelmező hajtott el kódostúl, a búsba…).
Rögtön beugrott, hogy a J! 3.2 megjelenését követően a legnagyobb fórummotor a Kunena is azonnal hasalt, és bő egy hét kellett hozzá, hogy kijavítsák, viszont mindennel együtt gyorsan megvolt, ergó nem lehet valami nagy hiba. Google a mi barátunk alapon kicsit körülnéztem és ráakadtam a megoldásban utat mutató cikkre: Developing a MVC Component/Introduction és ebben a számunkra fontos fejezetre a Migrating Joomla 2.5 to Joomla 3.0.
Ebben a lényeges bejegyzés a következő:
Ne feledjük, hogy
- ahol közvetlenül végezzük a JModel, JView vagy a JController osztályokat, ott mindenhol mostantól a Legacy változatot kell alkalmaznunk, azaz JModel –> JModellLegacy, JView –> JViewLegacy és JController –> JControllerLegacy
- a származtatott osztályokat (pl. JModellList) nem kell így kezelni, azokat már megoldották
- számos régen elavult kódrész eltávolításra került (forráskód szinten vették ki a rendszerből), ezek ha nem törődtünk eddig vele, megnehezíthetik életünket (itt a JParameter a leginkább érdekes elem)
- a DS állandó eltávolításra került a J! 3.0-ból, így ha alkalmazzuk, azt magunknak létre kell hozni
Mindezek a változások a következő kis kódrészletben foglalhatóak össze:
if(!defined('DS')){
define('DS',DIRECTORY_SEPARATOR);
}
//$controller = JController::getInstance('HelloWorld');
$controller = JControllerLegacy::getInstance('HelloWorld');//class HelloWorldViewHelloWorlds extends JView
class HelloWorldViewHelloWorlds extends JViewLegacyclass HelloWorldController extends JControllerLegacy
class HelloWorldModelHelloWorld extends JModelItemLegacy
class HelloWorldModelUpdHelloWorld extends JModelFormLegacy
JRegistry::getValue() now is JRegistry::get()
//Convert sample to JRegistry with LoadJSON - Sample from Joomla 3.0 sourcecode
// $params = new JRegistry;
// $params->loadJSON($this->item->params);
// $this->item->params = $params;$params = new JRegistry;
$params->loadString($item->params);
$item->params = $params;
Frissített minta alkalmazás
Annak érdekében, hogy az új fejlesztési megközelítés könnyebben kezelhető, megérthető legyen a HelloJoomla minta projekt frissítésre került, amit a http://joomlacode.org/gf/project/hellojoomla3/frs/ címről lehet letölteni. E kódban már az új felépítésnek megfelelően a JApplicationWeb és JApplicationCLI kerül alkalmazásra.
Pingback: Saját fejlesztésű komponensek átvitele Joomla 2.5 alól Joomla 3.2 alá–első tapasztalások « Rétikánya blogja