[DEV] Mod Topic Images in Forumlist

MODs in fase di sviluppo.
Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3702
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

[DEV] Mod Topic Images in Forumlist

Messaggio da Micogian » 24/05/2012, 20:50

[DEV] Mod Topic Images in Forumlist

Nell'indice del Forum viene mostrato, in corrispondenza di ogni Forum, l'ultimo messaggio sotto forma di Titolo, autore dell'ultimo post e link alla discussione.
La Mod "Topic Images in Forumlist" provvede a visualizzare, a fianco del titolo di ogni Forum, una miniatura della prima immagine eventualmente presente nel Topic.
A creare le miniature provvede un'altra Mod (View Last Pictures) che quindi è indispensabile per il funzionamento di questa Mod.
La Mod "View Last Pictures" provvede a visualizzare una striscia fotografica degli Ultimi allegati.
La visualizzazione della striscia è facoltativa, l'installazione della Mod View Last Pictures è comunque necessaria perchè provvede a creare le miniature che vengono salvate nella cartella "thumbs".
Dopo aver installato la Mod View Last Pictures vediamo quali sono le Modifiche per ottenere la visualizzazione delle miniature a fianco dei titoli dei Forums.
Ricordo che il ridimensionamento degli allegati e la creazione delle miniature nella cartella "thumbs" avviene in maniera automatica. Quando un qualsiasi utente apre il Forum viene controllata la presenza delle miniature relative alle ultime Immagini del Forum e se non esistono vengono create.
Le miniature vengono nominate con il loro attach_id, ad esempio l'allegato con attach_id=12345 diventa il file 12345.jpg.

DEMO: http://www.photogirello.it/forummn/viewforum.php?f=7

Passiamo ora ad illustrare le modifiche per ottenere la visualizzazione delle miniature.
Le modifiche da fare riguardano:

1) La creazione di due functions che ricavano il nome della miniatura dal post_id e dal topic_id. Questo perchè nell'indice è disponibile il post_id dell'ultimo messaggio mentre nella Lista ricavata dal file "viewforums.php" è disponibile il topic_id.
2) Modifica del file includes/functions_display.php per inserire la variabile "FORUM_IMAGE_POST" da passare al template forumlist_body.html.
3) Modifica del file viewforums.php per creare le variabili da passare al template viewforum_body.html.
4) Modifica del file forumlist_body.html
5) Modifica dei CSS necessari alla visualizzazione della miniatura.


1) Aprire il file includes/functions_display.php.
Alla fine, prima del tag ?> aggiungere

ATTENZIONE
: la seguente parte è stata modificata il 28/08/2012 (inserito nelle functions la condizione che l'allegato deve essere un file JPG)

Codice: Seleziona tutto

/**
function attach_lastpost() = associa il primo attach_id al relativo post_id (by Micogian 23.05.2012)
*/
function attach_lastpost($post_id)
{
global $db;
$sql = "SELECT * FROM " . POSTS_TABLE . " WHERE post_id = " . $post_id . " LIMIT 1";
$result = $db->sql_query($sql);
	{
	$row = $db->sql_fetchrow($result);
	$topic_cor = $row['topic_id'];
	}
	if($topic_cor <> '')
	{
		$sql1 = "SELECT * FROM " . ATTACHMENTS_TABLE . " WHERE topic_id = " . $topic_cor . " AND extension = 'jpg' ORDER BY attach_id LIMIT 1";
		$result1 = $db->sql_query($sql1);
		{
		$row1 = $db->sql_fetchrow($result1);
		$post_picture = 'thumbs/' . $row1['attach_id'] . '.jpg' ;     
		}
	}
	if(!is_file($post_picture) || $row1['attach_id'] == '')
	{
	$post_picture = '' ;
	}
	return $post_picture ;
}
       
/**
function attach_topic() = associa il primo attach_id al relativo topic_id (by Micogian 23.05.2012)
*/
function attach_topic($topic_id)
{
global $db;
$sql = "SELECT * FROM " . ATTACHMENTS_TABLE . " WHERE topic_id = " . $topic_id . " AND extension = 'jpg' ORDER BY attach_id LIMIT 1";
$result = $db->sql_query($sql);
	{
	$row = $db->sql_fetchrow($result);
	$topic_picture = 'thumbs/' . $row['attach_id']. ".jpg";     
	}
	if(!is_file($topic_picture))
	{
	$topic_picture = '' ;
	}
	return $topic_picture ;
}
2) Apri il file includes/functions_display.php
trova la riga

