Joomla.it Forum
Non solo Joomla... => Sviluppo => : jomlox 10 Mar 2011, 15:42:04
-
:'( :'( :'( :'(
il mio sito è http://jomcode.altervista.org/portale/
come vedete in alto i valori sono corretti.
il menu però ha valore per essere visto bisogna avere livello utente>200 mentre anche gli ospiti che hanno 0 lo riescono a vedere.
vi posto il codice di ja_templatetools.php
function getCurrentMenuIndex(){
$Itemid = JRequest::getInt( 'Itemid');
$database =& JFactory::getDBO();
$id = $Itemid;
$menutype = 'mainmenu';
$ordering = '0';
$livminutente = '0';
while (1){
$sql = "select parent, menutype, ordering, livminutente from #__menu where id = $id limit 1";
$database->setQuery($sql);
$row = null;
$row = $database->loadObject();
if ($row) {
$menutype = $row->menutype;
$ordering = $row->ordering;
$livminutente = $row->livminutente;
if ($row->parent > 0)
{
$id = $row->parent;
}else break;
}else break;
}
$user =& JFactory::getUser();
//printf("user = " . $user);
//echo $user;
$id2 = $user->get('id',0);
$database2 =& JFactory::getDBO();
$livutente = '0';
$sql2 = "select liv_utente from #__users where id = $id2 limit 1";
$database2->setQuery($sql2);
$row2 = null;
$row2 = $database2->loadObject();
if ($row2){
$livutente = $row2->liv_utente;
}
$sql = 'SELECT count(*) FROM #__menu AS m'
. ' WHERE menutype=' . $database -> Quote($menutype)
. ' AND published=1 AND parent=0 and ordering < ' . $ordering
;
if (isset($user)) {
$aid = $user->get('aid', 0);
//$sql .= " AND access <= '$aid'";
//$livutente = $user->get('liv_utente',0);//mio
//$livutente = $user->liv_utente;//mio
//$sql .= ' AND livminutente < ' . $livutente ;//mio
}
$sql .= ' AND livminutente < ' . $livutente ;//mio
//PRINTF UTILI CHE SI VEDONO A INIZIO PAGINA
printf("livminutente = %d ", $livminutente) ;
printf("livutente = %d ", $livutente) ;
printf("user = %d ", $user) ;
$database->setQuery($sql);
return $database->loadResult();
}
-
while(1){...}
ma che hai scritto??? non ti offendere, non è l'intenzione, ma è strano che funzioni qualcosa. ;D
a parte che mi pare che tu abbia modificato le tabelle di joomla, il che non è una buona idea, ti consiglierei di riscrivere il codice facendo attenzione alla logica... attualmente è un non sense.
ciao,
marco
-
non mi offendo anche perchè stai offendendo i creatori di joomla o di quel template, quel while(1) è già li per conto suo.
io ho solo inserito le variabili che mi servono a me, per questo anche modificando le tabelle di joomla non ne cambio la struttura base, solo mi serve espanderla a mio piacimento.
unico problema è che, pur prendendo i valori corretti dalle tabelle (in questo caso jos_menus e jos_user), la query non lavora secondo la logica scritta..
se hai qualche suggerimento o conosci qualcuno che sa mettere mano al codice mi fai un GRANDE favore..
ti ringrazio in anticipo per il tempo dedicatomi
-
la query funziona perfettamente, solo che non restituisce il menù, ma il numero di voci del menù corrente che precedono la voce di menù selezionata, valore, che, per altro, non è usato da nessuna parte.
per quello che server a te devi agire sul modulo di rendering del menù.
nota che mettere [per ESPERTI], soprattutto in maiuscolo, fa sì che le persone esperte ignorino, come avrai notato, il post.
ciao,
marco
-
accetto la critica e mi scuso, non era per cattiveria.
è diverso tempo che ci lavoro su, per questo diciamo gioco "sporco" per attirare persone che potrebbero sapere la risposta alla mia soluzione, ero in buona fede, scusate ancora.
tornando al problema(nel frattempo ti ringrazio per la gentile attenzione) dove trovo quello di cui parli te, cioè il rendering del menu?
grazie, buona giornata! :)
ps. che babbo, nell'incredula speranza che avessi trovato il pezzo giusto non ho notato il "count(*)" nella query
che vergogna =(
-
il render del menù avviene nel modulo mainmenu (/modules/mod_mainmenu/*).
ciao,
marco
-
Grazie Marco..proverò!
se avrò ancora bisogno spero di poter contare sul tuo prezioso aiuto..
grazie ancora..ciauz!
ps.Buona festa per i 150 anni d'italia!
-
while (1){
$sql = "select parent, menutype, ordering, livminutente from #__menu where id = $id limit 1";
o_O
-
bertoandrea86 sono sconvolto quanto te, ma riscrivo che non è un codice scritto da me, ma già presente nel pacchetto joomla che ho scaricato.
per quanto strano il template funziona =)
-
guardate che while(1) e for(;;) sono costrutti assolutamente validi e usabili. la cosa che criticavo io era la realizzazione del tree traversal che è assolutamente oscena :(
ciao,
marco
-
guardate che while(1) e for(;;) sono costrutti assolutamente validi e usabili.
Sinceramente mai usato while(1) per controllare la condizione da valutare.
Perchè non avrebbesenso usare il while in questo caso
-
infatti in tale caso la condizione di uscita non è controllata dal while.
i loop infiniti si usano quando le condizioni di uscita sono molteplici, proprio per indicare che le stesse vanno cercate all'interno del loop e rendere il codice più leggibile.
ciao.
l'altra condizione era "for(;;){}", prima che l'editor decidesse che era uno smile e non codice... mah.
-
Ok, ora mi è più chiaro!
Grazie :-)