Back to top

Autore Topic: [RISOLTO] Richiamare l'id dell'articolo visualizzato/attivo  (Letto 4642 volte)

Offline francesca.delpiccolo

  • Nuovo arrivato
  • *
  • Post: 7
  • Sesso: Femmina
    • Mostra profilo
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\">&nbsp;</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.
« Ultima modifica: 20 Mar 2010, 14:05:54 da francesca.delpiccolo »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Richiamare l'id dell'articolo visualizzato/attivo
« Risposta #1 il: 15 Mar 2010, 08:24:19 »
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
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline francesca.delpiccolo

  • Nuovo arrivato
  • *
  • Post: 7
  • Sesso: Femmina
    • Mostra profilo
Re:Richiamare l'id dell'articolo visualizzato/attivo
« Risposta #2 il: 15 Mar 2010, 11:22:08 »
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.
« Ultima modifica: 15 Mar 2010, 12:08:27 da francesca.delpiccolo »

Offline francesca.delpiccolo

  • Nuovo arrivato
  • *
  • Post: 7
  • Sesso: Femmina
    • Mostra profilo
Re:Richiamare l'id dell'articolo visualizzato/attivo
« Risposta #3 il: 17 Mar 2010, 10:32:42 »
Nessuno riesce ad aiutarmi per favore?

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Richiamare l'id dell'articolo visualizzato/attivo
« Risposta #4 il: 18 Mar 2010, 08:07:31 »
 :( 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

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

Offline francesca.delpiccolo

  • Nuovo arrivato
  • *
  • Post: 7
  • Sesso: Femmina
    • Mostra profilo
Re:Richiamare l'id dell'articolo visualizzato/attivo
« Risposta #5 il: 18 Mar 2010, 14:09:48 »
Va bene grazie mille, se nel frattempo qualcun'altro potesse darmi una mano...

Grazie in anticipo!

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Richiamare l'id dell'articolo visualizzato/attivo
« Risposta #6 il: 19 Mar 2010, 14:49:54 »
ok, a noi francesca!

allora il codice in helper.php, dalla linea 107 diviene:

Codice: [Seleziona]
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:

Codice: [Seleziona]
<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
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline francesca.delpiccolo

  • Nuovo arrivato
  • *
  • Post: 7
  • Sesso: Femmina
    • Mostra profilo
Re:Richiamare l'id dell'articolo visualizzato/attivo
« Risposta #7 il: 20 Mar 2010, 14:05:15 »
Grande Marco,
risultato perfetto e grazie mille!

 



Web Design Bolzano Kreatif