Je l'ai viré parce que d'une je n'en ai pas l'utilité, et de deux lorsque je mettais le code dans l'index.php il ne connaissait pas le "$user['forbidden_categories']" qui n'est pas défini dans comments.php. (sinon il aurait suffit de recopier le code juste avant)
Hors ligne
est ce qq'un peut me donner un tuyau pour definir le 'forbidden_categories' pour que cette requete focntionne ?
merci !!
Dernière modification par sakkhho (2007-04-22 11:41:44)
Hors ligne
un petit up car le post s'enfonce dans les profondeurs du forum...
bon ok j'exagere un peu mais j'aimerai vraiment installer cette fonction de maniere correct...
Dernière modification par sakkhho (2007-04-24 08:29:51)
Hors ligne
Quel est le problème?
L'idée de départ est bonne, et j'ai survolé une solution.
8-)
Hors ligne
Il faudrait refaire un résumé ou une re-formulation, car je suis un peu perdu avec tous les posts...
Sinon dans la vie, rien d'impossible... mais à quel prix... ;-)
Hors ligne
[HS]On est bien du même avis.[/HS]
Où se trouve ce :
AND category_id NOT IN ('.$user['forbidden_categories'].')'
?
S'il est convenablement placé, je ne vois pas pourquoi cela ne marcherait pas...
Donc une synthèse claire.
8-)
Hors ligne
Compte rendu des differents post :
- Niubert souhaitait affichers les X derniers commentaires directement sur la page d'acceuil de la galerie.
il a donc proposé les modifications suivantes :
Dans /index.php, juste avant :
//------------------------------------------------------------ log informations
pwg_log('category', $page['title']);
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 /template/yoga/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 -->
Pour ceux qui veulent vous pouvez aller voir la galerie de nuibert.
Cependant et c'est la qu'est ma demande, la modification de nuibert affiche les commentaires des photos de toutes les catégories pour tous les visiteurs.
Comme je possède une galerie mi privée mi pubique ce que j'aimerai c'est comme dans le menu 'commentaires',
afficher seulement les commentaires associés aux photos autorisés pour un visiteur.
dans le comments.php il y a cette requete :
if ($user['forbidden_categories'] != '')
{
$query.= '
AND category_id NOT IN ('.$user['forbidden_categories'].')';
}
mets elle n'a aucune incidence, je l'avais placé comme ceci dans le index.php
// 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;
if ($user['forbidden_categories'] != '')
{
$query.= '
AND category_id NOT IN ('.$user['forbidden_categories'].')';
}
le $user['forbidden_categories']. n'a pas l'air d'etre connus ici...
je m'en remets à vous
j'espere que ce resumé est plus clair.
Hors ligne
Oui, très clair: je l'aurai placé ainsi dans l' index.php
// 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;
Bien que je n'ai rien testé, le $user['forbidden_categories']. devrait être connu maintenant...
8-)
Hors ligne
De rien.
Y aurait-il un lien disponible sur un des sites ayant implémenté l'astuce pour voir ce que cela donne?
Merci.
8-)
Hors ligne