УрокНеобходимые файлы для создания шаблона. 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 - объект статьи, к которой относится комментарий
Теперь вы можете заворачивать разные переменные в свои классы и управлять их стилями. Надеюсь, тут вопросов не возникнет. Ну а если я ошибся - всегда можно задать вопрос в комментариях к этой статье, или написать мне сообщение.
- Spleshka
- 07.08.2010
- 18432
Комментарии
Еще $zebra забыл
Неа :) В стандартных переменных зебры нет - сам посмотри http://api.drupal.ru/api/function/template_preprocess_comment/6
а как сделать чтобы аватарка выводилась также как у вас тут, тоисть напротив текста а не сверху или снизу текста
Надо править файл comment.tpl.php, а потом правильный css написать :)
Вот бы еще разобраться с самой формой для добавления комментария для незарегестрированных пользователей и зарегестрированных, где поискат не подскажите?
Форма называется comment_form. Её можно перекрыть в теме (в template.php)
Спасибо, я с comment_form ознакомился поближе, но как добраться до форм заполнения емейла и автора комментария, к тем полям где выводиться "Ваше имя" и "Ваш емейл" откуда берутся подписи к формам так и не могу найти, и к тому же для зарегестрированных посетителей эти формы выводить не нужно, еще бы хотелось чтоб пользователь мог редактировать свой коммент и удалять, а не только админ. Комментарии это такая тема для обсуждения в которой хочется и нужно разобраться поглубже.
Чтобы пользователь мог редактировать и удалять свои комментарии - настройте ему соответствующие права для комментариев на странице /admin/people/permissions.
По поводу полей в форме - попробуйте почитать эту статью. Она для шестого Друпала, но смысл по сути тот же. Только в семёрке в теме можно использовать hook_form_alter() в template.php для изменения форм.
Спасибо за уроки!
В друпал 7 в комментариях не $date, а $created.
Комментировать