Joomla.it Forum

Joomla! 1.5.x (versione con supporto terminato) => Joomla! 1.5 => : alcor 03 Jul 2011, 00:55:28

: Guida: Modificare modulo pił letti con intervallo di date personalizzato
: alcor 03 Jul 2011, 00:55:28
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:
//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:
//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