Сага о wp_list_comments



При разработке шаблона к Wordpress для своего блога, когда я добрался до комментариев, я столкнулся с проблемами.

Собственно проблема была одна: как это сделать?

В шаблонах для вывода списка комментариев обычно используют функцию wp_list_comments. Вот примерно так:

<ol class="commentlist">
<?php wp_list_comments(); ?>
</ol>

Казалось бы тут негде развернуться фантазии разработчика шаблонов. Функция wp_list_comments выдаёт комментарии в некоем заранее определённом шаблоне, и влиять на отображение можно только через таблицу стилей для этих элементов. Но выход нашёлся.

Во-первых заранее определённых шаблонов несколько, и применить их можно задав параметр style, при вызове этой функции. Значение может быть ‘div’, ‘ol’, или ‘ul’.

Примеры:

<div class="commentlist">
<?php wp_list_comments(array('style' => 'div')); ?>
</div>

или

<ol class="commentlist">
<?php wp_list_comments(array('style' => 'ol')); ?>
</ol>

или наконец

<ul class="commentlist">
<?php wp_list_comments(array('style' => 'ul')); ?>
</ul>

После того как выбран шаблон – можно играть стилями, двигать аватару вправо-влево, играть границами и прочими параметрами, до получения нужного эффекта.

my-comment-style Во-вторых, если игра стилями не может дать того что нужно, можно ввести свой шаблон оформления. Наподобие такого:

В общем я не смог придумать ничего лучшего чем использование таблиц.

Для этого в шаблоне нужно вызвать функцию wp_list_comments с хитрым параметром callback

<ol class="commentlist">
<?php wp_list_comments('callback=mytheme_comment'); ?>
</ol>

Где mytheme_comment это название особой функции, которую нужно вставить в functions.php шаблона.

Эту функцию можно сделать например так:

<?php
function mytheme_comment($comment, $args, $depth) {
   $GLOBALS['comment'] = $comment; ?>
     <div id="comment-<?php comment_ID(); ?>" class="mycomment">
      <table><tbody><tr><td width="80" valign="top" >
	  <div class="comment-author vcard">
         <?php echo get_avatar($comment,$size='48',$default='<path_to_url>' ); ?>       
      </div>
	  </td><td width="100%" valign="top" style="padding-left: 10px;">
 
      <?php if ($comment->comment_approved == '0') : ?>
         <em><?php _e('Your comment is awaiting moderation.') ?></em>
         <br />
      <?php endif; ?>
 
      <div class="comment-meta commentmetadata"> <?php printf(__('<cite class="fn">%s</cite>'), get_comment_author_link()) ?> пишет <a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>"><?php printf(__('%1$s at %2$s'), get_comment_date(),  get_comment_time()) ?></a><?php edit_comment_link(__('(Edit)'),'  ','') ?></div>
 
      <?php comment_text() ?>
 
      <div class="reply">
         <?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
      </div>
	  </td></tr></table>
     </div>
 
<?php
        }
?>

Вот такой код у меня в шаблоне на момент написания поста. Для ваших целей можно изменить оформление вывода :)

Всё что тут было упомянуто так или иначе можно найти на http://codex.wordpress.org/Template_Tags/wp_list_comments

См.также

PS: В ближайшее время постов по WordPress не предвидится. В связи с окончанием разработки шаблона для своего блога.

Нет постов по теме.

Категории Wordpress |
автор: altesack / Понедельник, Апрель 06, 2009 / 16 комментов »

16 комментов

    Супер пост, крайне полезен для всех кто заводит блог.
    Оформлен, кстати, неплохо )

    Что-то я не вкурил, зачем такие сложности…

    Попробуй без этих сложностей сделать компановку комментариев как у меня ;)

    Ммммм…
    Мне только интересно, как у тебя выглядит длиииииинный-длиииинный камент.
    Так что, не обессудь.
    Ммммм…
    Мне только интересно, как у тебя выглядит длиииииинный-длиииинный камент.
    Так что, не обессудь.
    Ммммм…
    Мне только интересно, как у тебя выглядит длиииииинный-длиииинный камент.
    Так что, не обессудь.
    Ммммм…
    Мне только интересно, как у тебя выглядит длиииииинный-длиииинный камент.
    Так что, не обессудь.

    Ага, понял… хитрО.

    А не подскажете, как быть с древовидными комментариями в новом вордпресса? Как можно их кастомизировать?

    @ madbirdy:
    Как-то не сложилась у меня любовь к древовидным комментам. Не нравятся они мне. Не нравятся они мне. Они существенно усложняют не только программную часть, но и логику работы приложения.

    Поэтому я глубоко с ними не копался.

    Кстати 2.8 пока не ставлю. Судя по отзывам не фонтан. Жду 2.8.1

    *супер пост было сказано к тому, что не многие лезут разбираться c wp_list_comments – обычно дефолтное оформление многим подходит и так.

    кроме редактирование Edit полезно пихать ссылки на Delete и Spam

    Спасибо огромное! Благодаря этому способу можно довольно просто закастомизировать формочки с комментами!

    Напоролся на оформление шаблона, у Соники нашел способ решеиня проблемы

    @ Dandr:
    Я так понимаю это не для древо видных

    @ qosys:
    согласен с тобой

    @ Dandr:
    @ Chupik:
    @ Макс:
    @ madbirdy:

    Тест.
    Как такую штуку для ответа сделать?

    Плагин Comment Toolbar

    А как можно поменять стиль и текст у этих строчек?
    “Комментариев к записи: 5″
    “Оставить комментарий”

    У вас вместо них написано “xx комментов” и “ответить”.

    Пишу плагин – надо вывести на странице комментарии к посту.
    Так этот метод не работает. Не знаешь почему?