Back to top

Autore Topic: JRoute non inserisce l'Itemid  (Letto 8341 volte)

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
JRoute non inserisce l'Itemid
« il: 13 Set 2010, 09:46:00 »
salve a tutti, ho un piccolo problema con la creazione degli url.

all'interno del mio componente, se creo un url con JRoute che punta al mio componente, č tutto ok.
se invece punto ad un altro componente, non mi viene inserito l'Itemid  :o
premetto che io non uso alcun file di router (l'altro componente si, ma non dovrebbe creare problemi).

mi sono fatto in giro in debug e ho capito pių o meno dov'č l'inghippo.
nell'oggetto JURI č presente la funzione getQuery:

function getQuery($toArray false)
	
{
	
	
if(
$toArray) {
	
	
	
return 
$this->_vars;
	
	
}

	
	
//If the query is empty build it first
	
	
if(
is_null($this->_query)) {
	
	
	
$this->_query $this->buildQuery($this->_vars);
	
	
}

	
	
return 
$this->_query;
	
}


andando a cercare le differenze, ho visto che quando funziona, la variabile _query č nulla e quindi viene creta dalla funzione buildQuery, mentre questo non accade con l'altro tipo di link.
solo che non sono riuscito a capire come mai fa cosė!

qualche aiuto?
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:JRoute non inserisce l'Itemid
« Risposta #1 il: 13 Set 2010, 10:12:00 »
Quindi il problema č nel tuo componente????
Se non specifichi l'itemid joomla non č che lo va ad indovinare a caso c'e bisogno che tu scriva delle utility che gli indicano l'itemid!Non ti far fregare dal fatto che se indichi una voce di menu principale joomla gli inserisce nell'url l'itemid e i link contenuti nella pagina specificata possono prendere quell'itemid.

Scusa se non sono stato chiaro
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:JRoute non inserisce l'Itemid
« Risposta #2 il: 13 Set 2010, 10:30:34 »
ok, quello che dici mi puō tornare, perō in alcuni casi funziona in altri no?
prendiamo un esempio concreto:

link 1: JRoute::_('index.php?option=com_miocomponente')
link 2: JRoute::_('index.php?option=com_altrocomponente')

come mai il primo ha l'item id e il secondo no?
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:JRoute non inserisce l'Itemid
« Risposta #3 il: 13 Set 2010, 10:45:54 »
Citazione
link 1: JRoute::_('index.php?option=com_miocomponente')
Perche lo ereditadalla voce di menu in automatico,
Citazione
link 2: JRoute::_('index.php?option=com_altrocomponente')
Qui perche o non ha alcuna voce di menu dichiarata oppure non ha alcuno strumento per recuperare l'itemid

Io per i miei componenti creo una funzione di helper che mi recupera l'itemid
e quindi faccio un JRoute::_(MYHELPER::getRoute(id)) che mi ritorna index.php?option=com_miocomponente?Ietmid=xxx
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:JRoute non inserisce l'Itemid
« Risposta #4 il: 13 Set 2010, 10:56:13 »
ok, lo farō anch'io.

cmq rileggendo i miei post ho visto che mi sono scordato di dire che i due link si trovano nella solita pagina, quindi come prende l'itemid del primo dovrebbe prendere anche l'itemid del secondo..

bho!
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:JRoute non inserisce l'Itemid
« Risposta #5 il: 13 Set 2010, 11:04:33 »
Purtroppo devi per forza creare una funzione che ti recupera l'itemid senno non ti funzionera mai, come ti ho gia detto non ti far fregare dal fatto che a volte c'e ad a volte no. Se ti puo essere di aiuto per creare una funzione di route guardati quella fornita dal com_content che č molto valida!

Ciao
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:JRoute non inserisce l'Itemid
« Risposta #6 il: 13 Set 2010, 16:24:43 »
Perche lo ereditadalla voce di menu in automatico, Qui perche o non ha alcuna voce di menu dichiarata oppure non ha alcuno strumento per recuperare l'itemid

Io per i miei componenti creo una funzione di helper che mi recupera l'itemid
e quindi faccio un JRoute::_(MYHELPER::getRoute(id)) che mi ritorna index.php?option=com_miocomponente?Ietmid=xxx

solo una domanda:
io pensavo di fare un semplicissimo JRequest::getInt('Itemid') per prendere l'itemid.
esiste un modo pių intelligente/performante?
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:JRoute non inserisce l'Itemid
« Risposta #7 il: 13 Set 2010, 16:34:24 »
Citazione
io pensavo di fare un semplicissimo JRequest::getInt('Itemid') per prendere l'itemid.
esiste un modo pių intelligente/performante?

Si creare una funzione che ti trova l'itemid appropriato in base alle voci di menu che sono presenti, con Jrequest:.getInt non fai altro che prendere l'itemid attuale e schiaffarlo al link, se hai tutti link a pagine che discendono direttamete alla voce superirore ti puo anche andare bene, ma se vuoi puntare ad altre voci di menu non ti funzionera mai.

Nota bene
Se non specifichi l'itemid ti funziona comunque, pero perdi tute le funzioni sul menu ecc ecc che sono tutte legate all'itemid

Ciao 
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:JRoute non inserisce l'Itemid
« Risposta #8 il: 13 Set 2010, 16:43:46 »
ok, nel mio caso dovrebbe essere tutto sotto la solita voce di menų.

giusto per completare la discussione sotto tutti gli aspetti, se dovessi inserire il link ad un'altra voce di menų come posso fare?
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:JRoute non inserisce l'Itemid
« Risposta #9 il: 13 Set 2010, 16:56:06 »
Dipende a cosa puntano questi link, se puntano ad una altra pagina del tuo componente l'unica cosa che puoi fare e di inserirli a mano nel codice, ma non mi sembra fattibile, invece se puntano ad altri componenti che offrono funzioni di routing devi importarle ed utilizzare quelle
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:JRoute non inserisce l'Itemid
« Risposta #10 il: 13 Set 2010, 17:10:41 »
ok grazie mille
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:JRoute non inserisce l'Itemid
« Risposta #11 il: 13 Set 2010, 19:14:31 »
Itemid indica la voce di menų attiva. č pertanto necessario che il link al componente di interesse sia presente in un menų visibile nella pagina. nel caso non esista la voce di menų, JRoute::_() non restituirā l'Itemid.

ps: non puoi usare l'itemid della pagina corrente per creare un link...

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:JRoute non inserisce l'Itemid
« Risposta #12 il: 13 Set 2010, 19:30:49 »
mhm credo sia proprio questo il punto...

l'altro componente non č stato assegnato ad una voce di menų, ma viene sempre richiamato dal mio componente...
ora capisco tante cose  ::)
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:JRoute non inserisce l'Itemid
« Risposta #13 il: 13 Set 2010, 19:56:49 »
allora, ho assegnato "l'altro" ad una voce di menų,
ma il risultato non cambia...

