Здесь может быть и Ваш сайт!
Посмотреть портфолио »»

Красиво оформляем комментарии



Внешний вид комментариев играет немаловажную роль в восприятии сайта, вместе с тем ни для кого не секрет, что отображение комментариев “по умолчанию” далеко от идеала. В каждой теме WordPress красивому оформлению отзывов к записям уделен немалый кусок кода; в то же время многие начинающие пользователи WordPress, пытающиеся создать собственные шаблоны оформления, частенько спотыкаются на этой стадии. Самым простым вариантом решения может стать copy-paste стилей и кода отображения комментариев из особо понравившейся темы, но разве не приятнее не просто скопировать, а разобраться в том, что, как и зачем вы сделали? В этой заметке я поделюсь своими “исследованиями” в этой области и постараюсь доступным языком рассказать о том, как сделать такое же отображение комментариев, как на этом блоге. Конечный результат вы можете посмотреть на картинке:

Красивое отображение комментариев

Для работы нам понадобятся следующие файлы из папки шаблона: single.php, comments.php, page.php, functions.php и style.css.

Следует заметить, что код, содержащийся в comments.php, можно просто вставить в нужные места single.php и page.php, но у такого размещения есть один минус: фактически у вас появляется 2 независимых описания внешнего вида комментариев и при внесении каких-либо изменений вам придется вносить их сразу в 2 файла. Однако, если вы хотите, чтобы комментарии к записям и страницам отображались по-разному, то этот способ — именно то, что вам нужно.

Если же вы решили последовать моему примеру и использовать отдельный файл comments.php, то вам нужно подключить его к шаблону. Делается это очень просто. Взглянем на код файлов single.php и page.php, он выглядит примерно так:

<?php get_header(); ?>
<div id="content">

    Здесь идет описание отображения записей и всего прочего, вроде сервисов подписки, соцзакладок, похожих записей и т.п.

</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?> 

Прямо перед последним закрывающим тегом </div> вставляем следующий кусочек кода:

<div id="comments">
    <?php comments_template(); ?>
</div>

Таким образом, мы очерчиваем область отображения комментариев и, собственно, подключаем comments.php. Теперь надо добавить немного кода в style.css — задать отступы, цвет фона и границ для области, где на странице будут отображаться комментарии.

#comments {
margin-left: 45px;
padding: 10px;
border: 1px solid #dcdcdc;
background: #f4f4f4;
}

Комментарии отображаются в WordPress ненумерованным списком, то есть, если мы ничего не предпримем, то перед каждым комментарием будет стоять маркер пункта списка. Чтобы этого избежать, добавим в файл style.css следующие строки:

#comments ul {
list-style-type: none;
}

В моем оформлении каждый комментарий отделен от других. Для этого я отдельно определила стили для каждого пункта списка:

#comments li {
list-style-type: none;
border: 1px solid #cccccc;
background: #ffffff;
padding: 0px;
margin-bottom: 15px;
min-height: 65px;
border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
}

Здесь надо обратить внимание на некоторые свойства: min-height мы используем для того, чтобы в случае короткого комментария весь список комментариев отображался корректно, столбиком, а не лесенкой. А набор свойств border-radius служит для создания закругленных уголков.

Теперь разберемся с форматом комментариев.. По умолчанию в Wordress вывод списка комментариев осуществляется функцией wp_list_comments, но далеко не всех она устраивает. Чтобы включить в теме свой формат отображения комментариев, воспользуемся подсказкой Sonik-и. В файле comments.php найдем строчку

<?php wp_list_comments(); ?>

и чуть-чуть ее подправим:

<?php wp_list_comments('callback=custom_comment'); ?>

Теперь открываем functions.php и добавляем туда следующие строчки:

