Post recenti anche dopo 24 ore

Aperto da franzfenix, Lunedì - 27 Aprile 2015 - 11:17

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

franzfenix

Buongiorno ragazzi, rieccomi a chiedervi gentilmente supporto :)
Ho un forum 1.1.20 e vorrei che l'elenco dei post recenti non scompaia alle 00:00 del giorno successivo ma che rimanga per più tempo, cossichè si vedano anche post magari più vecchi di 24 ore.
È possibile farlo? In quali file devo smanettare?
Grazie :)

Darknico

#1
mmmhh....sicuro che non sia stata fatta qualche modifica? Non ricordo di questa particolarità...
Che io sappia non ha limiti di tempo e, anche se li avesse, non di sicuro allo scoccare della mezzanotte....
Non supporto privatamente, non risponderei e ci rimarreste male....

franzfenix

#2
non mi sembra siano state fatte modifiche lì, comunque ora vado a leggere il file boardindex mmhhh
EDIT: il codice riguardante i post recenti all'interno del file boardindex.template.php è il seguente

// This is the "Recent Posts" bar.
if (!empty($settings['number_recent_posts']))
{
echo '
<tr>
<td class="titlebg" colspan="2">', $txt[214], '</td>
</tr>
<tr>
<td class="windowbg" width="20" valign="middle" align="center">
<a href="', $scripturl, '?action=recent"><img src="', $settings['images_url'], '/post/xx.png" alt="', $txt[214], '" /></a>
</td>
<td class="windowbg2">';

// Only show one post.
if ($settings['number_recent_posts'] == 1)
{
// latest_post has link, href, time, subject, short_subject (shortened with...), and topic. (its id.)
echo '
<b><a href="', $scripturl, '?action=recent">', $txt[214], '</a></b>
<div class="smalltext">
', $txt[234], ' &quot;', $context['latest_post']['link'], '&quot; ', $txt[235], ' (', $context['latest_post']['time'], ')<br />
</div>';
}
// Show lots of posts.
elseif (!empty($context['latest_posts']))
{
echo '
<table cellpadding="0" cellspacing="0" width="100%" border="0">';

/* Each post in latest_posts has:
board (with an id, name, and link.), topic (the topic's id.), poster (with id, name, and link.),
subject, short_subject (shortened with...), time, link, and href. */
foreach ($context['latest_posts'] as $post)
echo '
<tr>
<td class="middletext" valign="top"><b>', $post['link'], '</b> ', $txt[525], ' ', $post['poster']['link'], ' (', $post['board']['link'], ')</td>
<td class="middletext" align="right" valign="top" nowrap="nowrap">', $post['time'], '</td>
</tr>';
echo '
</table>';
}
echo '
</td>
</tr>';
}

emanuele

Di default non c'è niente che limita alla mezzanotte il blocco dei post recenti.
Quello che può accadere è che, se buona parte dell'attività viene svolta in sezioni non accessibili, allora la lista si accorcia per via di un'ottimizzazione fatta per ridurre la lentezza della query.

Proviamo così, apri Recent.php, cerca:
WHERE m.ID_MSG >= " . max(0, $modSettings['maxMsgID'] - 20 * $showlatestcount) . "
e sostituiscilo con:
WHERE m.ID_MSG >= " . max(0, $modSettings['maxMsgID'] - 50 * $showlatestcount) . "

franzfenix

Ok fatto!
questo codice quindi cosa fa? mostra gli ultimi 50 post invece che gli ultimi 20?

emanuele

No.

Come detto, c'è un'ottimizzazione: SMF cerca di limitare il numero di messaggi in cui cercare per evitare di dover passare in rassegna l'intera tabella dei messaggi.
Questo limite lo pone agli ultimi 20 * {numero di messaggi che vuoi visualizzare} messaggi (facciamola semplice).
Mettiamo che tu vuoi vedere 20 messaggi, lui cercherà quei 20 negli ultimi 400 postati.
Ora, se tu di questi 400 ne hai fatti 395 in sezioni non accessibili, allora SMF potrà mostrarne solamente 5.

Quel cambio che ho suggerito modifica il moltiplicatore 20 a 50, quindi invece che cercare in 400 messaggi, cercherà in 1000.

franzfenix

Ok grazie mille per le spiegazioni e per l'aiuto!!!

Discussioni simili (3)