Codice: Seleziona tutto

'FORUM_IMAGE_SRC'		=> ($row['forum_image']) ? $phpbb_root_path . $row['forum_image'] : '',

Aggiungi la riga:

Codice: Seleziona tutto

'FORUM_IMAGE_POST'		=> attach_lastpost($row['forum_last_post_id']),
3) Creazione variabile da passare al template viewforum_body.html.
Apri il file viewforums.php
Trova la riga

Codice: Seleziona tutto


// Send vars to template
		
$template->assign_block_vars('topicrow', array(
Aggiungi prima il seguente codice

Codice: Seleziona tutto

// Mod by Micogian: associa il primo attach_id di ogni topic al relativo topic_id

$topic_image = attach_topic($topic_id) ;

Poi trova la parte di codice

Codice: Seleziona tutto

		// Send vars to template
		$template->assign_block_vars('topicrow', array(
			'FORUM_ID'					=> $topic_forum_id,
			'TOPIC_ID'					=> $topic_id,
e aggiungi la riga:

Codice: Seleziona tutto

			'TOPIC_IMAGE'				=> $topic_image,
4) Apri il file forumlist_body.html (style prosilver)
a - Trova la parte di codice

Codice: Seleziona tutto

<dt><!-- IF forumrow.S_IS_CAT --><a href="{forumrow.U_VIEWFORUM}">{forumrow.FORUM_NAME}</a><!-- ELSE -->{L_FORUM}<!-- ENDIF --></dt>
Aggiungi la riga:

Codice: Seleziona tutto

						<dd class="thumbs">&nbsp;</dd>

b - Trova la seguente parte di codice

Codice: Seleziona tutto

					<!-- IF forumrow.SUBFORUMS and forumrow.S_LIST_SUBFORUMS --><br /><strong>{forumrow.L_SUBFORUM_STR}</strong> {forumrow.SUBFORUMS}<!-- ENDIF -->
				</dt>
Aggiungi la seguente riga:

Codice: Seleziona tutto

				<dd class="thumbs"><!-- IF forumrow.FORUM_IMAGE_POST --><span class="forum-image-post"><a  class="topictitle" href="{forumrow.U_LAST_POST}" title="{forumrow.LAST_POST_SUBJECT}"><img src="{forumrow.FORUM_IMAGE_POST}" width='100' /></a></span><!-- ENDIF --></dd>					
5) Apri il file viewforum_body.html
Trova la parte di codice

Codice: Seleziona tutto

				<dd class="posts">{topicrow.REPLIES} <dfn>{L_REPLIES}</dfn></dd>
				<dd class="views">{topicrow.VIEWS} <dfn>{L_VIEWS}</dfn></dd>
Inserisci PRIMA il seguente codice:

Codice: Seleziona tutto

				<!-- inserimento immagine topic -->
				<!-- IF topicrow.TOPIC_IMAGE -->
				<dd class="thumbs"><a title="{L_POSTED}: {topicrow.FIRST_POST_TIME}" href="{topicrow.U_VIEW_TOPIC}">&nbsp;<img src="{topicrow.TOPIC_IMAGE}" width="90" >&nbsp;</a></dd>
				<!-- ELSE -->
				<dd class="thumbs">&nbsp;</dd>
				<!-- ENDIF -->

6) Modifica dei CSS necessari alla visualizzazione della miniatura.
Apri il file theme/content.css
Trova la parte di codice:

Codice: Seleziona tutto

ul.topiclist dt {
	display: block;
	float: left;
	width: 50%;
	font-size: 1.1em;
	padding-left: 5px;
	padding-right: 5px;
}
e modifica la riga "width: 50%;" con "width: 40%;", questo il risultato (la vecchia impostazione è commentata per tenere traccia della modifica):

Codice: Seleziona tutto

ul.topiclist dt {
	display: block;
	float: left;
	width: 40%; /*50%*/
	font-size: 1.1em;
	padding-left: 5px;
	padding-right: 5px;
}
Alla fine del file aggiungi

Codice: Seleziona tutto

/* Mod Last_topic_image */
.forum-image-post {
	float: center;
	padding-top: 3px;
}
/* Style miniatura allegati  */
dd.thumbs {
	width: 110px;
	text-align: center;
	line-height: 2.2em;
}
La Mod è completata, aggiornare da PCA la cache del template e del tema.

Ciccio74
Utente
Utente
Messaggi: 38
Iscritto il: 06/08/2011, 12:01
Sesso: Maschio
Versione: 3.0.8
Server: UNIX/Linux

Re: [DEV] Mod Topic Images in Forumlist

Messaggio da Ciccio74 » 29/06/2012, 12:51

Grazie per il rilascio di quest'altra bella ed utile mod :-)
Ma se invece volessi utilizzare la mod "View Last Pictures" per fare in modo che vengano visualizzate più strisce fotografiche nella index, assegnando ad ognuna l'ID del forum o subforum di interesse?
Saresti così gentile da dirmi come fare, sempre che sia possibile?
Ancora grazie e complimenti :ciao:

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3702
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: [DEV] Mod Topic Images in Forumlist

Messaggio da Micogian » 29/06/2012, 13:05

Devi creare un file php per ogni Forum che vuoi visualizzare limitando la query nello specifico forum.
Crei altrettanti template che andrai a visualizzare inserendo nel file forumlist_body.html un codice di questo tipo:

Codice: Seleziona tutto

<!-- IF forumrow.FORUM_ID == '285' || FORUM_ID == '285' --><!-- INCLUDE mod_last_pictures_body_1.html --><!-- ENDIF -->
			<!-- IF forumrow.FORUM_ID == '323' || FORUM_ID == '323' --><!-- INCLUDE mod_last_pictures_body_2.html --><!-- ENDIF -->
			<!-- IF forumrow.FORUM_ID == '289' || FORUM_ID == '289' --><!-- INCLUDE mod_last_pictures_body_3.html --><!-- ENDIF -->
			<!-- IF forumrow.FORUM_ID == '288' || FORUM_ID == '288' --><!-- INCLUDE mod_last_pictures_body_4.html --><!-- ENDIF -->
Il risultato lo puoi vedere qui: http://www.actafungorum.org/actaforum/index.php

Ciccio74
Utente
Utente
Messaggi: 38
Iscritto il: 06/08/2011, 12:01
Sesso: Maschio
Versione: 3.0.8
Server: UNIX/Linux

Re: [DEV] Mod Topic Images in Forumlist

Messaggio da Ciccio74 » 29/06/2012, 13:51

Grazie 1000 per la risposta!
Per quanto riguarda i vari template e l'inserimento nel file forumlist_body.html nessun problema... per il file php ti riferisci a mod_last_pictures.php?

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3702
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: [DEV] Mod Topic Images in Forumlist

Messaggio da Micogian » 29/06/2012, 17:14

Si, potresti creare dei file mod_last_pictures1.php, mod_last_pictures2.php, ecc., ognuno dedicato a estrarre i dati di una sezione.
Poi, per evitare confusione con le variabili, devi usare nomi diversi per gli array:

Codice: Seleziona tutto

$template->assign_block_vars('last_pictures1', array(

Codice: Seleziona tutto

$template->assign_block_vars('last_pictures2', array(

Ciccio74
Utente
Utente
Messaggi: 38
Iscritto il: 06/08/2011, 12:01
Sesso: Maschio
Versione: 3.0.8
Server: UNIX/Linux

Re: [DEV] Mod Topic Images in Forumlist

Messaggio da Ciccio74 » 29/06/2012, 22:49

Grazie, sei sempre molto gentile e disponibile.
Appena ho un po' di tempo provo, spero di riuscire da solo e di non doverti scocciare ancora ;) Ciao

Ciccio74
Utente
Utente
Messaggi: 38
Iscritto il: 06/08/2011, 12:01
Sesso: Maschio
Versione: 3.0.8
Server: UNIX/Linux

Re: [DEV] Mod Topic Images in Forumlist

Messaggio da Ciccio74 » 01/07/2012, 22:59

Micogian ha scritto:Crei altrettanti template che andrai a visualizzare inserendo nel file forumlist_body.html un codice di questo tipo:

Codice: Seleziona tutto

<!-- IF forumrow.FORUM_ID == '285' || FORUM_ID == '285' --><!-- INCLUDE mod_last_pictures_body_1.html --><!-- ENDIF -->
Una domanda prima di cominciare...
Questo codice devo inserirlo in un punto preciso del file?

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3702
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: [DEV] Mod Topic Images in Forumlist

Messaggio da Micogian » 02/07/2012, 7:14

Ovviamente, va inserito nel ciclo BEGIN forumrow del file forumlist_body.html, più precisamente quando la variabile del Forum corrisponde alla prima riga di una Sezione ( S_FIRST_ROW), questo è quello che ho nel mio forum

Codice: Seleziona tutto

	<!-- IF forumrow.S_IS_CAT or forumrow.S_FIRST_ROW  or forumrow.S_NO_CAT  -->
		<div class="forabg">
			<div class="inner"><span class="corners-top"><span></span></span>
			<ul class="topiclist">
				<li class="header">
					<dl class="icon">
						<dt><!-- IF forumrow.S_IS_CAT --><a href="{forumrow.U_VIEWFORUM}">{forumrow.FORUM_NAME}</a><!-- ELSE -->{L_FORUM}<!-- ENDIF --></dt>
						<dd class="topics">{L_TOPICS}</dd>
						<dd class="posts">{L_POSTS}</dd>
						<dd style="width: 100px;" class="lastpost"><span>ULT.MESSAGGIO&nbsp;</span></dd>
					</dl>
				</li>
			</ul>
			<!-- IF forumrow.FORUM_ID == '285' || FORUM_ID == '285' --><!-- INCLUDE mod_last_pictures_body_1.html --><!-- ENDIF -->
			<!-- IF forumrow.FORUM_ID == '323' || FORUM_ID == '323' --><!-- INCLUDE mod_last_pictures_body_2.html --><!-- ENDIF -->
			<!-- IF forumrow.FORUM_ID == '289' || FORUM_ID == '289' --><!-- INCLUDE mod_last_pictures_body_3.html --><!-- ENDIF -->
			<!-- IF forumrow.FORUM_ID == '288' || FORUM_ID == '288' --><!-- INCLUDE mod_last_pictures_body_4.html --><!-- ENDIF -->
			<ul class="topiclist forums">
	<!-- ENDIF -->
L'utilizzo di enrambe le variabili forumrow.FORUM_ID e FORUM_ID è necessario perchè una è disponibile nel file index e l'altra nel file viewforum. Così la striscia è visibile sia nell'indice generale che nell'indice per Categoria.

Ciccio74
Utente
Utente
Messaggi: 38
Iscritto il: 06/08/2011, 12:01
Sesso: Maschio
Versione: 3.0.8
Server: UNIX/Linux

Re: [DEV] Mod Topic Images in Forumlist

Messaggio da Ciccio74 » 02/07/2012, 21:39

Ciao Mico, ho fatto una veloce prova e grazie alle tue preziose indicazioni sono riuscito a visualizzare la barra fotografica nella posizione voluta ;)
Ho bisogno però di un ultimo aiuto per capire giusto un paio di cose :roll:
La prima è come fare per eliminare i bordi colorati e lasciare solo il celeste dello sfondo, a tal proposito ti allego un'immagine ricavata durante la prova (si notano gli angoli arrotondati).
Immagine.JPG
Inoltre ho un dubbio e riguarda il forum visualizzato.
Ho creato un nuovo file php, modificato l'array e assegnato l'ID del forum desiderato, tutto come da te indicato, ma continuo a vedere sempre le stesse anteprime.
Ti dico subito che ho agito senza eliminare l'include in index_body.html ed il file mod_last_pictures.php (come da MOD originale), è per questo che non mi appaiono le anteprime volute, perché quest'ultimo file richiama sempre le stesse, giusto?
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3702
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: [DEV] Mod Topic Images in Forumlist

Messaggio da Micogian » 02/07/2012, 23:21

Come avevo spiegato in precedenza tutto viene assegnato dai file PHP.
Il motivo per il quale è preferibile creare diversi file php per estrarre i dati delle diverse sezioni è legato al nome da assegnare alle variabili.
Il file Mod_last_pictures.php crea un array con le variabili da passare al template. Queste variabili sono costituite dal nome dell'array e dal nome della variabile, ad esempio {last_pictures.LAST_THUMBS}.
E' ovvio che utilizzando più file bisogna fare in modo che le variabili siano diverse, quindi o si cambia il nome dell'array o il nome della variabile.
Avremo quindi {last_pictures1.LAST_THUMBS}, {last_pictures2.LAST_THUMBS}, {last_pictures3.LAST_THUMBS}, ecc.
Non importa che il nome della variabile sia uguale, tanto cambia il nome dell'array e in questo modo non ci può essere confusione.

Per il riquadro è un problema di CSS ma io non uso da tanto tempo mod_last_pictures, la mia è una Mod personalizzata.

Rispondi

Torna a “MODs in sviluppo”

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite