Nová verze Joomla 5.1.4
Dnes byla uvolněna nová verze Joomla 5.1.4, společně s Joomla 4.4.8. Tato verze přináší spoustu nových funkcí, vylepšení v oblasti bezpečnosti a kódu a díky těmto vylepšením i vyšší rychlost.
load joomla 4
11. čvn 2024 21:40 #149490
Mám samostatný php soubor, do kterého chci načíst joomlu 4 a používat její prostředky. V joomle 3 to bylo poměrně jednoduché, např.
ale nevím, jak to udělat v joomle 4 tam tohle nefunguje. Našel jsem řešení přes container
ale nevím jak v tomto případě použít USE, např
protože se mu nějak nenačtou a nemohu použít např. $link = new Uri(Route::_('index.php?.......
podotýákám, že to php je v rootu webu. nedaří se mi k tomu dohledat žádný návod
Code:
<?php
define('_JEXEC', 1);
define('JPATH_BASE', dirname(__FILE__));
define('DS', DIRECTORY_SEPARATOR);
require_once JPATH_BASE.DS.'includes'.DS.'defines.php';
require_once JPATH_BASE.DS.'includes'.DS.'framework.php';
$app = JFactory::getApplication('site');
$doc = JFactory::getDocument();
$session = JFactory::getSession();
$user = JFactory::getUser();
ale nevím, jak to udělat v joomle 4 tam tohle nefunguje. Našel jsem řešení přes container
Code:
<?php
define('_JEXEC', 1);
use Joomla\CMS\Factory;
define('JPATH_BASE', realpath(dirname(__FILE__)));
require_once JPATH_BASE . '/includes/defines.php';
require_once JPATH_BASE . '/includes/framework.php';
$container = \Joomla\CMS\Factory::getContainer();
$container->alias('session.web', 'session.web.site')
->alias('session', 'session.web.site')
->alias('JSession', 'session.web.site')
->alias(\Joomla\CMS\Session\Session::class, 'session.web.site')
->alias(\Joomla\Session\Session::class, 'session.web.site')
->alias(\Joomla\Session\SessionInterface::class, 'session.web.site');
$app = $container->get(\Joomla\CMS\Application\SiteApplication::class);
ale nevím jak v tomto případě použít USE, např
Code:
use Joomla\CMS\Layout\LayoutHelper;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Uri\Uri;
podotýákám, že to php je v rootu webu. nedaří se mi k tomu dohledat žádný návod
12. čvn 2024 01:13 #149491
Odpověď od Cony
![](https://joomlaportal.cz/media/kunena/avatars/resized/size36/users/avatar2026.jpg?1653054499)
Moderátor
Chybí ti tam na konci ještě:
Každopádně tohle je ale dost nešťastný způsob, jak s Joomlou pracovat. Raději bych doporučil nějakou přímou integraci do Joomly, podle toho, co má být výstupem:
- pokud by to měl být skript pro spouštění z příkazového řádku, napsat console plugin
- pokud výstup webu napsat buď vlastní komponentu (není to až tak složité), nebo pro jednodušší výstupy s úspěchem používám template override na komponentě com_wrapper - funkční kód je pak sice v šabloně, což také není úplně košér, ale pro jednoduché výstupy to bohatě stačí
Je pak jistota, že Joomla je zavedená správně jak má, spouští se všechny pluginy jak mají, kontrolují se přístupy, session, apod.
Code:
\Joomla\CMS\Factory::$application = $app;
Každopádně tohle je ale dost nešťastný způsob, jak s Joomlou pracovat. Raději bych doporučil nějakou přímou integraci do Joomly, podle toho, co má být výstupem:
- pokud by to měl být skript pro spouštění z příkazového řádku, napsat console plugin
- pokud výstup webu napsat buď vlastní komponentu (není to až tak složité), nebo pro jednodušší výstupy s úspěchem používám template override na komponentě com_wrapper - funkční kód je pak sice v šabloně, což také není úplně košér, ale pro jednoduché výstupy to bohatě stačí
Je pak jistota, že Joomla je zavedená správně jak má, spouští se všechny pluginy jak mají, kontrolují se přístupy, session, apod.
12. čvn 2024 08:30 #149492
Odpověď od Ernst
![](https://joomlaportal.cz/media/kunena/avatars/nophoto.png)
Joomla Expert
za mě to byl v joomle 3 nejjednodušší způsob, jak napsat nějaké dávkové zpracování nebo kód pro ajax dotaz. v joomle 4 to však zjevně pracuje dost jinak.
Vlastní komponenty si dělám a používám, ale nechtěl jsem zde jimi zaplácávat joomlu.
volání v rámci joomly je také nějaké jiné, nedaří se mi příliš,´.
Příklad: budu mít v šabloně test v /templates/test/html/com_content/category/test.php a nedaří se mi ho volat prostředky joomly - /index.php?option=com_content&view=category&layout=test:test.... mi nefunguje a volá tu pořád blog.php
Vlastní komponenty si dělám a používám, ale nechtěl jsem zde jimi zaplácávat joomlu.
volání v rámci joomly je také nějaké jiné, nedaří se mi příliš,´.
Příklad: budu mít v šabloně test v /templates/test/html/com_content/category/test.php a nedaří se mi ho volat prostředky joomly - /index.php?option=com_content&view=category&layout=test:test.... mi nefunguje a volá tu pořád blog.php
12. čvn 2024 10:11 - 12. čvn 2024 10:12 #149494
Odpověď od Ernst
![](https://joomlaportal.cz/media/kunena/avatars/nophoto.png)
Joomla Expert
tak ten layout v komponentě se mi podařilo vytvořit správně, tak to budu volat v rámci komponenty.
měl jsem tam asi nějakou chybku, vytvořil jsem ho znovu a už jde volat, jak jsem psal výše.
ale stejně by mě zajímalo, jak vytvořit samostatné php třeba v rootu, které by fungovalo obdobně jako v j3
ps, možná mi k tomu layoutu chyběla položka menu
měl jsem tam asi nějakou chybku, vytvořil jsem ho znovu a už jde volat, jak jsem psal výše.
ale stejně by mě zajímalo, jak vytvořit samostatné php třeba v rootu, které by fungovalo obdobně jako v j3
ps, možná mi k tomu layoutu chyběla položka menu
13. čvn 2024 00:54 #149497
Odpověď od Cony
![](https://joomlaportal.cz/media/kunena/avatars/resized/size36/users/avatar2026.jpg?1653054499)
Moderátor
Na AJAX nejlíp plugin typu AJAX
url je pak /index.php?option=com_ajax&plugin=mujplugin
Další variantou v Joomla 5 by byl plugin do API.
Pro přepis v rámci šablony je nejrozumnější com_wrapper - nebude volat řádný další SQL dotazy jako třeba com_content.
A nejjednoduší je vytvořit si na nový layout položku v menu, a tu si pak nastavit. Dokonce lze pak přidat i parametry, takže můžu mít víc položek menu a rozdělit si jejich funkčnost pomocí parametrů...
![:) :)](/media/kunena/emoticons/1.png)
url je pak /index.php?option=com_ajax&plugin=mujplugin
Další variantou v Joomla 5 by byl plugin do API.
Pro přepis v rámci šablony je nejrozumnější com_wrapper - nebude volat řádný další SQL dotazy jako třeba com_content.
A nejjednoduší je vytvořit si na nový layout položku v menu, a tu si pak nastavit. Dokonce lze pak přidat i parametry, takže můžu mít víc položek menu a rozdělit si jejich funkčnost pomocí parametrů...
Poděkovali: Ernst