Функция cot_themes_info в Cotonti
Функция cot_themes_info в фреймворке Cotonti служит для получения информации о доступных темах (или конкретной теме), загружая данные о темах из файлов в директории с темами. Если имя темы указано, функция вернёт информацию только по этой теме; если имя не указано, возвращается информация по всем доступным темам.
Разбор функции cot_themes_info
/**
* Returns themes info data for all available themes or a specified one
*
* @param string $theme_name Name of theme to get info.
* Returns list for all themes if no name specified.
* @return mixed Array of Theme info data or Theme info data or FALSE
*/
function cot_themes_info($theme_name = null)
{
global $L, $Ls, $R;
require_once cot_incfile('extensions');
$themes_data = array();
$themelist = array();
$handle = opendir(Cot::$cfg['themes_dir']);
while ($f = readdir($handle)) {
if (mb_strpos($f, '.') === FALSE && is_dir(Cot::$cfg['themes_dir'] . "/$f") && $f != "admin") {
$themelist[] = $f;
}
}
closedir($handle);
if (!is_null($theme_name)) {
if (!in_array($theme_name, $themelist)) {
return false;
} else {
$themelist = array($theme_name);
}
} else {
sort($themelist);
}
foreach ($themelist as $name) {
if ($theme_name && $theme_name != $name) continue;
$themeinfo = array();
$themeinfo_file = Cot::$cfg['themes_dir'] . "/$name/$name.php";
if (file_exists($themeinfo_file) && $info = cot_infoget($themeinfo_file, 'COT_THEME')) {
$themeinfo = $info;
if (empty($themeinfo['Title'])) {
$themeinfo['Title'] = isset($info['Name']) ? $info['Name'] : $name;
}
$schemes_list = [];
if (!empty($info['Schemes'])) {
$schemes = preg_split('/\s*,\s*/', $info['Schemes']);
sort($schemes);
foreach ($schemes as $scheme) {
list($sc_name, $sc_title) = explode(':', $scheme);
$schemes_list[$sc_name] = $sc_title;
}
}
$themeinfo['Schemes'] = $schemes_list;
if(!isset($themeinfo['Version'])) $themeinfo['Version'] = '';
}
if (sizeof($themeinfo) > 0) $themes_data[$name] = $themeinfo;
}
if (is_null($theme_name)) {
return $themes_data;
} else {
return $themes_data[$theme_name];
}
}
Параметры функции:
$theme_name — имя конкретной темы, информацию по которой необходимо получить. Если параметр не указан, то возвращается информация о всех доступных темах.
Логика работы функции:
Подключение зависимостей:
Функция требует подключения файла extensions, который может содержать дополнительные расширения или модули для работы с темами.
Чтение списка тем:
Функция читает все директории в папке, указанной в конфигурации (Cot::$cfg['themes_dir']), исключая директорию "admin".
Для каждой директории (предположительно с темой) проверяется, является ли она директорией, и добавляется в список тем.
Проверка конкретной темы:
Если указан параметр $theme_name, то функция проверяет, существует ли такая тема в списке. Если нет, возвращается false.
Если тема существует, то из списка тем выбирается только эта тема для обработки.
Чтение и обработка информации о теме:
Для каждой темы (или только указанной) функция пытается найти файл с информацией о теме ($name.php) в директории темы.
Используется функция cot_infoget для извлечения метаинформации из этого файла. Если файл существует и информация успешно извлечена, то она сохраняется в массив $themeinfo.
Важные поля:
Title — название темы. Если оно не задано, то используется название, полученное из имени файла темы.
Schemes — схемы оформления темы. Каждая схема имеет имя и заголовок, которые сохраняются в массиве.
Version — версия темы. Если не указана, то по умолчанию оставляется пустым.
Возвращаемое значение:
Если не был указан параметр $theme_name, возвращается массив с информацией по всем доступным темам.
Если имя темы указано, возвращается информация только по этой теме.
Возвращаемое значение:
mixed: либо массив с информацией о темах, либо информация по одной теме, либо false, если тема не найдена.
Примеры использования в контексте Cotonti CMF:
Пример 1: Получение информации по всем доступным темам
$themes_info = cot_themes_info(); // Возвращает массив с информацией по всем доступным темам
foreach ($themes_info as $theme_name => $theme_info) {
echo "Тема: " . $theme_name . "<br>";
echo "Заголовок: " . $theme_info['Title'] . "<br>";
echo "Схемы: " . implode(", ", $theme_info['Schemes']) . "<br>";
echo "Версия: " . $theme_info['Version'] . "<br>";
}
Пример 2: Получение информации по одной теме
$theme_name = 'default'; // Имя темы
$theme_info = cot_themes_info($theme_name); // Возвращает информацию по теме 'default'
if ($theme_info) {
echo "Заголовок: " . $theme_info['Title'] . "<br>";
echo "Схемы: " . implode(", ", $theme_info['Schemes']) . "<br>";
echo "Версия: " . $theme_info['Version'] . "<br>";
} else {
echo "Тема не найдена.";
}
Пример 3: Проверка существования конкретной темы перед использованием
$theme_name = 'custom_theme';
$theme_info = cot_themes_info($theme_name);
if ($theme_info) {
// Дальнейшая обработка с использованием информации о теме
echo "Тема существует, её версия: " . $theme_info['Version'];
} else {
echo "Тема с именем '$theme_name' не найдена.";
}
Пример 4: Получение схем для темы и их использование
$theme_name = 'modern';
$theme_info = cot_themes_info($theme_name);
if ($theme_info && !empty($theme_info['Schemes'])) {
echo "Доступные схемы для темы '$theme_name':<br>";
foreach ($theme_info['Schemes'] as $scheme_name => $scheme_title) {
echo "- $scheme_title ($scheme_name)<br>";
}
} else {
echo "Схемы не найдены для темы '$theme_name'.";
}
Заключение:
Функция cot_themes_info предоставляет удобный способ получения информации о темах в Cotonti. Она позволяет работать с метаинформацией тем (название, схемы, версия) и легко интегрировать её в различные части сайта или панели управления.
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 05.07.2026 18:32
- Страница размещена: 22.01.2025 01:17
- Последнее обновление: 22.01.2025 01:17