Pagina 1 di 2

Topic più Visto

Inviato: 15/04/2011, 21:24
da phpBB Italia
Nome MOD: Topic più Visto
Autore: Carlo
Descrizione MOD: Visualizza una lista degli argomenti più visitati nell'indice del forum.
Versione MOD: 2.2.0
Testato su questa versione di phpBB: 3.0.8

Download file: Topic piu Visto.zip
Dimensione file: 33939 Byte

Pagina della MOD: Visualizza

Lo Staff di phpBBItalia.net non è responsabile né è tenuto a fornire supporto per questa MOD. Installando questa MOD, si riconosce che lo Staff di supporto di phpBBItalia.net, può non essere in grado di fornire supporto.

Re: Topic più Visto

Inviato: 15/04/2011, 21:24
da Carlo
MOD validata/rilasciata.

Re: Topic più Visto

Inviato: 26/04/2011, 15:29
da Haku
Carlo, volevo avvisarti che la linea di codice:

Codice: Seleziona tutto

// Output page
page_header($user->lang['INDEX']);
in index.php, non è presente.

Io ho la SEO installata, non so se dipende da questo.
Non ho controllato la differenza dei file tra l'originale e la SEO per verificare se quel pezzo doveva essere modificato.

Re: Topic più Visto

Inviato: 26/04/2011, 16:19
da Carlo
Invece c'è! Prova a cercare solo:

Codice: Seleziona tutto

// Output page

Re: Topic più Visto

Inviato: 27/04/2011, 1:58
da Haku
Pensavo non si potesse inserire se non era la linea uguale ^^'
Funziona perfettamente.
Per aumentare il numero di topic, devo modificare:

Codice: Seleziona tutto

ORDER BY topic_views DESC LIMIT 0,5
???

Re: Topic più Visto

Inviato: 27/04/2011, 7:11
da Micogian
Personalmente farei una piccola modifica: invece di inserire l'intero codice nel file index.php si potrebbe creare un file "mod_tviews.php" con il codice della query:

Codice: Seleziona tutto

<?php
// INIZIO - Topic più Visto -- by carlino1994
$sql = "SELECT topic_id, forum_id, topic_title FROM " . TOPICS_TABLE . " ORDER BY topic_views DESC LIMIT 0,5";
$result = $db->sql_query($sql);

while ($row = $db->sql_fetchrow($result))
{
   if ($auth->acl_get('f_read', $row['forum_id']) == 1) {
      $template->assign_block_vars('topicvisto', array(
         'LINK'    => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row['forum_id'] . "&t=" . $row['topic_id']),
         'TITOLO'    => $row['topic_title'])
      );
   }
}
$db->sql_freeresult($result);
// FINE
?>
nel file index.php, sempre prima della riga "// Output page" si inserisce il seguente include:

Codice: Seleziona tutto

include($phpbb_root_path . 'mod_tviews.' . $phpEx);
Questo limita a una sola riga l'inserimento di codice nel file index.php e il file mod_twiews.php può essere utilizzato anche nella Home.

Una Mod simile è la Topten_topics che ho realizzato io e che consente di visualizzare in una unica tabella 3 delle 4 liste tra gli "ultimi Topics", i "topics più visti", i "topics con più risposte" e gli "ultimi posts".
http://www.phpbbitalia.net/forum/mods-s ... t3225.html

Re: Topic più Visto

Inviato: 27/04/2011, 15:59
da Carlo
Ad ogni modo puoi aumentare il limite, modificando il numero di record da leggere da 5 al numero di discussioni che ti interessano:

Codice: Seleziona tutto

LIMIT 0,5

Re: Topic più Visto

Inviato: 27/04/2011, 16:44
da Micogian
Carlo, la tua Mod prevede il controllo dei permessi di lettura del topic.
Questo potrebbe ridurre il numero dei Topics visualizzati nella Lista.
La soluzione è questa: si dichiara all'inizio il numero di records da estrarre e il numero dei Topics da visualizzare (naturalmente il valore dei records deve essere superiore al valore dei Topics da visualizzare).
Le condizioni IF controllano se il topic ha i permessi di lettura e limita il numero dei Topics da visualizzare.
La modifica da fare è questa:

Codice: Seleziona tutto

<?php
// INIZIO - Topic più Visto -- by carlino1994
$nrec = 10; // numero dei records da estrarre
$ntop = 5 ; // numero dei topics da visualizzare

$sql = "SELECT topic_id, forum_id, topic_title FROM " . TOPICS_TABLE . " ORDER BY topic_views DESC LIMIT 0,$nrec";
$result = $db->sql_query($sql);

n = '0' ;
while ($row = $db->sql_fetchrow($result))
{
   if ($auth->acl_get('f_read', $row['forum_id']) == 1) {
	if ( $n < $ntop )
	{
      	$template->assign_block_vars('topicvisto', array(
         'LINK'    => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row['forum_id'] . "&t=" . $row['topic_id']),
         'TITOLO'    => $row['topic_title'])
      	);
	++$n ;
	}
   }
}
$db->sql_freeresult($result);
// FINE
?>

Re: Topic più Visto

Inviato: 27/04/2011, 17:10
da Carlo
Esatto. Un piccolo consiglio.

Quando il ciclo while() ha mostrato il numero di argomenti definiti in $ntop, puoi inserire un break in modo tale che il ciclo venga terminato, e non continui fino a quando non ha estratto tutti gli argomenti.

Re: Topic più Visto

Inviato: 27/04/2011, 17:25
da Micogian
Carlo ha scritto:Esatto. Un piccolo consiglio.

Quando il ciclo while() ha mostrato il numero di argomenti definiti in $ntop, puoi inserire un break in modo tale che il ciclo venga terminato, e non continui fino a quando non ha estratto tutti gli argomenti.
Si, hai ragione, anche se con 10 records da estrarre non ci sono grossi problemi, ma concettualmente è corretto quello che dici.