mi sembra di essermi perso qualcosa e che mi stia perdendo in un bicchier d'acqua.
faccio un rapido sunto.

ho creato una voce di menų collegata al mio componente (che chiameremo com_MIO).
questa mostra una specie di pannello di controllo dove ci sono vari link.
tutti sono trattati tramite la funzione JRoute.
quelli che continuano a puntare al mio componente hanno l'itemid, mentre quelli che puntano all'altro non ce l'hanno.

come faccio?
a me servirebbe che l'itemid fosse sempre presente e passato di volta in volta, perchč ho sviluppato un modulo che deve essere visualizzato sono in determinate pagine.
dov'č che mi sono perso?
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:JRoute non inserisce l'Itemid
« Risposta #14 il: 14 Set 2010, 01:35:54 »
Forse ti serve fare un po di chiarezza, JRoute non ti fa tornare l'itemid, č una funzione che ti serve nel momento in cui fai il rewrite degli indirizzi non č che ti trova gli itemid da solo, come ti ho gia detto se l'altro componente supporta funzioni per individuarlo devi usare quelle e quindi dovrai fare JRoute(index.php?option=com_altro_com&itemid=Funzionechetiritornal'itemid)

E l'una e mezza di notte spero di non sparare cazzate

Ciao
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:JRoute non inserisce l'Itemid
« Risposta #15 il: 14 Set 2010, 22:16:02 »
a me servirebbe che l'itemid fosse sempre presente e passato di volta in volta, perchč ho sviluppato un modulo che deve essere visualizzato sono in determinate pagine.

non č l'itemid che determina la pagina, ma la pagina che determina l'itemid.
se l'itemid non č presente nell'url il framework di joomla provvede ad inserirlo nel namespace $_GET: perché questo possa essere fatto č necessario che la pagina richiesta sia presente in almeno un menų.

nel caso tu aggiunga parametri all'url e quindi non sia pių confrontabile con quanto contenuto nella tabella del menų, solo allora devi specificare l'itemid.

prova ad inserire un print_r($_GET) nella pagina di destinazionee vedi.

ciao,
marco

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 



Web Design Bolzano Kreatif