Descrizione MOD:Visualizza nell'indice un modulo tipo Forum con le 5-6 immagini in formato miniatura degli allegati agli ultimi Topics.
Le immagini sono link alle rispettive discussioni e il title corrisponde al Titolo del Topic, al Forum e all'Autore del Topic, informazioni visibili al passaggio del mouse.
Demo: http://www.actaplantarum.org/floraitaliae/index.php e http://www.actafungorum.org/actaforum/index.php
Cronologia:
- 8/01/2010 - Pubblicata la prima versione della MOD in phpbb.it "Mod in sviluppo"
- 20/01/2010 - Iniziata una versione 2 con modifiche relative al modo di visualizzazione delle thumbs
- 21/02/2010 - Pubblicata la versione 2(vedi Modifiche)
La prima versione prevedeva il caricamento delle immagini originali che venivano ridotte al momento per essere visualizzate a una dimensone fissa di 123-150 pixel in altezza.
Questa operazione avveniva naturalmente ad ogni apertura della pagina, a volte con evidenti rallentamenti.
La versione 2 funziona in questo modo: le immagini vengono salvate già in dimensioni miniatura in una cartella "thumbs" appositamente creata nella root del Forum.
L'immagine thumb viene creata al momento dell'apertura della pagina ma solo se non è presente nella cartella. La procedura prevista dalla query provvede a "estrarre" gli ultimi allegati sotto forma di attach_id.
Il file thumb viene archiviato con il nome attach_id.jpg e pertanto se il file esiste la procedura lo visualizza, se non esiste lo copia e quindi lo visualizza.
In sostanza la copia avviene solamente per i nuovi allegati e una volta sola, alla prima occasione.
I successivi utenti che apriranno l'indice troveranno già presente l'immagine e quindi l'apertura della pagina non subirà grossi rallentamenti.
IMPORTANTE: vista la presenza nella Mod di una funzione che copia i file allegati è necessario che gli allegati stessi abbiano i permessi di lettura e che siano attivate nel Server le funzioni php di copia.
Autore: Bingo
Versioni phpBB compatibili: 3.0.x
Cartelle da creare: Via FTP creare la cartella "thumbs" nella root del forum.
File da modificare-creare:
1) modificare index.php
2) creare file styles/.../template/mod_lastpic.html
3) modificare styles/.../template/index_body.html
1) Apri: index.php
Trova:
Codice: Seleziona tutto
page_header($user->lang['INDEX']);
Codice: Seleziona tutto
// ####### INIZIO MOD VIEW LAST PICTURES ##########
// function che copia l'allegato in formato thumb
function resize_thumbs($physical,$attach_id){
$img_des = $phpbb_root_path . "thumbs/" . $attach_id . ".jpg" ;
// Ottengo le informazioni sull'immagine originale
list($width, $height, $type, $attr) = getimagesize($phpbb_root_path . "files/" . $physical);
// Creo la versione ridimensionata dell'immagine (thumbnail)
$new_height = '120' ;
$new_width = ($width * $new_height / $height);
$thumb = imagecreatetruecolor($new_width, $new_height);
$source = imagecreatefromjpeg($phpbb_root_path . "files/" . $physical);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// Salvo l'immagine ridimensionata
imagejpeg($thumb, $img_des, 75);
return "thumbs/". $attach_id . ".jpg" ;
}
$forum_attach_id = 1; // ATTENZIONE inserire il forum_id (padre) dal quale si vuole estrarre gli allegati
// Redirect to login upon emailed notification links
if (isset($_GET['e']) && !$user->data['is_registered'])
{
login_box('', $user->lang['LOGIN_NOTIFY_FORUM']);
}
$sql = "SELECT f.*
FROM ".FORUMS_TABLE." f
WHERE f.forum_id = " . (isset($forum_attach_id) ? $forum_attach_id : 0);
$result = $db->sql_query($sql);
$forum_attach_data = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
// Check if forum exist
if (!$forum_attach_data)
{
trigger_error('NO_FORUM');
}
// Check if user have permissions
if (!$auth->acl_gets('f_list', 'f_read', $forum_attach_id) || ($forum_attach_data['forum_type'] == FORUM_LINK && $forum_attach_data['forum_link'] && !$auth->acl_get('f_read', $forum_attach_id)))
{
if ($user->data['user_id'] != ANONYMOUS)
{
trigger_error('SORRY_AUTH_READ');
}
login_box('', $user->lang['LOGIN_VIEWFORUM']);
}
// Check if forum is passworded
if ($forum_attach_data['forum_password'])
{
login_forum_box($forum_attach_data);
}
//query per estrarre gli ultimi 5 Topics con allegati
$sql = "SELECT
pt.topic_id, pt.forum_id, pt.topic_title, pt.topic_first_poster_name, pt.topic_attachment, pf.forum_name, pf.parent_id, pf.forum_id, pt.topic_time
FROM ". TOPICS_TABLE." pt,". FORUMS_TABLE. " pf
WHERE pf.parent_id = $forum_attach_id
AND pt.forum_id = pf.forum_id
AND pt.topic_attachment = 1
ORDER BY pt.topic_time DESC LIMIT 6";
$db->sql_query($sql);
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$topic_id = $row['topic_id'];
// ricerca il primo attach_id dei topics selezionati
$sql_pic = "SELECT pa.attach_id, pa.topic_id, pa.physical_filename, pa.extension
FROM ". ATTACHMENTS_TABLE." pa
WHERE pa.topic_id = $topic_id
AND pa.extension = 'jpg'
ORDER BY pa.attach_id LIMIT 1" ;
$db->sql_query($sql_pic);
$result1 = $db->sql_query($sql_pic);
$row1 = $db->sql_fetchrow($result1);
$attach_id = $row1['attach_id'];
$physical = $row1['physical_filename'];
$thumbs = "thumbs/". $attach_id . ".jpg" ;
if (is_file($thumbs)){
$thumb_cor = $thumbs ; // se il file thumb esiste visualizza questo
}else{
$thumb_cor = resize_thumbs($physical, $attach_id); // altrimenti lo crea
}
// assegna le variabili da passare al file HTML
$template->assign_block_vars('attach_list', array(
'MY_TOPIC_ID' => $row['topic_id'],
'MY_FORUM_ID' => $row['forum_id'],
'MY_TOPIC_TITLE' => $row['topic_title'],
'MY_TOPIC_LINK' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't='.$row['topic_id']),
'MY_ATTACH_LINK' => append_sid("{$phpbb_root_path}download/file.$phpEx", 'id='.$attach_id),
'MY_FORUM_NAME' => $row['forum_name'],
'MY_TOPIC_AUTHOR' => $row['topic_first_poster_name'],
'MY_ATTACH_ID' => $attach_id,
'MY_THUMBS' => $thumb_cor
));
}
//$db->sql_freeresult($result);
// ####### FINE MOD VIEW LAST PICTURES ##########
2a) Apri: creare file styles/.../template/mod_lastpic.html (stile prosilver)
Codice: Seleziona tutto
<div class="forabg">
<div class="inner"><span class="corners-top"><span></span></span>
<ul class="topiclist">
<li class="header">
<dl class="icon">
<dt>Ultime immagini del Forum</dt>
</dl>
</li>
</ul>
<ul class="topiclist forums">
<li class="row">
<div align="center">
<!-- BEGIN attach_list -->
<a href="{attach_list.MY_TOPIC_LINK}" title="{attach_list.MY_TOPIC_TITLE} (di {attach_list.MY_TOPIC_AUTHOR})"><img src="{attach_list.MY_ATTACH_LINK}" alt="{attach_list.MY_FORUM_NAME}" border="0" height="100"></a>
<!-- END attach_list-->
</div>
</li>
</ul>
<span class="corners-bottom"><span></span></span></div>
</div>
Codice: Seleziona tutto
<table class="tablebg" cellspacing="1" width="100%">
<tr>
<th colspan="2" align="left"> Ultime immagini del Forum </th>
</tr>
<tr>
<td class="row1" colspan="3" align="center">
<!-- BEGIN attach_list -->
<a href="{attach_list.MY_TOPIC_LINK}" title="{attach_list.MY_TOPIC_TITLE} (di {attach_list.MY_TOPIC_AUTHOR})"><img src="{attach_list.MY_ATTACH_LINK} alt="{attach_list.MY_FORUM_NAME}" border="0" height="100"></a>
<!-- END attach_list--></td>
</tr>
<tr>
<td class="row2" colspan="3" align="center"> Seconda riga</td>
</tr>
</table>
1) Apri: index_body.html
Trova:
Codice: Seleziona tutto
<!-- INCLUDE forumlist_body.html -->
Codice: Seleziona tutto
<!-- INCLUDE mod_lastpic.html -->