$WS_Theme


$WS_Theme содержит объект класса Themes для работы с активной темой сайта.

Поддерживает

  • получение публичного и файлового пути темы
  • подключение header и footer
  • вывод SEO-метаданных
  • автоматическое подключение CSS и JavaScript
  • подключение JavaScript-модулей CMS
  • получение настроек активной темы
  • вывод административной панели

Быстрый старт

php
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 корневой папки темы с завершающим /.

php
$themeUrl = $WS_Theme->root();

Пример результата:

text
/resource/themes/example/

Используйте root() для формирования URL ресурсов:

php
$logo = $WS_Theme->root() . 'assets/images/logo.svg';

echo '<img src="' . Convert::sanitizeHtml($logo) . '" alt="Логотип">';

path(): string

Возвращает абсолютный путь к папке темы в файловой системе без завершающего /.

php
$themePath = $WS_Theme->path();

Используйте path() для проверки и подключения файлов:

php
$file = $WS_Theme->path() . '/includes/sidebar.php';

if (is_file($file)) {
    include $file;
}

Файлы шаблона

header(): string

Возвращает абсолютный путь к файлу includes/header.php активной темы.

php
include $WS_Theme->header();

footer(): string

Возвращает абсолютный путь к файлу includes/footer.php активной темы.

php
include $WS_Theme->footer();

SEO-метаданные

getSeoMeta(bool $print = true): string|void

Формирует SEO-метаданные текущей страницы:

  • title
  • description
  • keywords
  • robots
  • canonical
  • favicon

По умолчанию метод сразу выводит сформированный HTML:

php
$WS_Theme->getSeoMeta();

Если передать false, метод вернёт HTML строкой:

php
$seoMeta = $WS_Theme->getSeoMeta(false);

Подключение CSS

getCSS(): void

Выводит теги <link> для стилей активной темы:

php
$WS_Theme->getCSS();

Метод автоматически подключает:

  • assets/css/style.css
  • assets/css/index.css для главной страницы
  • CSS-файл текущего шаблона, если он существует
  • дополнительные CSS-файлы текущего шаблона
  • стили административной панели, если она включена

К URL файлов добавляется версия темы из theme-info.json.

Подключение JavaScript

getJS(?array $modules = null): void

Выводит теги <script> для JavaScript активной темы:

php
$WS_Theme->getJS();

Метод автоматически подключает:

  • assets/js/script.js
  • assets/js/modules/script.js
  • JavaScript-файл текущего шаблона
  • модульный JavaScript-файл текущего шаблона
  • дополнительные файлы текущего шаблона

Для подключения JavaScript-модулей CMS передайте их названия массивом:

php
$WS_Theme->getJS([
    'gallery',
    'editor',
]);

Метод также создаёт в JavaScript константу root, содержащую публичный путь активной темы.

Административная панель

getPanel(): void

Выводит административную панель, если она включена в настройках текущего пользователя:

php
$WS_Theme->getPanel();

Если панель отключена, метод ничего не выводит.

Данные темы

getData($key, $row = false, $column = false): mixed

Возвращает значение настройки активной темы:

php
$phone = $WS_Theme->getData('phone');

Если значение является массивом, его можно получить целиком:

php
$contacts = $WS_Theme->getData('contacts');

Для получения значения из вложенной структуры передайте строку и столбец:

php
$phone = $WS_Theme->getData('contacts', 0, 'phone');

Если настройка не найдена, метод возвращает пустую строку.

Для ключа logo метод сначала проверяет логотип из настроек темы, а затем ищет стандартный файл в assets/images:

php
$logo = $WS_Theme->getData('logo');

if ($logo !== '') {
    echo '<img src="' . Convert::sanitizeHtml($logo) . '" alt="Логотип">';
}

setMeta(array $meta): void

Добавляет или заменяет данные текущего объекта темы:

php
$WS_Theme->setMeta([
    'accent-color' => [
        'value' => '#1251b7',
    ],
]);

$accentColor = $WS_Theme->getData('accent-color');

Метод не сохраняет изменения в базе данных.

Важные замечания

  • используйте root() для URL ресурсов
  • используйте path() для работы с файлами на сервере
  • getSeoMeta(), getCSS(), getJS() и getPanel() выводят результат самостоятельно
  • экранируйте данные темы перед выводом в HTML
  • $WS_Theme предназначена для шаблонов публичной части сайта