Back to top

Autore Topic: Guida: Modificare modulo più letti con intervallo di date personalizzato  (Letto 2271 volte)

Offline alcor

  • Esploratore
  • **
  • Post: 60
  • Sesso: Maschio
    • Mostra profilo
Come sapete il modulo degli articoli più letti in joomla, non permette di visualizzare gli articoli più letti di un certo periodo ma visualizza i più letti di sempre. Quindi se vogliamo visualizzare gli articoli più letti della settimana o del mese non possiamo impostare alcun parametro nel modulo di default.
Questa modifica ripara a questa mancanza.

Bisogna aprire il file modules/mod_mostread/helper.php
trovare questo pezzo di codice:
Citazione
//Content Items only
        $query = 'SELECT a.*,' .
            ' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,'.
            ' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug'.
            ' FROM #__content AS a' .
            ' LEFT JOIN #__content_frontpage AS f ON f.content_id = a.id' .
            ' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
            ' INNER JOIN #__sections AS s ON s.id = a.sectionid' .
            ' WHERE ( a.state = 1 AND s.id > 0 )' .
            ' AND ( a.publish_up = '.$db->Quote($nullDate).' OR a.publish_up <= '.$db->Quote($now).' )' .
            ' AND ( a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).' )'.
            ($access ? ' AND a.access <= ' .(int) $aid. ' AND cc.access <= ' .(int) $aid. ' AND s.access <= ' .(int) $aid : '').
            ($catid ? $catCondition : '').
            ($secid ? $secCondition : '').
            ($show_front == '0' ? ' AND f.content_id IS NULL' : '').
            ' AND s.published = 1' .
            ' AND cc.published = 1' .
            ' ORDER BY a.hits DESC';

e sostituirlo con questo:
Citazione
//Content Items only
        $query = 'SELECT a.*,' .
            ' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,'.
            ' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug'.
            ' FROM #__content AS a' .
            ' LEFT JOIN #__content_frontpage AS f ON f.content_id = a.id' .
            ' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
            ' INNER JOIN #__sections AS s ON s.id = a.sectionid' .
            ' WHERE ( a.state = 1 AND s.id > 0 )' .
            ' AND ( a.publish_up = '.$db->Quote($nullDate).' OR a.publish_up <= '.$db->Quote($now).' )' .
            ' AND ( a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).' )'.
            ' AND datediff( now()  , a.created)  <= 30 ' .
            ($access ? ' AND a.access <= ' .(int) $aid. ' AND cc.access <= ' .(int) $aid. ' AND s.access <= ' .(int) $aid : '').
            ($catid ? $catCondition : '').
            ($secid ? $secCondition : '').
            ($show_front == '0' ? ' AND f.content_id IS NULL' : '').
            ' AND s.published = 1' .
            ' AND cc.published = 1' .
            ' ORDER BY a.hits DESC';

I due pezzi di codice sono identici tranne che per questa stringa: ' AND datediff( now()  , a.created)  <= 30 ' .
dove "30" indica il numero di giorni preferito per mostrare gli articoli più letti, ovviamente se volete i più letti della settimana basta mettere un 7 al posto del 30.

Spero di esservi stato utile
a presto!
Francesco

 



Web Design Bolzano Kreatif