Есть такой сниппет прямого эфира
<?php
$number=10;
$result = db_query_range(db_rewrite_sql(
"SELECT n.type,n.title,n.nid,cm.cid,u.uid,u.name,cm.cnt,cc.timestamp
FROM {node_comment_statistics} nc JOIN {node} n ON nc.comment_count > 0 AND n.nid=nc.nid
INNER JOIN (SELECT max(c.cid) as cid ,c.nid,count(c.cid) as cnt FROM {comments} c GROUP by c.nid ) cm
ON cm.nid=n.nid
INNER JOIN {comments} cc ON cc.cid=cm.cid
INNER JOIN {users} u ON u.uid=cc.uid
ORDER BY nc.last_comment_timestamp DESC"),0,$number);
$items=array();
while($comment=db_fetch_object($result)){
$items[] = '<strong>'.theme('username',user_load($comment->uid)).
':</strong> '. l($comment->title.' ('.$comment->cnt.')', 'node/'.
$comment->nid, array('fragment' => 'comment-'. $comment->cid));
}
if(count($items)){
print theme('item_list',$items);
}
?>
выводит автора последнего комментария, заголовок комментируемого материала, кол-во комментариев.
помогите модернизировать, чтобы также выводил определенно кол-во символов последнего комментария (не тему, а именно сам комментарий).
Комментарии
<?php
$number=10;
$result = db_query_range(db_rewrite_sql(
"SELECT n.type,n.title,n.nid,cm.cid,u.uid,u.name,cm.cnt,cc.timestamp, cc.comment
FROM {node_comment_statistics} nc JOIN {node} n ON nc.comment_count > 0 AND n.nid=nc.nid
INNER JOIN (SELECT max(c.cid) as cid ,c.nid,count(c.cid) as cnt FROM {comments} c GROUP by c.nid ) cm
ON cm.nid=n.nid
INNER JOIN {comments} cc ON cc.cid=cm.cid
INNER JOIN {users} u ON u.uid=cc.uid
ORDER BY nc.last_comment_timestamp DESC"),0,$number);
$items=array();
while($comment=db_fetch_object($result)){
$items[] = '<strong>'.theme('username',user_load($comment->uid)).
':</strong> '. l($comment->title.' ('.$comment->cnt.')', 'node/'.
$comment->nid, array('fragment' => 'comment-'. $comment->cid)) . ": " . substr($comment->comment, 0, 555);
}
if(count($items)){
print theme('item_list',$items);
}
?>
Вместо 555 количество символов, которые хочешь вывести.
не подскажите как еще добавить вывод аватарки автора комментария? используется Imagecache Profiles
<?php
$number=10;
$result = db_query_range(db_rewrite_sql(
"SELECT n.type,n.title,n.nid,cm.cid,u.uid,u.name,cm.cnt,cc.timestamp, cc.comment
FROM {node_comment_statistics} nc JOIN {node} n ON nc.comment_count > 0 AND n.nid=nc.nid
INNER JOIN (SELECT max(c.cid) as cid ,c.nid,count(c.cid) as cnt FROM {comments} c GROUP by c.nid ) cm
ON cm.nid=n.nid
INNER JOIN {comments} cc ON cc.cid=cm.cid
INNER JOIN {users} u ON u.uid=cc.uid
ORDER BY nc.last_comment_timestamp DESC"),0,$number);
$items=array();
while($comment=db_fetch_object($result)){
$items[] = ''.theme('username',user_load($comment->uid)).
': '. l($comment->title.' ('.$comment->cnt.')', 'node/'.
$comment->nid, array('fragment' => 'comment-'. $comment->cid)) . ": " . substr($comment->comment, 0, 555);
}
if(count($items)){
print theme('item_list',$items);
}
?>
Спасибо за сниппет, всё отлично, но хотелось чтобы комментарии выводились не все а по типу материала а ещё лучше по номеру ноды как это осуществить а также чтобы выводил время комментария, вообщем должно получиться следущее
автор комментария
дата и время
начальный отрывок текста комментария(ссылка в виде стрелки или слова весь коментарий)
Буду очень благодарен тому кто сделает данные поправки!
Ну просто огромаднейшее спасибо! )
upd: Применил здесь http://sushifan.ru/ )
ого) здорово сайт сделан,
не подскажешь как селал блок "новые пользователи", с иконками. Очень здорово
Спасибо
Imagecache Profiles (http://setegnom.com/node/1032) + Avatar Blocks (http://drupal.org/project/avatar_blocks, http://drupal.org/node/286990)
Imagecache Profiles для того чтобы можно было использовать разные размеры аватаров для разных целей
спасибо!
сушифан просто супер) очень-очень симпатичный сайт)
сейчас сижу и удивляюсь вашей аккуратности и умению
спасибо )
спасибо, полезно
Если это
<?phpsubstr($comment->comment, 0, 555);?>
обрезает слово посередине, то в конце будет Знак вопроса в черном ромбе (�)
хотя все перекодировано в UTF-8
Примените вместо substr mb_substr а еще лучше drupal_substr
Спасибо. И еще этот кусок комментария , который отражается, не проходит ни какой фильтрации, как ее можно добавить? В какую сторону смотреть нужно? может в
<?phpcheck_markup($comment->comment, $variables['comment']->format);?>
?т.е. такой код как сейчас безопасным никак не назовешь и без фильтрации я бы не рискнул им пользоваться. Классический пример, если вставить это
<p style='position: absolute; top: 0px; left; 0px; width: 10000; height: 10000; background-color: white; z-index: 1000;'></p>
в начало комментария то от дизайна сайта мало, что останется.Подскажите пожалуйста, как сделать так, чтобы количество комментариев выводилось в конце строки.
Подскажите пожалуйта что лучше в плане меньшей нагрузки на сервер: реализовать прямо эфир через views и темизацию или воспользоваться этим сниппетом?
Первый раз решил использовать сниппет, все как то модулями удавалось решать. Вставил сниппет Ромки из первого коммента и мне выдало такую надпись (внизу). Пробовал и на Денвере и на хостинге - результат один. Как правильно нужно вставить данный сниппет.
P.S. Друпал 6.17
Вероятно, SQL-запрос содержит ошибку. При наличии таковой, ниже будет выведена ошибка MySQL-сервера, облегчающая диагностику проблемы.
ERROR: Неизвестная пунктуация @ 1
STR: <?
SQL: <?php
$number=10;<?php
$number=10;<?php
$number=10;<?php
$number=10;<?php
$number=10;<?php
$number=10;<?php
$number=10;
SQL-запрос:
<?php $number=10;
Ответ MySQL:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<?php
$number=10' at line 1
сам туплю. все работает
не подскажите, каким образом подправить сниппет, чтобы вместо "гость" выводилось имя автора, которое он указывает при написании комментария? сейчас, всех незарегистрированных пользователей он выводит как "гость".
Ну или хотя бы просто отключить вывод имени автора, если первое невозможно. Как это сделать?
этот снипет решает вопрос вывода последнего комментария в каком либо топике да?
а можно ограничить например определенным материалом?
например типа блог.
выводиться будет ник : тема блока (количество в нем комментов)
или это уже не прямой эфир?
Посмотрите здесь Новый модуль cclive (Прямой эфир) Он гораздо гибче приведенного сниппета, в ближайшее время дополню его ограничением по типу материалов
Отличный модуль. Самый лучший. Имхо.
Один минус (по крайне мере для меня) о, при наведение на ссылку... он показывает само сообщение комментария, и если там применены div br и прочие фильтры - он показывает их.
Может сделать возможность отключать это в настройках, и просто дублировать название темы или выводить - просмотреть в сплывающей подсказке? Ну и в идеале выводить так как это выводиться на страничке в оригинале. А то на той же странице (страница и блок, так вот сейчас о странице речь) модуля выводит все по своим настроенным фильтрам.
Спасибо за модуль.
Да и самый главный косяк...
у меня сайт находиться в папке домена, и при наведение на ссылки которые выводит модуль, в ссылке дублируется папка.
т.е.
site.ru/papke/
а ссылка
site.ru/papka/papka/и дальше идут настроенные синонимы
c
исправил в href_comment пути добавив ../node/ вместо node/
Только теперь...
ссылка ведет на первоначальный адрес ноды без использования синонима.
как сделать что бы ссылка как задумано?
вернул все назад и убрал
$base_url .
Ну и вопрос решил убрав в темизационых файлах
check_plain($cclive_item['comment_content']) .
Может всё-таки подскажете как отфильтровать по типу материала?
WHERE n.type='тип материпла'