Přihlásit se

Joomla 5.1.0 a Joomla 4.4.4 (17 dub 2024)

Dnes byla uvolněna nová verze Joomla 5.1.0, společně s Joomla 4.4.4. 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
load joomla 4 od Ernst
Joomla Expert
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ř.
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;
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

12. čvn 2024 01:13 #149491
Odpověď od Cony
Moderátor
Chybí ti tam na konci ještě:
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
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

12. čvn 2024 10:11 - 12. čvn 2024 10:12 #149494
Odpověď od Ernst
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

13. čvn 2024 00:54 #149497
Odpověď od Cony
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ů...
Poděkovali: Ernst

Powered by Fórum