Тег comment entry

С помощью тега comment entry вы можете отображать отправленные пользователями комментарии для записей.

Примечание:  Тег comment entries предназначен для использования только на одной из страниц "одиночной записи". Это страница, которая отображает единственную указанную запись раздела. Поэтому, на страницу комментариев из записей раздела необходимо ссылаться, используя переменную url title path или переменную entry id path, так, чтобы комментарии были связаны с отдельной записью. Вы можете также объединять комментарии и трекбэки для совместного отображения.

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

{exp:comment:entries sort="asc" limit="20"}

{comment}

<p>By {name} on {comment_date format="%Y %m %d"}</p>

{/exp:comment:entries}

Обратите внимание, что тег comment entries не должен быть вложен в стандартный тег {exp:weblog:entries}.

Параметры

dynamic=

dynamic="off"

Механизмы отображения разделов и комментариев устанавливают некоторые параметры динамически, на основе информации, которая содержится в URL. Однако бывают случаи, когда, вы не хотите, чтобы действовали параметры, которые содержаться в URL. Для отключения динамического характера тега комментария, используйте параметр dynamic="off".

Это бывает полезно, если, например, вы захотите поместить список комментариев на врезке сбоку от основного текста на вашем сайте, и отображать их всегда, независимо от того, на какой странице сайта вы находитесь (главная страница, архивы, комментарии, и т.д.). Используя этот параметр, вы можете создать список "последних комментариев". Устанавливая dynamic="off", вы гарантируете, что на список не будет воздействовать информация, которая в данный момент находится в URL.

entry_id=

entry_id="24"

Вы можете жестко закодировать тег comment entries, чтобы отображались комментарии только для определенной записи раздела в соответствии с идентификатором (ID) записи.

ПРИМЕЧАНИЕ: Этот параметр имеет приоритет для любой записи, определяемой динамически в URL, поэтому вам необходимо будет убедиться, что пользователю ясно к какой записи принадлежат отображаемые комментарии.

limit=

limit="30"

С помощью этого параметра вы можете ограничить количество комментариев. Ограничение по умолчанию - 100 комментариев, если значение не указано. Если вы используете разбивку на страницы, то этот параметр будет определять количество комментариев на одной странице.

orderby=

orderby="date"

Параметр "order" устанавливает порядок отображения комментариев. Варианты установки этого параметра включают:

Если вы объединяете отображение комментариев и трекбэков, то вы можете устанавливать для этого параметра только значение date.

paginate=

paginate="top" paginate="bottom" paginate="both"

Этот параметр используется совместно с разбивкой на страницы записей, он определяет, где появиться код нумерации страниц для ваших комментариев:

  1. top: Текст навигации и ссылки появятся выше вашего списка комментариев.
  2. bottom: Текст навигации и ссылки появятся ниже вашего списка комментариев.
  3. both: Текст навигации и ссылки появятся сверху и снизу списка комментариев.

Если параметр не определен, то блок навигации, по умолчанию, будет отображаться "снизу".

paginate_base=

paginate_base="site/index"

Этот параметр указывает ExpressionEngine отменить стандартные ссылки в коде разбивки на страницы, и использует явно указанную группу шаблонов и шаблон.

show_expired=

show_expired="yes"

Вы можете определить, хотите ли вы отображать комментарии с "истекшим сроком".

sort=

sort="asc" sort="desc"

Порядок сортировки может быть "asc" (по возрастанию или "самый старый сначала" для дат) или "desc" (по убыванию или "самый новый сначала" для дат). Если вы не используете параметр, то по умолчанию используется сортировка desc.

url_title=

url_title="my_wedding"

Вы можете жестко закодировать тег comment entries, чтобы отображались комментарии только для определенной записи раздела в соответствии с ее заголовком URL (URL title).

ПРИМЕЧАНИЕ: Этот параметр имеет приоритет для любой записи, определяемой динамически в URL, поэтому вам необходимо будет убедиться, что пользователю ясно к какой записи принадлежат отображаемые комментарии.

weblog=

weblog="which"

Параметр указывает, из какого раздела будут отображаться комментарии, (будут отображаться комментарии из любого раздела, если параметр не определен). Дополнительно, вы можете использовать символ ("|"), для разделения нескольких разделов:

weblog="weblog1|weblog2|weblog3"

Или вы можете добавить слово "not" (с пробелом после него), для исключения разделов:

weblog="not weblog1|weblog2|weblog3"

