Bonjour tout le monde.
Je viens de passer à la 1.6.2 (de la 1.5.2) et j'en profite pour rajouter quelques plugins. Actuellement je recherche un plugin pour afficher les X derniers commentaires directement sur l'index. Je pense que ça doit exister mais décidément je ne trouve pas.
Merci de votre aide :)
EDIT 26/04/07
Voilà la modification à apporter :
Dans index.php, juste avant :
//------------------------------------------------------------ log informations pwg_log('category', $page['title']);
(soit juste avant la fin du fichier)
insérer :
// BEGIN COMS ON INDEX $comments = array(); $element_ids = array(); $category_ids = array(); /*Nombre de commentaires à afficher*/ $NbrComs = 5; $query = 'SELECT com.id AS comment_id , com.image_id , ic.category_id , com.author , com.date , com.content , com.id AS comment_id FROM phpwebgallery_image_category AS ic INNER JOIN phpwebgallery_comments AS com ON ic.image_id = com.image_id WHERE ic.category_id NOT IN ('.$user['forbidden_categories'].') GROUP BY comment_id ORDER BY date DESC LIMIT 0,'.$NbrComs; $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { array_push($comments, $row); array_push($element_ids, $row['image_id']); array_push($category_ids, $row['category_id']); } if (count($comments) > 0) { // retrieving element informations $elements = array(); $query = ' SELECT id, name, file, path, tn_ext FROM '.IMAGES_TABLE.' WHERE id IN ('.implode(',', $element_ids).') ;'; $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { $elements[$row['id']] = $row; } // retrieving category informations $categories = array(); $query = ' SELECT id, name, uppercats FROM '.CATEGORIES_TABLE.' WHERE id IN ('.implode(',', $category_ids).') ;'; $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { $categories[$row['id']] = $row; } foreach ($comments as $comment) { // name of the picture $name = get_cat_display_name_cache( $categories[$comment['category_id']]['uppercats'], null, false); $name.= $conf['level_separator']; if (!empty($elements[$comment['image_id']]['name'])) { $name.= $elements[$comment['image_id']]['name']; } else { $name.= get_name_from_file($elements[$comment['image_id']]['file']); } // source of the thumbnail picture $thumbnail_src = get_thumbnail_src( $elements[$comment['image_id']]['path'], @$elements[$comment['image_id']]['tn_ext'] ); // link to the full size picture $url = make_picture_url( array( 'category' => $comment['category_id'], 'cat_name' => $categories[ $comment['category_id']] ['name'], 'image_id' => $comment['image_id'], 'image_file' => $elements[$comment['image_id']]['file'], ) ); $template->assign_block_vars( 'picture', array( 'TITLE_IMG'=>$name, 'I_THUMB'=>$thumbnail_src, 'U_THUMB'=>$url )); $author = $comment['author']; if (empty($comment['author'])) { $author = l10n('guest'); } $template->assign_block_vars( 'comment', array( 'U_PICTURE' => $url, 'TN_SRC' => $thumbnail_src, 'AUTHOR' => $author, 'DATE'=>format_date($comment['date'],'mysql_datetime',true), 'CONTENT'=>parse_comment_content($comment['content']), )); } } //END COMS ON INDEX
Et dans le fichier index.tpl, ajouter à la fin :
<div id="content"> <h2><a href="comments.php" title="Derniers commentaires">Derniers commentaires</a></h2> <div id="comments"> <!-- BEGIN comment --> <div class="comment"> <a class="illustration" href="{comment.U_PICTURE}"><img src="{comment.TN_SRC}" /></a> <p class="commentHeader"><span class="author">{comment.AUTHOR}</span> - <span class="date">{comment.DATE}</span></p> <blockquote>{comment.CONTENT}</blockquote> <hr class="separation"> </div> <!-- END comment --> </div></div>
Et le tour est joué !
Pour ceux qui veulent une démo voir ici
J'ai repris le template du comments.tpl de yoga (thème par défaut chez moi pour le moment) donc je ne sais pas ce que ça donnera sur d'autres thèmes.
Voili voilou, si ça peut servir je serai content ! :)
PS : Ha oui, et si vous voulez changer le nombre de miniature à afficher (j'en ai mis 5) modifiez la valeur de $NbrComs tout au début du code à insérer dans index.php ;)
J'ai aussi rajouté la modif pour ne pas avoir les commentaires des catégories privés pour les visiteurs et ceux qui n'y ont pas accés :)
Merci & enjoy !
Edit du 27/04/07
Pour la version finale voir ici (merci à Nicco pour la synthèse :) )
Dernière modification par Niubert (2007-04-27 12:40:55)
Hors ligne
Bonjour, je n'ai jamais vu de mod permettant cette fonction.
Hors ligne
pas mal ca pour motiver les visiteurs à saisir des commentaires : +1
Hors ligne
ca rejoint un peu l'idée ds cette disucssion
http://forum.phpwebgallery.net/viewtopic.php?id=10338
perso je prefere l'icone pour eviter de surchargé la page d'acceuil...
Hors ligne
Personnellement je préférerait un petit cadre du meme style que celui de la news (j'ai installé le mod news dessus) en bas avec sur quelques lignes, le début des 5 ou 10 derniers commentaires. (sans la miniature de l'image)
Ca resterait sobre et discret.
Si vraiment ça n'existe pas, alors je le ferai moi même...
Hors ligne
Et bien moi je veux les 2 naaaaaaaaaaaa
sans rire ca peux etre cool et il suffit de faire une variable dans config qui active ou non l'affichage sur la page d'acceuil
et pour finir va s y Niubert ... je trouve ca trop cool que plein de monde fasse un MOD quand il veut quelque chose car ca permet aux autres de pouvoir l utiliser aussi
et surtout ca augmente les possibilité de PWG
Hors ligne
Bon, du coup j'ai fait ma petite modification moi même. Voilà ce qu'il faut faire pour ceux que ça interresse :
Dans index.php, juste avant :
//------------------------------------------------------------ log informations pwg_log('category', $page['title']);
(soit juste avant la fin du fichier)
insérer :
// BEGIN COMS ON INDEX $comments = array(); $element_ids = array(); $category_ids = array(); /*Nombre de commentaires à afficher*/ $NbrComs = 5; $query = 'SELECT com.id AS comment_id , com.image_id , ic.category_id , com.author , com.date , com.content , com.id AS comment_id FROM phpwebgallery_image_category AS ic INNER JOIN phpwebgallery_comments AS com ON ic.image_id = com.image_id GROUP BY comment_id ORDER BY date DESC LIMIT 0,'.$NbrComs; $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { array_push($comments, $row); array_push($element_ids, $row['image_id']); array_push($category_ids, $row['category_id']); } if (count($comments) > 0) { // retrieving element informations $elements = array(); $query = ' SELECT id, name, file, path, tn_ext FROM '.IMAGES_TABLE.' WHERE id IN ('.implode(',', $element_ids).') ;'; $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { $elements[$row['id']] = $row; } // retrieving category informations $categories = array(); $query = ' SELECT id, name, uppercats FROM '.CATEGORIES_TABLE.' WHERE id IN ('.implode(',', $category_ids).') ;'; $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { $categories[$row['id']] = $row; } foreach ($comments as $comment) { // name of the picture $name = get_cat_display_name_cache( $categories[$comment['category_id']]['uppercats'], null, false); $name.= $conf['level_separator']; if (!empty($elements[$comment['image_id']]['name'])) { $name.= $elements[$comment['image_id']]['name']; } else { $name.= get_name_from_file($elements[$comment['image_id']]['file']); } // source of the thumbnail picture $thumbnail_src = get_thumbnail_src( $elements[$comment['image_id']]['path'], @$elements[$comment['image_id']]['tn_ext'] ); // link to the full size picture $url = make_picture_url( array( 'category' => $comment['category_id'], 'cat_name' => $categories[ $comment['category_id']] ['name'], 'image_id' => $comment['image_id'], 'image_file' => $elements[$comment['image_id']]['file'], ) ); $template->assign_block_vars( 'picture', array( 'TITLE_IMG'=>$name, 'I_THUMB'=>$thumbnail_src, 'U_THUMB'=>$url )); $author = $comment['author']; if (empty($comment['author'])) { $author = l10n('guest'); } $template->assign_block_vars( 'comment', array( 'U_PICTURE' => $url, 'TN_SRC' => $thumbnail_src, 'AUTHOR' => $author, 'DATE'=>format_date($comment['date'],'mysql_datetime',true), 'CONTENT'=>parse_comment_content($comment['content']), )); } } //END COMS ON INDEX
Et dans le fichier index.tpl, ajouter à la fin :
<!-- BEGIN COMS ON INDEX --> <div id="content"> <h2><a href="comments.php" title="Derniers commentaires">Derniers commentaires</a></h2> <div id="comments"> <!-- BEGIN comment --> <div class="comment"> <a class="illustration" href="{comment.U_PICTURE}"><img src="{comment.TN_SRC}" /></a> <p class="commentHeader"><span class="author">{comment.AUTHOR}</span> - <span class="date">{comment.DATE}</span></p> <blockquote>{comment.CONTENT}</blockquote> <hr class="separation"> </div> <!-- END comment --> </div></div> <!-- END COMS ON INDEX -->
Et le tour est joué !
Pour ceux qui veulent une démo voir ici
J'ai repris le template du comments.tpl de yoga (thème par défaut chez moi pour le moment) donc je ne sais pas ce que ça donnera sur d'autres thèmes.
Voili voilou, si ça peut servir je serai content ! :)
PS : Ha oui, et si vous voulez changer le nombre de miniature à afficher (j'en ai mis 5) modifiez la valeur de $NbrComs tout au début du code à insérer dans index.php ;)
Dernière modification par Niubert (2007-04-20 17:49:50)
Hors ligne
j'ai une erreur quand j'aoute le code ds le index.tpl
Parse error: syntax error, unexpected T_STRING in /mnt/146/sdb/a/d/xxxx/phpwebgallery/include/template.php(168) : eval()'d code on line 175
Dernière modification par sakkhho (2007-04-20 19:38:21)
Hors ligne
Pareil que pour sakkhho :(
Parse error: syntax error, unexpected T_STRING
Hors ligne
alors j'ai repris mon comments.tpl
<div id="content">
<h2><a href="comments.php" title="Derniers commentaires">Derniers commentaires</a></h2>
<div id="comments">
<!-- BEGIN comment -->
<div class="comment">
<a class="illustration" href="{comment.U_PICTURE}"><img src="{comment.TN_SRC}" /></a>
<p class="commentHeader"><span class="author">{comment.AUTHOR}</span> - <span class="date">{comment.DATE}</span></p>
<blockquote>{comment.CONTENT}</blockquote>
<hr class="separation">
</div>
<!-- END comment -->
</div>
</div> <!-- content -->
et ca marche !
je vois pas la difference mais bon..
Dernière modification par sakkhho (2007-04-21 09:52:37)
Hors ligne
mais plusieurs soucis.
cette modif est affiché tt le tps, donc pas de difference public, privée...
ce qui serait bien c'est quil n'affiche que le commentaires des categories autorisés....
si qq'un à une idée...
Hors ligne
J'ai viré ça de la requete sql (voir dans ton comments.php) :
if ($user['forbidden_categories'] != '') { $query.= ' AND category_id NOT IN ('.$user['forbidden_categories'].')'; }
Je pense qu'il faut que tu creuses par là :)
Hors ligne