Хелперы Smarty
Обновлено
Постоянные настройки: getThemeSettings
getThemeSettings($theme_id, $app = 'site', $values_only = false)| Параметр | Назначение |
|---|---|
$theme_id |
Идентификатор установленной темы |
$app |
Идентификатор приложения, которому принадлежит тема; по умолчанию site |
$values_only |
true — массив значений по ключам настроек; false — описания настроек с их значениями |
Идентификаторы темы и приложения допускают латинские буквы, цифры, _ и -, длина — от 1 до 128 символов. Неверные идентификаторы и ошибки чтения дают пустой массив.
Пример для Smarty-шаблона страницы приложения «Сайт»:
{$theme_id = waRequest::getTheme()}
{$theme_settings = $wa->themesettings->getThemeSettings($theme_id, 'site', true)}
{foreach $theme_settings as $key => $value}
<p>{$key|escape}: {$value|escape}</p>
{/foreach}Это вызов хелпера приложения, установленного в Webasyst. Обёртка с проверкой версии плагина к нему не относится.
Чтобы получить описания настроек с их значениями:
{$theme_id = waRequest::getTheme()}
{$theme_settings = $wa->themesettings->getThemeSettings($theme_id, 'site')}
{foreach $theme_settings as $key => $setting}
<p>{$key|escape}: {$setting.value|escape}</p>
{/foreach}Для чтения настроек из другого приложения передайте его идентификатор вторым аргументом. Вызов на странице магазина с аргументом 'site' всё равно читает тему «Сайта»: убедитесь, что первый аргумент содержит идентификатор именно этой темы.
Наследование
К настройкам дочерней темы добавляются настройки непосредственного родителя. При совпадении ключей приоритет имеет родительское значение. В массиве описаний настройки родителя отмечены parent = 1.
getThemeSettings читает постоянные настройки, а не черновик предпросмотра.
Сессионный черновик: getSettings
getSettings($theme_id = '')Метод возвращает полный массив значений собственного непросроченного черновика для указанной темы. Он доступен администратору «Сайта» либо посетителю при включённом демо-режиме. Без доступного черновика возвращается пустой массив; вызов без идентификатора темы также даёт пустой массив.
Пример выбора черновика вместо постоянных значений в теме «Сайта»:
{$theme_id = waRequest::getTheme()}
{$settings_for_output = $wa->themesettings->getThemeSettings($theme_id, 'site', true)}
{$draft_settings = $wa->themesettings->getSettings($theme_id)}
{if !empty($draft_settings)}
{$settings_for_output = $draft_settings}
{/if}
{foreach $settings_for_output as $key => $value}
<p>{$key|escape}: {$value|escape}</p>
{/foreach}Этот пример выводит значения для проверки. Для изменения оформления сама тема должна использовать полученный массив в своих шаблонах. Приложение не подменяет настройки произвольной темы автоматически.
Хелперы инициализируют сессию и CSRF-токен, когда у посетителя есть право предпросмотра. Если панель выводит поле {$wa->csrf()}, вызовите хелпер до этого поля. Другой способ инициализации — маршрут token/, описанный в интеграции панели.
Экранируйте значения в соответствии с местом вывода. В примерах выше используется |escape для текста HTML.