Joomla.it Forum
Non solo Joomla... => Sviluppo => : bronco 08 Jan 2009, 03:44:45
-
salve, ho un problema con la creazione di un content plugin con navigazione in ajax.
in pratica tramite javascript richiamo la pagina ajax.php che nel suo interno ha un codice tipo questo:
<?php
define( '_JEXEC', 1 );
//joomla 1.0 compatibilità componente
define( '_VALID_MOS', 1 );
$path =str_replace("\plugins\content", "", dirname(__FILE__));
define('JPATH_BASE', $path );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
require_once ( JPATH_BASE .DS.'libraries'.DS.'joomla'.DS.'plugin'.DS.'helper.php' );
$mainframe =& JFactory::getApplication('site');
$cfg      =& JFactory::getConfig();
$database  =& JFactory::getDBO();
//link sef non funziona!
$link="index.php?option=com_componente&Itemid=".$itemid."&task=lista&id=".$id;
$seflink=JRoute::_($link);
?>
Il problema nasce con JRoute::_ in quanto inserisce prima dell'url /plugin/content/ facendolo diventare tipo questo localhost/plugins/content/component/componente/?task=lista&id=2058
anche JURI::root() mi da localhost/plugins/content/ inveche di localhost.
come faccio a utilizzare JRoute::_ in un file esterno da joomla? ci sto sbattendo la testa da ore :(
grazie dell'aiuto
-
alla fine ho risolto nel modo più semplice, eliminando plugins/content dal link dopo essere passato da JRoute
$link="index.php?option=com_componente&Itemid=".$itemid."&task=lista&id=".$id;
$seflink=JRoute::_($link);
$seflink=str_replace("plugins/content/", "", $seflink);
sicuramente non è il modo più corretto, ma per ora è l'unico modo che ho trovato. Anche per JURI::root() ho usato lo stesso sistema
$livesite = str_replace("plugins/content/", "", JURI::root());
in seguito usando per tutto lo script la variabile $livesite.
Però mi piacerebbe capire perchè aggiunge sempre il percorso dove si trova il file, probabilmente perchè è un file esterno da joomla.