Функция cot_schemefile в Cotonti

Описание функции cot_schemefile.
Функция cot_schemefile предназначена для поиска и возврата пути к CSS-файлу, который соответствует выбранной пользователем цветовой схеме. Функция ищет файл в определённом порядке.

/**
 * Returns path to a CSS file for user selected color scheme.
 * The default search order is:
 * 1) css subfolder of user selected theme
 * 2) Main folder of user selected theme
 *
 * @return ?string Filename with full path to CSS file or NULL if not found
 */
function cot_schemeFile()
{
    // Class Cot can be not initialised yet
    global $cfg, $usr;

    $scheme = isset($usr['scheme']) ? $usr['scheme'] : $cfg['defaultscheme'];
    $theme = isset($usr['theme']) ? $usr['theme'] : $cfg['defaulttheme'];

    $schemeCss = [];
    $schemeCss[] = $cfg['themes_dir'] . '/' . $theme . '/css/' . $scheme . '.css';
    $schemeCss[] = $cfg['themes_dir'] . '/' . $theme . '/' . $scheme . '.css';

    foreach ($schemeCss as $filename) {
        if (is_file($filename)) {
            return $filename;
        }
    }

    return null;
}

Функция cot_schemeFile предназначена для определения пути к CSS-файлу, который соответствует выбранной пользователем цветовой схеме сайта.

Вот подробный разбор её работы:

1. Подготовка данных

global $cfg, $usr;
$scheme = isset($usr['scheme']) ? $usr['scheme'] : $cfg['defaultscheme'];
$theme = isset($usr['theme']) ? $usr['theme'] : $cfg['defaulttheme'];


$usr — массив, содержащий данные текущего пользователя.

Если пользователь выбрал собственную цветовую схему ($usr['scheme']), она будет использована.
Если пользователь не выбрал схему, то используется схема по умолчанию из конфигурации сайта ($cfg['defaultscheme']).
Аналогично обрабатывается выбор темы оформления ($usr['theme']).


2. Формирование путей к CSS-файлам
 

$schemeCss = [];
$schemeCss[] = $cfg['themes_dir'] . '/' . $theme . '/css/' . $scheme . '.css';
$schemeCss[] = $cfg['themes_dir'] . '/' . $theme . '/' . $scheme . '.css';

В массив $schemeCss добавляются возможные пути к CSS-файлу:
Файл в папке css внутри текущей темы (themes/[theme]/css/[scheme].css).
Файл в корневой папке темы (themes/[theme]/[scheme].css).


3. Поиск CSS-файла

foreach ($schemeCss as $filename) {
    if (is_file($filename)) {
        return $filename;
    }
}


Перебираются все сформированные пути.
Функция is_file() проверяет, существует ли файл по указанному пути.
Как только файл найден, его полный путь возвращается.

4. Результат

return null;


Если ни один из путей не соответствует реальному файлу, функция возвращает null.
Назначение функции
Функция позволяет динамически определять путь к CSS-файлу, соответствующему выбранной цветовой схеме. Это полезно для:

Поддержки кастомизации — разные пользователи могут видеть сайт в разных цветах.
Гибкости тем — разработчики тем могут размещать схемы как в папке css, так и в корне темы.


Пример использования в Cotonti
 
 

$cssFile = cot_schemeFile();
if ($cssFile) {
    echo '<link rel="stylesheet" href="' . $cssFile . '">';
}


Здесь проверяется, удалось ли найти CSS-файл.


Если файл найден, он подключается к странице с помощью HTML-тега <link>.
Функция упрощает управление стилями и делает систему тем Cotonti удобной и гибкой.

Порядок поиска:
В папке css, которая находится внутри папки текущей темы (themes/[theme]/css/[scheme].css).
В корневой папке текущей темы (themes/[theme]/[scheme].css).

 

3 minutes read Administrator

Comments (0)

No comments yet
Only registered users can post new comments

Article multicategories

Additional categories where this article is shown as similar.

Content author

Administrator

Offline

Administrator

Last logged: 2026-09-13 14:50

  • Page published: 2025-01-22 14:39
  • Last update: 2025-01-22 14:39