|
27 Srpen 2010
Posted in
Články -
Tipy a triky
Pokud jste už zkoušeli vytvořit si nějaké rozšíření pro Joomlu jistě jste již narazili na to, že potřebujete nějaký úkol spouštět v určitou dobu, což je typické pro import externích dat. Možná jste již zkoušeli najít existující rozšíření pro CMS Joomla, která umí pseudo-cron funkci, ale po chvilce zcela jistě zjistíte, že to není to pravé řešení a přitom je vytvoření cron skriptu pro Joomlu celkem jednoduché jak si ukážeme na dalších řádcích.
Nejprve musíme nadefinovat následující tři konstanty:
define( '_JEXEC', 1 ); define( 'JPATH_BASE', '/cesta/k/joomle/' ); define( 'DS', DIRECTORY_SEPARATOR );
Jako první se jedná samozřejmě o konstantu _JEXEC, která je testována v každém souboru, aby se zaručilo, že daný soubor je spouštěn z Joomly, následuje určení adresáře, kde se Joomla nachází na disku a zkrácení zápisu oddělovače adresářů do tvaru v jakém jej používá Joomla.
Pokračujeme vložením(require_once) souborů definujících základní konstanty Joomly a samotný vstupní soubor Joomly framework.php:
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' ); require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
Na následujících dvou řádcích zajistíme získání objektu Joomly a samotné její spuštění funkcí initialise().
$mainframe =& JFactory::getApplication('site'); $mainframe->initialise();
Pokračovat můžeme jak jsme zvyklí v ostatním kódu Joomly. Třeba objekt databáze získáme obvyklým způsobem:
$db=JFactory::getDBO();
Pouze si musíme uvědomit, že konstanty jako třeba JPATH_COMPONENT_ADMINISTRATOR nemáme nadefinované, protože se do Joomly nedostáváme obvyklým způsobem přes komponentu, Rovněž pokud jsme zvyklí získat odkaz na model komponenty třeba v pohledu pomocí $this->getModel(), tak toto zde také neplatí a je nutné jej nejprve naimportovat pomocí require_once, následně vytvořit jeho objekt pomocí operátoru new a až pak zavolat kýženou funkci.
Nyní již zbývá pouze skript nahrát na server a v ovládacím panelu webhostingu nastavit jeho provádění podle zadaného intervalu, případně pokud Joomlu třeba provozujeme na vlastním VPS, tak nastavit jeho provádění příkazem Linuxového shellu crontab -e.
Články


