Weblog entries - Условные переменные
Условные переменные предназначены для добавления условий к стандартным переменным, для более точного управления вашим контентом.
Примечание: Более полное описание структуры условных операторов можно найти на странице глобальные условные переменные. Пожалуйста, обратитесь к указанному разделу для получения более подробного описания.
Вот пример условия, которое проверяет, заполнено или нет поле "summary":
{if summary != ""}
The summary is not empty!
{/if}
Используя альтернативный укороченный синтаксис можно получить тот же результат:
{if summary}
The summary is not empty!
{/if}
Если в условии указано только имя переменной, то производиться проверка, что она "не пустая".
Доступные условия
Многие из одиночных переменных могут использоваться в условном операторе. Вы всегда можете использовать короткое имя ваших заказных полей в условных операторах. Кроме того, существует несколько уникальных условных операторов.
- {if allow_comments}
- {if allow_trackbacks}
- {if avatar}
- {if category_request}
- {if count > 5}
- {if forum_topic}
- {if no_results}
- {if not_category_request}
- {if not_forum_topic}
- {if signature_image}
- {if sticky}
if allow_comments
{if allow_comments}
content
{/if}
Это специальное условие позволяет вам выводить его содержимое, если для текущей записи разрешены комментарии. Это условие возвращает FALSE, если срок комментирования истек.
{if allow_comments}
({comment_total}) <a href="{comment_path="weblog/comments"}">Comments</a> •
{/if}
Вы можете вывести содержимое условного выражения, если комментарии отключены:
{if allow_comments == FALSE}
content
{/if}
if allow_trackbacks
{if allow_trackbacks}
content
{/if}
Это специальное условие позволяет вам отображать его содержимое, если для текущей записи разрешены трекбэки.
{if allow_trackbacks}
({trackback_total}) <a href="{trackback_path="weblog/trackbacks"}">Trackbacks</a> •
{/if}
Вы можете вывести содержимое условного выражения, если трекбэки отключены:
{if allow_trackbacks == FALSE}
content
{/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 category_request
{if category_request}
content
{/if}
Это специальное условие дает вам возможность отображать содержимое, если отображение текущего тега основано на категории, указанной в URL. Например, если рассматривать такой URL http://www.example.com/index.php/weblog/archives/C13/, то он вызвал бы срабатывания условия.
if count
{if count > 5} content {/if}
Используя это условие, вы можете проверить номер отображаемой записи. Вы можете использовать это условие, например, для наложения другого стиля оформления первой записи или иначе оформить последние 5 записей из 10.
if forum_topic
{if forum_topic}
content
{/if}
Этот условие выводит содержимое, если с записью раздела связана тема форума. Эта опция доступна, если установлен модуль форума. Обычно используется следующим образом:
{if forum_topic}
<a href="{path=forums/viewthread}{forum_topic_id}">Discuss this in our forums</a>
{/if}
if no_results
{if no_results}
content
{/if}
Вы можете использовать это условие для вывода определенного сообщения, если не найдено ни одной записи. Содержимое условного выражения будет выведено в тех случаях, когда тег не возвращает никаких результатов.
{if no_results}
<p>There are no entries available.</p>
{/if}
Вы можете указать, чтобы отображался другой шаблон в случае, когда нет никаких результатов. Чтобы сделать это, вы должны использовать переменную redirect=:
{if no_results}
{redirect="weblog/noresult"}
{/if}
Наконец, вы можете просто выводить страницу 404 (с заголовками 404), если не возвращена ни одна запись, используя "404", как название шаблона.
{if no_results}
{redirect="404"}
{/if}
if not_category_request
{if not_category_request}
content
{/if}
Это специальное условие позволяет вам выводить содержимое, если вывод текущего тега не основан на категории, указанной в URL. Например, если рассматривать такой URL http://www.example.com/index.php/weblog/archives/C13/, то он не вызовет срабатывания условия.
if not_forum_topic
{if not_forum_topic}
content
{/if}
Вы можете использовать это условие для вывода контента, если с данной записью раздела не связана тема на форуме. Эта опция доступна, если установлен модуль форума. Обычно используется следующим образом:
{if not_forum_topic}
There is no forum discussion available.
{/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}
if sticky
{if sticky=='y'} content {/if}
Вы можете проверить, является ли запись "прикрепленной". Также вы можете проверить обратное условие.
{if sticky=='n'} content {/if}
Примеры:
Проверка идентификатора группы пользователей:
{if group_id == "4"}
This author, {author}, is in group 4
{/if}
Проверка количества комментариев, например 10 и более:
{if comment_total >= "10"}
Look out! Hot topic!!
{/if}
Множественные условия
Вы можете использовать вложенные операторы условий для проверки более сложных условий.
{if summary != ""}
{if username =="fred"}
Hey Fred! Look at this summary.
{/if}
{/if}
или
{if comment_total == 0}
{if trackback_total == 0}
No one has posted yet! Come on guys!
{/if}
{/if}
Пожалуйста, помните, что мы используем соглашение PHP - двойной знак равенства для описания эквивалентности:
{if comment_total == 10}
Следующая запись не разрешена: {if comment_total = 10}
Специальные условия
Вы, конечно, можете использовать глобальные условия для проверки авторизован или нет пользователь и других условий. Например, если вы хотите показывать некоторую часть контента только авторизованным пользователям:
{if logged_in}
stuff...
{/if}
Или не авторизованным:
{if logged_out}
stuff...
{/if}
ПРИМЕЧАНИЕ: Условия {if logged_in} и {if logged_out} в тегах weblog entries не будут работать должным образом в кэшируемых шаблонах. Статус авторизованного пользователя, записанный в кэш, будет постоянно воздействовать на информацию, выдаваемую всем посетителям.