abbiamo uno script PHP personalizzato in esecuzione su JUMI per eseguire e visualizzare alcuni dati.
Lo script personalizzato è accessibile a un URL SEF come
http://www.mysite.com/jumi-script
che è una versione riscritta di
http://www.mysite.com/index.php?option=com_jumi&view=application&fileid=11&Itemid=271
Ora vorremmo filtrare i dati applicando parametri come
category=mycat&place=myplace
come questo
/index.php?option=com_jumi&view=application&fileid=11&Itemid=271&category=mycat&place=myplace
e vorremmo ottenere un URL SEF come questo
/jumi-script/mycat/myplace
ed elabora queste variabili nel mio script con
$mycat = JFactory::getApplication()->input->post->get('category');
$myplace = JFactory::getApplication()->input->post->get('place');
Come lo otteniamo? stiamo testando il
$currentUrl =& JURI::getInstance();
$currentUrl->setVar( 'mycat', $catvalue );
ma stiamo perdendo il resto della stringa di query. È possibile ottenere quanto sopra? Qualche suggerimento?
Grazie
Guardando l'implementazione del router di com_jumi qui https://github.com/BonavalMultimedia/com_jumi/blob/master/com_jumi_bnvl/router.php per me sembra che non gestisca parametri extra quando sef è on (vedi funzione JumiParseRoute).
È necessario modificare questa funzione per verificare i parametri aggiuntivi e aggiungerli a $vars
array, quindi saranno disponibili usando JInput
o JRequest
se utilizzi le versioni di Joomla precedenti alla 3.0
Per controllare i parametri, cerca semplicemente se sono definiti in $segments
parametro.
Per vedere se hai un category
, un place
o entrambi devi determinare i tuoi criteri o archiviare i possibili valori ovunque tu possa verificare con certezza quale valore 'type' sia presente in ogni segmento.
Esempio : il mio criterio è che gli URL siano sempre jumi/categoria/luogo. Poi:
$vars['category'] = $segments[1];
$vars['place'] = $segments[2];
Ovviamente, devi verificare che $segment
Gli indici sono definiti e fanno qualunque controllo tu abbia bisogno.
Forse vorrai produrre URL SEF durante la creazione dei percorsi. Quindi dovresti modificare la funzione JumiBuildRoute
per seguire i tuoi criteri.
Se non si desidera modificare il codice di routing del componente, utilizzare un URL come questo:
http://www.mysite.com/jumi-script?category=mycat&place=myplace
per ottenere la tua sceneggiatura. Ora, entrambi i valori dovrebbero essere accessibili tramite JInput
o JRequest
nelle versioni precedenti di Joomla.
Saluti,
Per il tuo URL /index.php?option=com_jumi&view=application&fileid=11&Itemid=271&category=mycat&place=myplace
:
$JInput = JFactory::getApplication()->input;
$myRequest = $JInput->getArray(array(
'option' =>'',
'view' =>'',
'fileid' =>'',
'Itemid' =>'',
'category'=>'',
'place' =>''
));
O se si desidera filtro l'input:
$myRequest = $JInput->getArray(array(
'option' =>'Word',
'view' =>'alnum',
'fileid' =>'int',
'Itemid' =>'int',
'category'=>'string',
'place' =>'string'
));
ogni input restituirà il valore come tipo filtrato o NULL
se non è presente alcun valore.