Переход к предыдущей публикации Проверка сервера “на вшивость” или “Как заDoSить Daemony.org?” (Оптимизируем связку Apache+PHP+MySQL) Нет худа без добра Переход к следущей публикации

Мелкосрочный ремонт: постраничный вывод комментариев

Четверг, 23 апреля, 2009 15:31:23 EEST

Исправления от 25 апреля, 2009 03:48:23

Мелкосрочный ремонт: небольшая адаптация шаблона под Wordpress 2.7.x Посмотрел сегодня, как разростаются комментарии и подумал о том, что давно пора было уже адаптировать код шаблона блога под Wordpress 2.7 ведь в нем столько вкусного появилось, что в прежних версиях было реализовано плагинами.

Например, постраничный вывод большого числа комментариев - то что мне на сегодняшний день и нужно. Раньше разбивать комментарии на страницы приходилось чем-то вроде Paginated Comments, а теперь достаточно один раз исправить свой шаблон.

Подробно о том, какие изменения следует сделать в коде, чтобы шаблон мог использовать эксклюзивные возможности Wordpress 2.7.x рассказала Соника в своем блоге здесь и здесь. Также в кодексе Вордпресс есть статья на эту тему, правда, на английском языке.

Чтобы заставить шаблон выводить комментарии по 10 штук на страницу (изменяется в настройках в админ.панели), мне пришлось добавить в первую очередь в файл header.php шаблона:

<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?>

до вызова функции <?php wp_head(); ?>. Далее отредактировать comments.php и functions.php. В первом меняем способ вывода комментариев. Они теперь выводятся всего одной функцией wp_list_comments(). А в functions.php можно подробно определить сам внешний вид (стили и разметку) ленты.

comments.php

<?php if ( have_comments() ) : ?>
 <h1 class="comments-title" id="comments">
  <?php comments_number('Комментариев нет', '1 комментарий', 'Комментариев %' );?>
 </h1>
 <p style="text-align:center;"><?php paginate_comments_links(); ?></p>
 <div id="comments">
  <?php wp_list_comments('callback=daemony_comment'); ?>
 </div>
 <p style="text-align:center;"><?php paginate_comments_links(); ?></p>
 <?php else : ?>
  <?php if ('open' == $post->comment_status) : ?>
  <?php else : ?>
 <?php endif; ?>
<?php endif; ?>

functions.php

<?php
function daemony_comment($comment, $args, $depth) {
$GLOBALS['comment'] = $comment; ?>
 <div class="comment" id="comment-<?php comment_ID() ?>">
  <div class="comment-avatar">
   <?php echo get_avatar( $comment, 50 ); ?>
  </div>
  <div class="comment-content">
   <div class="comment-info">
    <span><?php comment_author_link() ?></span>
    <?php comment_date('j F, Y  H:i:s T') ?>
    <?php edit_comment_link('Править','&amp;amp;nbsp;',''); ?> .:.
     <?php if (function_exists('quoter_comment')) { quoter_comment(); } ?>
   </div>
  <?php if ($comment->comment_approved == '0') : ?>
  <em>Ваш комментарий ожидает проверки и одобрения.</em>
  <?php endif; ?>
       <?php comment_text() ?>
  </div>
 </div>
<?php } ?>

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

Обратите внимание:
теперь самый последний комментарий располагается первым, а не последним, как было раньше.

Похожие публикации

Комментариев 2

Daemony 4 мая, 2009 14:17:11 EEST .:. ID #9370 .:.

Не автору публикации “спасибо” - разработчикам Wordpress. :roll:

Дмитрий 4 мая, 2009 14:08:13 EEST .:. ID #9368 .:.

Супер, долго искал, большое спасибо автору!

Возник вопрос по этой теме, или есть что добавить? Говорите!

  1. Зарегистрированным пользователям вводить защитный код (captcha) не приходится.
  2. Загрузить свою аватарку Вы сможете, зарегистрировавшись на сервисе www.gravatar.com
Публикуя комментарий Вы подтверждаете, что ознакомились c Правилами и принимаете их!
HOMOSAPIENS ONLY! :)