Přihlásit se

Joomla 5.2.2 Security & Bugfix Release

Joomla 5.2.2 je nyní k dispozici. Jedná se o bezpečnostní vydání pro Joomla 5.x.

Načtení joomla 5

17. lis 2024 20:17 - 17. lis 2024 20:18 #149881
Načtení joomla 5 od Ernst
Joomla Expert
V joomla 3 jsem si často dělal vlastní php, do kterých jsem načetl joomlu a používal její funkce.
V joomla 5 se mi to vůbec nedaří skončím na chybě nepodařilo se načíst aplikaci. 
Nemáte někdo prosím funkční vzor jak to napsat?

Děkuji předem

18. lis 2024 14:09 #149883
Odpověď od Cony
Moderátor
IMHO nejjednodušší způsob je 
- pokud se má jednat o něco volatelného na webu (s vlastní adresou), vytvořit si template override na komponentu com_wrapper a vše řešit v něm
- pokud se má jednat o něco s výstupem na web, tak to samé pro modul mod_custom
- pokud něco pro nějaké větší zpracování dat, použít příkazový řádek, napsat si plugin pro Console
Poděkovali: Ernst

18. lis 2024 16:05 #149884
Odpověď od Ernst
Joomla Expert
díky, nejčastěji používám přepis mod custom, ale prostě by mě zajímalo zda to jde, když to jde v joomle 3 a pokud ne, proč?

Chápu, že příčinou může být nějaké bezpečnostní opatření, ale jde to nebo ne?

Ps někdy používám i vlastní komponentu, ale prostě čisté php s nahráním joomly bývalo nejjednodušší.

18. lis 2024 17:29 #149885
Odpověď od Cony
Moderátor
Nejjednodušší, ale nejméně bezpečné, přehledné apod...
Každopádně stačí tohle:
Code:
<?php define('_JEXEC', 1); include_once __DIR__ . '/includes/defines.php'; include_once __DIR__ . '/includes/framework.php';
Takže např. 
Code:
<?php define('_JEXEC', 1); include_once __DIR__ . '/includes/defines.php'; include_once __DIR__ . '/includes/framework.php'; $container = \Joomla\CMS\Factory::getContainer(); /** @var \Joomla\Database\DatabaseInterface $db */ $db = $container->get('db'); $query = $db->getQuery(true); $query->select('*')   ->from($db->quoteName('#__extensions')); $db->setQuery($query); $extensions = $db->loadObjectList(); foreach ($extensions as $extension) {   echo $extension->name . "\n"; }
Poděkovali: Ernst

18. lis 2024 19:45 #149886
Odpověď od Ernst
Joomla Expert
hele, díky moc, tohle se nedá vygooglit. Ještě se zeptám jak se načte $app. tohle mi nefunguje - 
$app  = Factory::getApplication(); 

19. lis 2024 11:00 #149887
Odpověď od Cony
Moderátor
Stačí se mrknout do /includes/app.php
Code:
$app = $container->get(\Joomla\CMS\Application\SiteApplication::class);
Pokud je to tedy ve frontendu.

Pokud dál pracuješ s kódem, který je závislý na tom Factory::getApplication(), měl bys ještě udělat
Code:
Factory::$application = $app;
Poděkovali: Ernst

Powered by Fórum