Параметр weblog= имеет определенные последствия для безопасности. Если вы не используете этот параметр, то пользователи, не имеющие доступа к записи раздела, смогут ее просмотреть через комментарии к ней. Если вы используете несколько разделов и хотите быть уверенными, что только определенные пользователи могут видеть определенное содержимое, то вам необходимо использовать этот параметр.

Переменные

absolute_count

{absolute_count}

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

Если пять комментариев отображаются на одной странице, то для четвертого комментария на второй странице переменная {absolute_count} будет иметь значение "9".

author

{author}

Имя автора комментария, если пользователь зарегистрирован; иначе, эта переменная содержит имя, отправленное с комментарием.

<a href="http://www.example.com/index.php/member/{author_id}/">{author}</a>

author_id

{author_id}

Идентификатор, соответствующий профилю пользователя автора комментария. Действует, только, если комментарий оставил зарегистрированный пользователь. Возвращает ноль (0), если комментарий оставил незарегистрированный пользователь.

Может использоваться для создания ссылок к профилю комментирующего пользователя:

<a href="http://www.example.com/index.php/member/{author_id}/">{name}</a>

aol_im

{aol_im}

Имя учетной записи AOL IM автора

avatar_image_height

{avatar_image_height}

Высота изображения аватара автора записи. Обычно используется следующим образом:

{if avatar}
<img src="{avatar_url}" width="{avatar_image_width}" height="{avatar_image_height}" alt="{author}'s avatar" />
{/if}

avatar_image_width

{avatar_image_width}

Ширина изображения аватара автора записи. Обычно используется следующим образом:

{if avatar}
<img src="{avatar_url}" width="{avatar_image_width}" height="{avatar_image_height}" alt="{author}'s avatar" />
{/if}

avatar_url

{avatar_url}

URL к изображению аватара, которое принадлежит автору записи. Обычно используется следующим образом:

{if avatar}
<img src="{avatar_url}" width="{avatar_image_width}" height="{avatar_image_height}" alt="{author}'s avatar" />
{/if}

blog_title

{blog_title}

Эта переменная просто выводит содержимое настройки "Полное имя раздела" того раздела, к которому принадлежит комментарий.

comment

{comment}

Текст комментария (его содержимое)

comment_auto_path

{comment_auto_path}

Эта переменная возвращает URL, установленный в настройке "URL страницы комментариев", на странице Admin > Управление разделами. В эту переменную не входят ни идентификатор записи (entry id), ни URL заголовок, или другая информация; она возвращает только URL из указанной настройки.

comment_entry_id_auto_path

{comment_entry_id_auto_path}

Эта переменная возвращает URL, установленный в настройке "URL страницы комментариев", на странице Admin > Управление разделами. Автоматически добавляется идентификатор (ID) записи. Например, этот код:

<a href="{comment_entry_id_auto_path}">my entry</a>

Будет обработан следующим образом:

<a href="http://www.example.com/index.php/weblog/comments/234/">my entry</a>

comment_id

{comment_id}

Идентификатор (ID) комментария

comment_url_title_auto_path

{comment_url_title_auto_path}

Эта переменная возвращает URL, установленный в настройке "URL страницы комментариев", на странице Admin > Управление разделами. Автоматически будет добавлен заголовок URL. Например, этот код:

<a href="{comment_url_title_auto_path}">my entry</a>

Будет обработан следующим образом:

<a href="http://www.example.com/index.php/weblog/comments/ice_cream/">my entry</a>

count

{count}

Номер текущего комментария, отображаемого тегом на текущей странице.

Если пять комментариев отображаются на одной странице, то для четвертого комментария на второй странице переменная {count} будет иметь значение "4".

entry_author_id

{entry_author_id}

Идентификатор (ID) пользователя создавшего запись, для которой отображаются комментарии.

entry_id

{entry_id}

Идентификатор (ID) записи

entry_id_path

{entry_id_path=weblog/comments}

URL к указанному шаблону. Автоматически добавляется ID записи, с которой связан комментарий. Например, этот код:

<a href="{entry_id_path=weblog/comments}">my entry</a>

Будет обработан следующим образом:

<a href="http://www.example.com/index.php/weblog/comments/234/">my entry</a>

icq

{icq}

Номер ICQ IM автора

interests

{interests}

"Увлечения" автора, как указано в его профиле

ip_address

{ip_address}

IP адрес комментатора

location

{location}

Местожительство автора, как указано в его профиле

member_search_path

{member_search_path=search/results}

Эта переменная возвращает URL, который ведет на страницу результатов поиска по имени автора. Таким образом, вы можете показать все записи, созданные автором. Вы должны указать группу шаблонов/шаблон, которые вы используете для вывода результатов поиска. Например:

