УрокНеобходимые файлы для создания шаблона. Comment.tpl.php

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

Вот как предлагает строить комментарии модуль comment:

<div class="comment<?php print ($comment->new) ? ' comment-new' : ''; print ' '. $status; ?> clear-block">
    <?php print $picture; ?>
 
    <?php if ($comment->new): ?>
        <span class="new"><?php print $new; ?></span>
    <?php endif; ?>
 
    <h3><?php print $title; ?></h3>
 
    <div class="submitted">
        <?php print $submitted; ?>
    </div>
 
    <div class="content">
        <?php print $content; ?>
        <?php if ($signature): ?>
        <div class="user-signature clear-block">
            <?php print $signature; ?>
        </div>
        <?php endif; ?>
    </div>
 
    <?php print $links; ?>
</div>

Структура тут довольно простая. Но всё же давайте разберём её подробно

Сначала, если есть, мы выводим аватарку пользователя (кстати, в настройках сайта можно поставить аватару пользователя по умолчанию):

<?php print $picture; ?>

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

<?php if ($comment->new): ?>
    <span class="new"><?php print $new; ?></span>
<?php endif; ?>

Далее выводится заголовок комментария. Если заголовок не был указан, то в качестве заголовка возьмётся несколько первых слов из самого комментария:

<h3><?php print $title; ?></h3>

После этого будет выведен автор комментария и время его создания:

<div class="submitted">
    <?php print $submitted; ?>
</div>

Далее выводится сначала содержимое комментария, потом (опять же - если задана) подпись:

<div class="content">
    ?php print $content; ?>
    <?php if ($signature): ?>
        <div class="user-signature clear-block">
            <?php print $signature; ?>
        </div>
    <?php endif; ?>
</div>

Ну и в конце комментария выводится ссылки комментария. Стандартно, для обычных пользователей это ссылка "ответить", а для админа "удалить, редактировать, ответить":

<?php print $links; ?>

В файле comment.tpl.php вы можете менять местами любые переменные, удалять их если нужно или добавлять свои.

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

Стандартные переменные

  • $author - автор комментария. Может быть как ссылкой так и обычным текстом
  • $content - содержимое комментария
  • $date - дата создания комментария. Выводится так: format_date($comment->timestamp, 'custom', 'j m'), где вместо j можно писать любой php-формат даты. Посмотреть его можно тут
  • $links - выводит ссылки комментария
  • $new - выводит сообщение, если комментарий новый
  • $picture - выводит аватарку пользователя
  • $signature - подпись пользователя
  • $status - статус комментария. Возможные его значения: comment-unpublished, comment-published или comment-preview
  • $submitted - выводит одной строку дату и автора коммента
  • $title - заголовок коммента в виде ссылки

Контентные переменные

  • $comment - объект с абсолютно всем содержимым комментария
  • $node - объект статьи, к которой относится комментарий

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

Комментарии

Аватар пользователя powerscin
powerscin написал:

Еще $zebra забыл

18.12.2010 13:24
Аватар пользователя Spleshka
Spleshka написал:

Неа :) В стандартных переменных зебры нет - сам посмотри http://api.drupal.ru/api/function/template_preprocess_comment/6

18.12.2010 15:28
Аватар пользователя fetish
fetish написал:

а как сделать чтобы аватарка выводилась также как у вас тут, тоисть напротив текста а не сверху или снизу текста

14.04.2011 18:32
Аватар пользователя Spleshka
Spleshka написал:

Надо править файл comment.tpl.php, а потом правильный css написать :)

15.04.2011 23:45
Аватар пользователя Дима
Дима написал:

Вот бы еще разобраться с самой формой для добавления комментария для незарегестрированных пользователей и зарегестрированных, где поискат не подскажите?

30.12.2011 00:23
Аватар пользователя Spleshka
Spleshka написал:

Форма называется comment_form. Её можно перекрыть в теме (в template.php)

30.12.2011 19:36
Аватар пользователя Дима
Дима написал:

Спасибо, я с comment_form ознакомился поближе, но как добраться до форм заполнения емейла и автора комментария, к тем полям где выводиться "Ваше имя" и "Ваш емейл" откуда берутся подписи к формам так и не могу найти, и к тому же для зарегестрированных посетителей эти формы выводить не нужно, еще бы хотелось чтоб пользователь мог редактировать свой коммент и удалять, а не только админ. Комментарии это такая тема для обсуждения в которой хочется и нужно разобраться поглубже.

05.01.2012 22:05
Аватар пользователя Spleshka
Spleshka написал:

Чтобы пользователь мог редактировать и удалять свои комментарии - настройте ему соответствующие права для комментариев на странице /admin/people/permissions.

По поводу полей в форме - попробуйте почитать эту статью. Она для шестого Друпала, но смысл по сути тот же. Только в семёрке в теме можно использовать hook_form_alter() в template.php для изменения форм.

05.01.2012 22:30
Аватар пользователя moroz
moroz написал:

Спасибо за уроки!
В друпал 7 в комментариях не $date, а $created.

24.01.2013 17:10

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