Joomla.it Forum
Non solo Joomla... => Sviluppo => : francesca.delpiccolo 14 Mar 2010, 19:59:31
-
Ciao,
ho fatto diverse ricerche nel forum ma non sono riuscita a trovare le informazioni che mi servono per cui chiedo il vostro aiuto...
Ho modificato il file "helper.php" del modulo "lastnews", perchè vorrei che nella lista degli articoli fosse visibilmente e graficamente chiaro qual è l'articolo attivo.
Ho usato un IF, ma c'è qualcosa di sbagliato nella condizione:
if($row->access <= $aid){
$lists[$i]->text = "<div class=\"anno\" style=\"color: #000;\">".htmlspecialchars( $row->created_by_alias )."</div><div class=\"gif\"><img src=\"images/loghetto.gif\" /></div><div class=\"nome_progetto\" style=\"color: #000;\">".htmlspecialchars( $row->title )."</div>";
$i++;
} else {
$lists[$i]->text = "<div class=\"anno\">".htmlspecialchars( $row->created_by_alias )."</div><div class=\"gif\"> </div><div class=\"nome_progetto\">".htmlspecialchars( $row->title )."</div>";
$i++;
}
infatti dicendogli "$row->access <= $aid" la condizione risulta true, ma visualizzo tutta la lista allo stesso modo.
Qual è il codice corretto per dirgli "Se l'id-articolo visualizzato è lo stesso id-articolo che c'è nel link" scrivi A altrimenti scrivi B?
Non sono praticissima di PHP, per cui spero di essermi spiegata e spero nel vostro aiuto.
-
ciao francesca,
aid è l'access id dell'utente, non l'id dell'articolo: serve a vedere se l'utente è autorizzato meno a vedere quel contenuto.
ad intuito direi che dovresti usare il metodo ContentParseRoute del router di com_content per ottenere l'id dell'articolo dall'url e poi confrontarlo con $row->id
ciao,
marco
-
Ciao Marco,
ho trovato la funzione nel file router.php di com_content, ho capito che sostanzialmente tale funzione tira fuori i "pezzetti" del link, ma poichè usa uno switch, non so come richiamare la variabile $vars che contenga proprio il valore dell'id_articolo.
Ti riporto la funzione di seguito, mi potresti gentilmente indicare il codice per ottenere l'id_articolo e quindi confrontarlo con $row->id ?
Ho capito qual è il "case" giusto (ovviamente 'article'), ma alla fine della funzione come richiamo qull'esatto valore che serve a me?
function ContentParseRoute($segments)
{
$vars = array();
//Get the active menu item
$menu =& JSite::getMenu();
$item =& $menu->getActive();
// Count route segments
$count = count($segments);
//Standard routing for articles
if(!isset($item))
{
$vars['view'] = $segments[0];
$vars['id'] = $segments[$count - 1];
return $vars;
}
//Handle View and Identifier
switch($item->query['view'])
{
case 'section' :
{
if($count == 1) {
$vars['view'] = 'category';
if(isset($item->query['layout']) && $item->query['layout'] == 'blog') {
$vars['layout'] = 'blog';
}
}
if($count == 2) {
$vars['view'] = 'article';
$vars['catid'] = $segments[$count-2];
}
$vars['id'] = $segments[$count-1];
} break;
case 'category' :
{
$vars['id'] = $segments[$count-1];
$vars['view'] = 'article';
} break;
case 'frontpage' :
{
$vars['id'] = $segments[$count-1];
$vars['view'] = 'article';
} break;
case 'article' :
{
$vars['id'] = $segments[$count-1];
$vars['view'] = 'article';
} break;
case 'archive' :
{
if($count != 1)
{
$vars['year'] = $count >= 2 ? $segments[$count-2] : null;
$vars['month'] = $segments[$count-1];
$vars['view'] = 'archive';
} else {
$vars['id'] = $segments[$count-1];
$vars['view'] = 'article';
}
}
}
return $vars;
}
ps: ho aggiunto un require_once nel file helper.php (mod_latestnews) al router.php di com_content in modo da non "spostare" o toccare la funzione ContentParseRoute.
-
Nessuno riesce ad aiutarmi per favore?
-
:( mi spiace ma al momento sono parecchio sotto con il lavoro. se posso cercherò di aiutarti più in là.
per intanto ti sposto nella sezione più adatta...
ciao,
marco
-
Va bene grazie mille, se nel frattempo qualcun'altro potesse darmi una mano...
Grazie in anticipo!
-
ok, a noi francesca!
allora il codice in helper.php, dalla linea 107 diviene:
if($row->access <= $aid)
{
if ( (JRequest::getVar('option')=='com_content') && (JRequest::getVar('view')=='article') ){
$id = explode(':', JRequest::getVar('id'));
$lists[$i]->class = ($row->id == $id[0] ? 'Selected' : '');
}
$lists[$i]->link = JRoute::_(ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->sectionid));
} else {
[... omissis]
ovvero ci sono da aggiungere giusto 4 righe...
poi in tmpl/default.php la riga 6 diviene:
<a href="<?php echo $item->link; ?>" class="latestnews<?php echo $item->class . $params->get('moduleclass_sfx'); ?>">
ovvero se stiamo visualizzando l'articolo in questione viene aggiunto Selectedin coda a latestnews, ovviamente qui le modifiche sono banali...
non pulitissimo ma funzionale.
ciao,
marco
-
Grande Marco,
risultato perfetto e grazie mille!