[решено] Сниппет прямого эфира

Главные вкладки

Аватар пользователя RayB RayB 19 августа 2009 в 22:25

Есть такой сниппет прямого эфира

<?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);
 }
?>

выводит автора последнего комментария, заголовок комментируемого материала, кол-во комментариев.
помогите модернизировать, чтобы также выводил определенно кол-во символов последнего комментария (не тему, а именно сам комментарий).

Комментарии

Аватар пользователя Ромка Ромка 19 августа 2009 в 23:31
<?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->comment0555);
 } 
 if(
count($items)){
  print 
theme('item_list',$items);
 }
?>

Вместо 555 количество символов, которые хочешь вывести.

Аватар пользователя RayB RayB 2 января 2010 в 8:59

Ромка wrote:

<?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->comment0555);
 } 
 if(
count($items)){
  print 
theme('item_list',$items);
 }
?>

Вместо 555 количество символов, которые хочешь вывести.

не подскажите как еще добавить вывод аватарки автора комментария? используется Imagecache Profiles

Аватар пользователя Red159753 Red159753 10 августа 2012 в 11:29

<?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);
}
?>
Спасибо за сниппет, всё отлично, но хотелось чтобы комментарии выводились не все а по типу материала а ещё лучше по номеру ноды как это осуществить а также чтобы выводил время комментария, вообщем должно получиться следущее

автор комментария
дата и время
начальный отрывок текста комментария(ссылка в виде стрелки или слова весь коментарий)

Буду очень благодарен тому кто сделает данные поправки!

Аватар пользователя bluefish bluefish 2 октября 2009 в 16:47

RayB wrote:
Imagecache Profiles (http://setegnom.com/node/1032) + Avatar Blocks (http://drupal.org/project/avatar_blocks, http://drupal.org/node/286990)

Imagecache Profiles для того чтобы можно было использовать разные размеры аватаров для разных целей :)

сушифан просто супер) очень-очень симпатичный сайт)
сейчас сижу и удивляюсь вашей аккуратности и умению Smile

Аватар пользователя Oleksa@drupal.org Oleksa@drupal.org 15 сентября 2009 в 19:50

Если это
<?phpsubstr($comment->comment, 0, 555);?>
обрезает слово посередине, то в конце будет Знак вопроса в черном ромбе (�)
хотя все перекодировано в UTF-8

Аватар пользователя Oleksa@drupal.org Oleksa@drupal.org 16 сентября 2009 в 19:13

Спасибо. И еще этот кусок комментария , который отражается, не проходит ни какой фильтрации, как ее можно добавить? В какую сторону смотреть нужно? может в
<?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> в начало комментария то от дизайна сайта мало, что останется.

Аватар пользователя Chalk Chalk 27 марта 2010 в 20:33

Подскажите пожалуйта что лучше в плане меньшей нагрузки на сервер: реализовать прямо эфир через views и темизацию или воспользоваться этим сниппетом?

Аватар пользователя deniro77 deniro77 24 июня 2010 в 9:38

Первый раз решил использовать сниппет, все как то модулями удавалось решать. Вставил сниппет Ромки из первого коммента и мне выдало такую надпись (внизу). Пробовал и на Денвере и на хостинге - результат один. Как правильно нужно вставить данный сниппет.

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

Аватар пользователя deniro77 deniro77 1 июля 2010 в 11:57

не подскажите, каким образом подправить сниппет, чтобы вместо "гость" выводилось имя автора, которое он указывает при написании комментария? сейчас, всех незарегистрированных пользователей он выводит как "гость".
Ну или хотя бы просто отключить вывод имени автора, если первое невозможно. Как это сделать?

Аватар пользователя iNFerNo iNFerNo 1 июля 2010 в 12:30

этот снипет решает вопрос вывода последнего комментария в каком либо топике да?

а можно ограничить например определенным материалом?

например типа блог.

выводиться будет ник : тема блока (количество в нем комментов)

или это уже не прямой эфир?

Аватар пользователя iNFerNo iNFerNo 3 июля 2010 в 12:19

"olk" wrote:
Посмотрите здесь Новый модуль cclive (Прямой эфир) Он гораздо гибче приведенного сниппета, в ближайшее время дополню его ограничением по типу материалов

Отличный модуль. Самый лучший. Имхо.

Один минус (по крайне мере для меня) о, при наведение на ссылку... он показывает само сообщение комментария, и если там применены div br и прочие фильтры - он показывает их.

Может сделать возможность отключать это в настройках, и просто дублировать название темы или выводить - просмотреть в сплывающей подсказке? Ну и в идеале выводить так как это выводиться на страничке в оригинале. А то на той же странице (страница и блок, так вот сейчас о странице речь) модуля выводит все по своим настроенным фильтрам.

Спасибо за модуль.

Аватар пользователя iNFerNo iNFerNo 3 июля 2010 в 12:23

Да и самый главный косяк...

у меня сайт находиться в папке домена, и при наведение на ссылки которые выводит модуль, в ссылке дублируется папка.

т.е.

site.ru/papke/

а ссылка

site.ru/papka/papka/и дальше идут настроенные синонимы

Аватар пользователя iNFerNo iNFerNo 3 июля 2010 в 13:40

c

"iNFerNo" wrote:
Да и самый главный косяк...

у меня сайт находиться в папке домена, и при наведение на ссылки которые выводит модуль, в ссылке дублируется папка.

т.е.

site.ru/papke/

а ссылка

site.ru/papka/papka/и дальше идут настроенные синонимы

исправил в href_comment пути добавив ../node/ вместо node/

Аватар пользователя iNFerNo iNFerNo 3 июля 2010 в 13:41

Только теперь...

ссылка ведет на первоначальный адрес ноды без использования синонима.

как сделать что бы ссылка как задумано?