# Свой формат комментариев
function custom_comment($comment, $args, $depth) {
$GLOBALS['comment'] = $comment; ?>
<li <?php comment_class(); ?> id="li-comment-<?php comment_ID( ); ?>">
	<div id="comment-<?php comment_ID( ); ?>" class="vcard">
		<div id="avatar">
			<?php if ($args['avatar_size'] != 0) echo get_avatar( $comment, $size='55', $args['avatar_size'] ); ?>
		</div>
		<div id="commentmetadata">
			<div class="currentcommentdate">Комментарий оставлен&nbsp;<?php comment_date('d.m.Y') ?> в <?php comment_time() ?></div>
			<div class="authorlink"><?php comment_author_link() ?></div>
		</div>
<?php if ($comment->comment_approved == '0') : ?>
	<span style="color: red;">Ваш отзыв будет опубликован после проверки администратором.</span>
<?php endif; ?>
	<div id="commentstext">
		<?php comment_text() ?>
	</div>
</div>
<?php }

В этом новом шаблоне мы определили отдельные id для аватара и заголовка комментария, а также отдельные классы для содержащихся в заголовке имени комментатора (являющегося под шумок еще и ссылкой на его сайт) и даты добавления комментария. Теперь осталось только определить для всего этого стили:

#avatar {
float: left;
margin: -10px 10px 5px 10px;
border: 2px solid #999999;
background: #f4f4f4;
padding: 3px;
z-index: 10;
box-shadow: 3px 3px 15px -5px #666666;
-moz-box-shadow: 3px 3px 15px -5px #666666;
-webkit-box-shadow: 3px 3px 15px -5px #666666;
}
#commentmetadata {
background: #cccccc;
padding: 4px 0px;
border-top-left-radius: 10px;
-moz-border-radius-topleft: 10px;
-webkit-border-top-left-radius: 10px;
border-top-right-radius: 10px;
-moz-border-radius-topright: 10px;
-webkit-border-top-right-radius: 10px;
}
.currentcommentdate {
color: #666666;
font: 12px Comic Sans MS;
float: right;
text-align: right;
margin: 0px 5px 2px 2px;
}
#comments a, #comments a:visited {
color: #666666;
text-align: center;
font: 14px Comic Sans MS;
text-decoration: none;
}
#comments a:hover, #comments a:active {
color: #333333;
text-decoration: none;
}
.authorlink {
color: #666666;
font: bold 14px Comic Sans MS;
}

А в следующей записи я расскажу, как можно сделать красивую форму отправки комментариев :)


