Jump to content

Использование выражений в логике

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

{{if $value}} ... {{endif}}

..но есть и множество других возможностей.

Вы также можете использовать простые PHP функции в ваших выражениях. Например, вам может понадобиться условие, если массив имеет какие-либо элементы, то... , поэтому PHP функция count будет весьма кстати:

{{if count( $items ) > 0}} ... {{endif}}

Обратитесь к полной документации PHP для получения дополнительной информации.

Получение значений из IPS4

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

Вы можете использоваться стандартный PHP подход для получения этих значений, IPS4 содержит некоторые сокращённые "константы", которые вы можете использовать для упрощения своей логики. Они используются следующим образом:

{{if settings.reputation_enabled}} ... {{endif}}

Этот короткий тег становится расширенным своим эквивалентом PHP, то есть это даёт вам доступ ко всем доступным методам и свойствам объекта.

Доступные теги:

request
Преобразует в \IPS\Request::i().
Доступ к переменным запроса, например

{{if request.some_param}}

member
Преобразует в \IPS\Member::loggedIn(). 
Объект текущего пользователя, например

{{if member.language()->isrtl}}

settings
Преобразует в \IPS\Settings::i().
Получение значений настроек системы (по ключу настройки), например

{{if settings.auto_polling_enabled}}

output
Преобразует в \IPS\Output::i().
Объект отображения, содержащий методы/свойства, используемые системой для отображения контента, например

{{if count( output.contextualSearchOptions )}}

theme
Преобразует в \IPS\Theme::i()->settings.
Доступ к настройкам темы, доступных в текущей теме, например

{{if theme.sidebar_position == 'right'}}

cookie
Преобразует в \IPS\\Request::i()->cookie.
Доступ к объекту cookie, например

{{if isset( cookie.hasJS )}}

Обратитесь к документации PHP фреймворка для получения полного списка свойств и методов, доступных для каждого класса.