it-swarm-eu.dev

Aggiungi i parametri di querystring e genera un URL SEF

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

2
neting.it

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.

Alternativa alla modifica del codice

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,

1
Pep Lainez

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.

0
cwps