<a href="{member_search_path=search/results}">View entries by this member</a>

msn_im

{msn_im}

Учетная запись MSN IM автора комментария

occupation

{occupation}

Занятие автора, как указано в его профиле

name

{name}

Имя автора

paginate=

paginate="top" paginate="bottom" paginate="both"

Этот параметр используется совместно с разбивкой на страницы комментариев, и определяет, где будет отображаться код нумерации страниц для ваших комментариев:

  1. top: Навигационный текст и ссылки будут отображаться сверху списка записей.
  2. bottom: Навигационный текст и ссылки будут отображаться снизу списка записей.
  3. both: Навигационный текст и ссылки будут отображаться и сверху и снизу списка записей.

Если параметр не определен, то блок навигации, по умолчанию, будет отображаться "снизу".

permalink

{permalink}

URL к фактическому комментарию с якорем. Поместите эту переменную в ссылку:

<a href="{permalink}">permanent link</a>

photo_url

{photo_url}

Эта переменная возвращает URL фотографии пользователя, (если эта опция включена, и пользователи могут загружать свои фотографии). Она предназначена для использования в теге image.

photo_image_height

{photo_image_height}

Эта переменная возвращает высоту фотографии пользователя. Она предназначена для использования в теге image.

photo_image_width

{photo_image_width}

Эта переменная возвращает ширину фотографии пользователя. Она предназначена для использования в теге image.

signature

{signature}

Подпись автора записи. Обычно используется следующим образом:

{if signature}
<p>{signature}</p>
{/if}

signature_image_height

{signature_image_height}

Высота изображения в подписи автора записи. Обычно используется следующим образом:

{if signature_image}
<img src="{signature_image_url}" width="{signature_image_width}" height="{signature_image_height}" alt="{author}'s signature" />
{/if}

signature_image_url

{signature_image_url}

URL к изображению для подписи автора записи. Обычно используется следующим образом:

{if signature_image}
<img src="{signature_image_url}" width="{signature_image_width}" height="{signature_image_height}" alt="{author}'s signature" />
{/if}

signature_image_width

{signature_image_width}

Ширина изображения в подписи автора комментария. Обычно используется следующим образом:

{if signature_image}
<img src="{signature_image_url}" width="{signature_image_width}" height="{signature_image_height}" alt="{author}'s signature" />
{/if}

switch=

{switch="option_one|option_two|option_three"}

Эта переменная разрешает вам чередовать любое количество значений отображения записей. Первая запись будет использовать "option_one", вторая будет использовать "option_two", третья "option_one", и так далее.

Самое очевидное применение этой переменной, - чередование цветов. Это можно сделать следующим образом:

{exp:comment:entries}
<div class="{switch="one|two"}">
<h1>{name}</h1>
{comment}
</div>
{/exp:comment:entries}

Тогда записи будут чередоваться между <div class="one"> и <div class="two">.

Одновременно может использоваться несколько тегов {switch=}, и система будет корректно отслеживать каждый из них.

title

{title}

Заголовок записи раздела, с которой связан комментарий.

total_results

{total_results}

Общее количество комментариев, выведенных тегом на текущей странице.

total_comments

{total_comments}

Общее количество комментариев для этого тега на всех страницах.

url

{url}

Необработанный URL автора, если он существует

url_as_author

{url_as_author}

Гиперссылка, указывающая на URL, (если он существует), с именем автора в качестве названия ссылки. Если URL не существует, то возвращается имя автора.

url_or_email

{url_or_email}

URL, если он существует, иначе адрес электронной почты

url_or_email_as_author

{url_or_email_as_author}

Гиперссылка или ссылка электронной почты, как имя автора (screen_name), или логин, если автор не указал имя.

url_or_email_as_link

{url_or_email_as_link}

То же самое, что выше, только эта переменная выведет URL или адрес электронной почты, как ссылку

url_title_path

{url_title_path=weblog/comments}

URL к указанному шаблону. Автоматически добавляется "Заголовок URL" записи, с которой связан комментарий. Например, этот код:

<a href="{url_title_path=weblog/comments}">permalink</a>

Будет обработан следующим образом:

<a href="http://www.example.com/index.php/weblog/comments/ice_cream/">permalink</a>

weblog_id

{weblog_id}

Идентификатор (ID) текущего раздела

yahoo_im

{yahoo_im}

Имя учетной записи Yahoo IM автора

Заказные поля пользователей

Ко всем заказным полям профиля пользователя можно получить доступ, используя "короткое имя" поля:

{age}
{gender}
{zodiac}
и т.д.

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

