К содержимому
Вывод в теме

Хелперы 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.