Темы и дизайн
Как правило, на сайтах не используется исходная CMS с исходным дизайном. Веб-мастера интегрируют свои шаблоны дизайна, вносят свои доработки в коды файлов модулей (мы называем это «кастомизацией», от англ. custom - сделанный на заказ, пользовательский, переработанный). Веб-мастер может очень долго перерабатывать DIAFAN.CMS, меняя модули «под себя», затрагивая много файлов системы в разных папках.
Для удобства систематизации и администрирования таких изменений в DIAFAN.CMS существуют Темы. Термин кастомизация и соответствующий раздел в документации также имеют прямое отношение к Темам.
Темы могут потребоваться для того, чтобы:
- перенести доработки на другой сайт на DIAFAN.CMS или подделиться с сообществом;
- быстро и удобно менять дизайн сайта;
- защитить свои доработки от обновлений.
Как создать тему
- При обновлении системы и получении новых файлов DIAFAN.CMS сама определяет изменные Вами файлы, сравнивая их с сохраненными копиями в точке возврата. В ходе обновления тема сгененрируется автоматически и все «кастомные» файлы перенесутся в папку custom.
- После доработки модулей и/или внедрения своего дизайна, пользователь может самостоятельно зайти в модуль «Темы и дизайн», нажать «Сгенерировать тему», и все «кастомные» файлы автоматически перенесутся в папку custom.
- При переносе темы с другого сайта, нужно сначала создать и применить новую тему, а затем скопировать файлы переносимой темы в папку темы. Она будет создана в папке custom. При ручном переносе проследите, чтобы сохранилась структура папок, входящих в состав темы.
Пример:
Веб-мастер ранее уже вносил изменения в тему, и/или применял обновления. В результате на сайте несколько тем, одна из которых сейчас используется. Например, эта текущая тема называется "mytheme", соответсвенно её файлы хранятся в папке custom/mytheme.
Если веб-мастеру необходимо исправить внешний вид списка новостей, необходимо править файл custom/mytheme/modules/news/views/news.view.list.php. Изменения отобразятся на сайте, потому что это текущая тема.
Частая ошибка, которую совершают веб-мастера, забывая, что у них применена тема. Вместо файла текущей темы правят «обманчиво похожий» исходный системный файл modules/news/views/news.view.list.php. Все изменения из этого файла не будут отображены на сайте, потому что приоритет показа у аналогичных файлов из папки текущей темы custom/mytheme.
Итак, если Вы столкнетесь с тем, что изменения файлов темы не отображаются на сайте – проверьте какую тему редактируете, свою текущую или базовую «из коробки».
Вы также можете применить сразу несолько тем. Тогда они будут исопользоваться на сайте в порядке установки. В приоритете будут последние установки. В списке тем примененные темы выводятся выше остальных, в порядке применения. Сначала те, что применялись раньше. Затем те, что применялись позже.
Пример:
На сайте применено две темы. Сначала тема my, затем тема my1. В обоих темах есть файл modules/news/news.php. На сайте будет использоваться файл из папки my1, так как эта тема применена позже.
Если же какие-то файлы есть только в теме my, то они будут использованы.
Сколько тем можно создавать для одного сайта?
Сколько угодно. Переключаться между ними очень просто. Нужно только применить нужну тему и отключить прежнюю тему. Чаще всего темы используются для быстрого изменения дизайна, при загрузке шаблонов или переносе сайтов.
Как перенести тему с одного сайта на другой?
Сначала нужно сохранить все «кастомные» файлы, сгенерировав тему. Затем просто скачать архив темы с одного сайта и создать тему на другом сайте, добавив скачанный архив в поле «Импорт темы».
Может ли тема быть пустой?
Может, хотя практического смысла это не имеет. Если создать новую тему и ничего больше с ней не делать, папка темы в папке custom появится, создание темы будет «засчитано» в системе. Только никакого влияния на отображение сайта это, разумеется, не окажет. Скачать пустую тему в виде ZIP-архива тоже нельзя.
Демонстрационный контент для темы
Если Вы создаете шаблон для сайта дополнений, Вы можете добавить в свою тему демонстрационный контент, который поможет лучше представить назначение и область применения шаблона. В DIAFAN.CMS есть автогенератор демонстрационного контента. Для того, чтобы добавить демонстрационный контент нужно:
- заполнить сайт так, как его должен увидеть покупатель шаблона;
- удалить (в том числе из корзины) все лишние данные, отключить лишние модули;
- нажать ссылку «Добавить в текущую тему демонстрационный контент».
После этого в Вашей текущей примененной теме появятся файлы установки контента для модулей. Контент модулей будет установлен, если загрузить тему во время установки DIAFAN.CMS или при переустановки модуля в интерфейсе «Установка/удаление модулей».
Подключение
Подключаемая часть – файл modules/custom/custom.inc.php. В нем описан класс
Custom_inc. В модуле к объекту класса можно обратиться через переменную $this->diafan->_custom
. Экземпляр класса создается при первом вызове
переменной.
Методы
array generate ([boolean $enable = false]) – Генерирует тему из кастомизированных файлов.
- boolean $enable: активирует сгенерированную тему
Пример:
// сгенерирует тему
$result = $this->diafan->_custom->generate();
if(! $result)
{
echo 'Тема не сгенерирована. Нет кастомизированных файлов.';
}
else
{
if($result["custom"])
{
echo 'Кастомизированные файлы: '.implode(' ',$result["custom"]);
}
if($result["return"])
{
echo 'Восстановленные файлы: '.implode(' ', $result["return"]);
}
}
// выведет: перечень файлов
array get_dir (string $path, [mixed $names = false]) – Читает директорию с учетом активных тем сайта.
- string $path: путь до директории относительно корня сайта
- mixed $names: темы из числа активных тем сайта, исключаемые из чтения
boolean is_diff (string $a, string $b, [boolean $simple = false]) – Сравнение контента.
- string $a: содержание контента
- string $b: содержание контента
- boolean $simple: упрощенное сравнение
boolean set (mixed $array, boolean $enable, [boolean $sql = false]) – Изменяет состояние темы.
- mixed $array: название темы или массив названий тем
- boolean $enable: активирует тему
- boolean $sql: выполняет дополнительные запросы к базе данных
boolean import (string $file_path, string $name) – Импортирует тему.
- string $file_path: архивный файл темы
- string $name: название темы
void query (string $name, [boolean $install = true]) – Исполнение SQL-запросов в файле install.sql или uninstall.sql.
- string $name: название темы
- boolean $install: определяет файл запросов: install или uninstall
array get_modules ([mixed $names = false]) – Получает список всех модулей, которые можно установить.
- mixed $names: темы, для которых определяются модули (по умолчанию все активные темы)
boolean set_modules (mixed $modules, boolean $enable, [mixed $names = false]) – Установка/удаление модулей.
- mixed $modules: название модуля или массив названий модулей
- boolean $enable: маркер установки/удаления модулей
- mixed $names: не активные темы, которые необходимо временно подключить для установки/удаления определенных в их коде модулей
Файлы
modules/custom/admin/custom.admin.php – темы;
modules/custom/admin/custom.admin.demo.php – демо-данные для темы;
modules/custom/admin/js/custom.admin.edit.js – редактирование темы, JS-сценарий;
modules/custom/admin/js/custom.admin.js – темы, JS-сценарий;
modules/custom/custom.exec.php – обрабатывает полученные данные из формы;
modules/custom/custom.export.php – экспорт темы;
modules/custom/custom.inc.php – подключение модуля;
modules/custom/custom.install.php – установка модуля.
База знаний
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.
Ваш комментарий будет первым.