Одиночная переменная даты

Для использования доступны несколько переменных даты. Как и с другими переменными даты, необходимо использовать параметр "format", чтобы определить формат отображения даты. Смотрите страницу изменяемое форматирование даты для получения дополнительной информации.

comment_date

{comment_date format="%Y %m %d"}

Дата комментария.

edit_date

{edit_date format="%Y %m %d"}

Дата редактирования комментария.

gmt_comment_date

{gmt_comment_date format="%Y %m %d"}

Дата комментария, но не локализованная для пользователя.

Условия

В комментариях могу использоваться условия:

{if name=="bozo"}

You've got a big nose!

{/if}

if avatar

{if avatar}
content
{/if}

Это специальное условие дает возможность вам отображать по условию содержимое, если для автора текущей записи задан аватар,

{if avatar}
<img src="{avatar_url}" width="{avatar_image_width}" height="{avatar_image_height}" alt="{author}'s avatar" />
{/if}

if is_ignored

{if is_ignored}
content
{/if}

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

{exp:comment:entries}

{if is_ignored}You are ignoring {author}.{/if}

<div {if is_ignored}style="display: none;"{/if}>{comment}</div>

{/exp:comment:entries}

Вы можете использовать Javascript, чтобы разрешить пользователю, если он пожелает, читать комментарий:

<script type="text/javascript">

</script>

{exp:comment:entries}

{if is_ignored}
    <p><a href="#" onclick="showHideComment('{comment_id}')">View / Hide</a> comment from ignored member: {author}</p>
{/if}

<div id="{comment_id}" {if is_ignored}style="display: none;"{/if}>{comment}</div>

{/exp:comment:entries}

Важно:  Избегайте использовать кэширование шаблона, для любого шаблона, в котором содержится это условное выражение. Если вы будете использовать кэширование, то данные не будут динамически изменяться для каждого пользователя. Вместо этого, если кто-нибудь загрузит страницу, когда включено кэширование, то его список игнорирования будет применяться для всех остальных пользователей, пока кэш не будет обновлен.

if no_results

{if no_results}
content
{/if}

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

{if no_results}

<p>There are no comments for this entry yet.</p>

{/if}

Вы можете указать, чтобы отображался другой шаблон в случае, когда нет никаких результатов. Чтобы сделать это, вы должны использовать переменную redirect=:

{if no_results}
{redirect="site/noresult"}
{/if}

if signature_image

{if signature_image}
content
{/if}

Этот условное выражение позволяет вам выводить его содержимое, если для автора текущей записи указано изображение подписи.

{if signature_image}
<img src="{signature_image_url}" width="{signature_image_width}" height="{signature_image_height}" alt="{author}'s signature" />
{/if}

Форма отправки комментариев

{exp:comment:form}

{/exp:comment:form}

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

{exp:comment:form preview="weblog/preview"}

Параметр "preview" определяет группу шаблонов/шаблон, которые будут использоваться для предварительного просмотра. Подробнее о предварительном просмотре, чуть позже.

Форма комментария создается наподобие стандартной формы, только вы не указываете открывающие и закрывающие теги формы. Существует несколько обязательных переменных, которые требуются, чтобы в форме отображалась персональная информация пользователей (имя, email, url, и т.д.). Приведем пример типичной формы комментариев:

{exp:comment:form preview="weblog/preview"}

{if logged_out}

<p>Name: <input type="text" name="name" value="{name}" size="50" /></p>

<p>Email: <input type="text" name="email" value="{email}" size="50" /></p>

<p>Location: <input type="text" name="location" value="{location}" size="50" /></p>

<p>URL: <input type="text" name="url" value="{url}" size="50" /></p>

{/if}

<p><textarea name="comment" cols="70" rows="10">{comment}</textarea></p>

<p><input type="checkbox" name="save_info" value="yes" {save_info} /> Remember my personal information</p>

<p><input type="checkbox" name="notify_me" value="yes" {notify_me} /> Notify me of follow-up comments?</p>

<input type="submit" name="submit" value="Submit" />
<input type="submit" name="preview" value="Preview" />

{/exp:comment:form}

Примечания:
Условная переменная {if logged_out} разрешает системе отображать сокращенную форму (только textarea), если пользователь авторизован на сайте Мы рекомендуем, использовать этот способ, так как, если пользователь авторизован, то его анкетные данные будут добавлены автоматически.

Обратили внимание на переменные в полях "value" формы? Они позволяют автоматически отображать информацию о пользователе в форме, если он установил флажок, "Запомнить персональную информацию".

Наверх страницы