$WS_Theme
$WS_Theme содержит объект класса Themes для работы с активной темой сайта.Поддерживает
- получение публичного и файлового пути темы
- подключение header и footer
- вывод SEO-метаданных
- автоматическое подключение CSS и JavaScript
- подключение JavaScript-модулей CMS
- получение настроек активной темы
- вывод административной панели
Быстрый старт
include $WS_Theme->header();
$logo = $WS_Theme->root() . 'assets/images/logo.svg';
echo '<img src="' . Convert::sanitizeHtml($logo) . '" alt="Логотип">';
include $WS_Theme->footer();Создавать объект вручную не нужно. CMS определяет активную тему и записывает её объект в $WS_Theme.
Пути темы
root(): string
Возвращает публичный URL корневой папки темы с завершающим /.
$themeUrl = $WS_Theme->root();Пример результата:
/resource/themes/example/Используйте root() для формирования URL ресурсов:
$logo = $WS_Theme->root() . 'assets/images/logo.svg';
echo '<img src="' . Convert::sanitizeHtml($logo) . '" alt="Логотип">';path(): string
Возвращает абсолютный путь к папке темы в файловой системе без завершающего /.
$themePath = $WS_Theme->path();Используйте path() для проверки и подключения файлов:
$file = $WS_Theme->path() . '/includes/sidebar.php';
if (is_file($file)) {
include $file;
}Файлы шаблона
header(): string
Возвращает абсолютный путь к файлу includes/header.php активной темы.
include $WS_Theme->header();footer(): string
Возвращает абсолютный путь к файлу includes/footer.php активной темы.
include $WS_Theme->footer();SEO-метаданные
getSeoMeta(bool $print = true): string|void
Формирует SEO-метаданные текущей страницы:
titledescriptionkeywordsrobotscanonical- favicon
По умолчанию метод сразу выводит сформированный HTML:
$WS_Theme->getSeoMeta();Если передать false, метод вернёт HTML строкой:
$seoMeta = $WS_Theme->getSeoMeta(false);Подключение CSS
getCSS(): void
Выводит теги <link> для стилей активной темы:
$WS_Theme->getCSS();Метод автоматически подключает:
assets/css/style.cssassets/css/index.cssдля главной страницы- CSS-файл текущего шаблона, если он существует
- дополнительные CSS-файлы текущего шаблона
- стили административной панели, если она включена
К URL файлов добавляется версия темы из theme-info.json.
Подключение JavaScript
getJS(?array $modules = null): void
Выводит теги <script> для JavaScript активной темы:
$WS_Theme->getJS();Метод автоматически подключает:
assets/js/script.jsassets/js/modules/script.js- JavaScript-файл текущего шаблона
- модульный JavaScript-файл текущего шаблона
- дополнительные файлы текущего шаблона
Для подключения JavaScript-модулей CMS передайте их названия массивом:
$WS_Theme->getJS([
'gallery',
'editor',
]);Метод также создаёт в JavaScript константу root, содержащую публичный путь активной темы.
Административная панель
getPanel(): void
Выводит административную панель, если она включена в настройках текущего пользователя:
$WS_Theme->getPanel();Если панель отключена, метод ничего не выводит.
Данные темы
getData($key, $row = false, $column = false): mixed
Возвращает значение настройки активной темы:
$phone = $WS_Theme->getData('phone');Если значение является массивом, его можно получить целиком:
$contacts = $WS_Theme->getData('contacts');Для получения значения из вложенной структуры передайте строку и столбец:
$phone = $WS_Theme->getData('contacts', 0, 'phone');Если настройка не найдена, метод возвращает пустую строку.
Для ключа logo метод сначала проверяет логотип из настроек темы, а затем ищет стандартный файл в assets/images:
$logo = $WS_Theme->getData('logo');
if ($logo !== '') {
echo '<img src="' . Convert::sanitizeHtml($logo) . '" alt="Логотип">';
}setMeta(array $meta): void
Добавляет или заменяет данные текущего объекта темы:
$WS_Theme->setMeta([
'accent-color' => [
'value' => '#1251b7',
],
]);
$accentColor = $WS_Theme->getData('accent-color');Метод не сохраняет изменения в базе данных.
Важные замечания
- используйте
root()для URL ресурсов - используйте
path()для работы с файлами на сервере getSeoMeta(),getCSS(),getJS()иgetPanel()выводят результат самостоятельно- экранируйте данные темы перед выводом в HTML
$WS_Themeпредназначена для шаблонов публичной части сайта