Также в рубрике:

    Желаете оставить комментарий?

    (обязательно)

    (обязательно)

    (необязательно)

    К записи оставлено 31 коммент.

      Тёмный лес :)

      *тихо хихикаю* Вот в точности эти же слова у меня вырвались, когда я впервые в жизни открыла в редакторе файлики шаблонов WordPress… А сейчас ничего, разобралась :D

      Я только пишу выбираю картиночки. Выбрала шаблоны.
      А всё остальное делает мой муж

      А у нас с мужем ситуация обратная, не любит он web-программирование :lol: Но, правда, во всем меня поддерживает.

      А мой обожает в компе ковыряться:)

      Повезло Вам, девочки. А я ни сама не разбираюсь, ни муж. :)

      Ladybloger, так, может, помочь с чем-нибудь в шаблоне? ;) Две головы лучше, чем одна…

      А я использую плагин IntenseDebete – коментарии красиво выглядят)

      Я себе тоже отдельно закачивала плагин древовидный на комменты. Вот, все размышляю еще на смайлами под комменты…

      По поводу смайлов: в WordPress на самом деле довольно много смайликов на все случаи жизни, вот только не все знают их коды. Список кодов можно посмотреть здесь. Ну а если они не устраивают, то рекомендую QIP Smileys или вот этот плагин.

      А я все отдельный частей не доберусь. Только удалось ЮРЛ поле добавить в ДЛЕ. Самим дизайном, наверное уже пол года как не занимался… Так только мелкие шаблоны переверстывал.

      Lifeviev, никогда не поздно начать редактировать детали :)

      Яркий пример использования этого дизайна коментариев в моем блоге, немного исправил и добавил

      Здравствуйте, Ольга.
      Пытаюсь настроить вывод комментариев по Вашему уроку…Но, что-то…
      Вот, например, рамки куда-то пропали

        Здравствуйте. Что именно не получается? Иногда бывает так, что вывод комментариев зависит от остального шаблона, но это случается очень редко.

      А я не могу найти такую строчку :cry:

        Какую именно? Код, наверное, “съелся” при отправке комментария. В разных темах вывод комментариев может быть сделан по-разному. Напишите мне на почту через форму контактов, разберемся :)

      Все получилось, спасибо! Скажите, только, как аватарки вернуть на то что было изначально в установленной теме (там в админке есть отдельная настройка, какими они должны быть, а я видимо этими изменениями ее затер)

        Вячеслав, настройка вида аватаров в админке находится на страничке “параметры – обсуждение”. Изменение кода вывода не влияет на вид аватаров :) Наверное, Вы случайно изменили.

          Разобрался! Я заменил вашу строчку в functions.php:

          на стандартную (вычитал в wordpress):
          comment_author_email, 48 ); ?>

          и контроль на аватарами вернулся! Спасибо большое за помощь.

          Если вы не против, разрешите еще вопрос :)

          Теперь единственное, что у меня не получается, это овальная рамка для комментариев, как у вас. У меня они к квадратных рамках, а у вас углы закруглены.

            О, вы успели найти ответ раньше, чем я обнаружила Ваше письмо на почте! :) Замечательно. А закругленные уголки обеспечиваются свойством border-radius, причем для разных семейств браузеров его надо прописывать по-разному. например, -moz-border-radius – для firefox и т.п. А для отображения этого в IE служит такая вещь как PIE. Подробнее смотрите здесь.

              Спасибо. У меня шапка сверху закругляется, а линии обводящей комментарий, чтобы отделить его от фона вообще нет. Я пытался комментарий поместить в div=comments, но по разному получается, но не так как у вас. К сожалению, не могу вам это наглядно показать, так как блог еще не вывесил в интернет, можно я это у вас через дня 2-3 уточню?

      Разумеется, можно :smile:

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

          Анна, здесь все зависит от нескольких вещей. Во-первых, все написанное относится к wordpress. Если у Вас этот движок, то идем дальше. Во-вторых, некоторые хостинги предоставляют “коробочный” WordPress, то есть Вы выбираете тему перед установкой движка/активацией аккаунта и в дальнейшем либо вообще не можете ее изменить, либо можете изменить только на какой-то из предоставляемых хостингом вариантов.
          Определить подобную “подставу” можно зайдя в админ-панель. В левом меню есть раздел “Дизайн” (может называться еще “Внешний вид”), а в нем – подраздел “Редактор”. Если такого раздела нет или он неактивен – то увы, подправить тему нельзя. Если же подобный раздел есть – то именно там и находятся все файлы, о которых я говорю в статье :)

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

              это снова я,в functions.php куда именно вставлять # Свой формат комментариев и то.что следует за этими строчками?

        Ура, все доделал, наконец. Благодаря вам очень красивые комментарии получились. Если интересно, посмотрите в самой верхней записи на vscotch.ru

      В самом конце functions.php есть закрывающая фигурная скобочка. Вот прямо перед ней.

      Вот что у меня получилось в результате

      2 Responses to “Обо мне”

      Warning: call_user_func(custom_comment) [function.call-user-func]: First argument is expected to be a valid callback in /home/u122855/samorazvitieizdorovyeru/www/wp-includes/comment-template.php on line 1334

      Warning: call_user_func(custom_comment) [function.call-user-func]: First argument is expected to be a valid callback in /home/u122855/samorazvitieizdorovyeru/www/wp-includes/comment-template.php on line 1334
      Добавить комментарий
      Logged in as admin. Log out »

        Откройте файл comment-template.php и 1334 строчку выложите