Темы и дизайн

Как правило, на сайтах не используется исходная CMS с исходным дизайном. Веб-мастера интегрируют свои шаблоны дизайна, вносят свои доработки в коды файлов модулей (мы называем это «кастомизацией», от англ. custom - сделанный на заказ, пользовательский, переработанный). Веб-мастер может очень долго перерабатывать DIAFAN.CMS, меняя модули «под себя», затрагивая много файлов системы в разных папках.

Для удобства систематизации и администрирования таких изменений в DIAFAN.CMS существуют Темы. Термин кастомизация и соответствующий раздел в документации также имеют прямое отношение к Темам.

Внимание!
Тема – набор пользовательских файлов, отличающихся от стандартных файлов DIAFAN.CMS, вынесенных в отдельную папку custom, с сохранением иерархии. Термины кастомизация и пользовательские изменения подразумевают то же самое.

Темы могут потребоваться для того, чтобы:

  • перенести доработки на другой сайт на DIAFAN.CMS или подделиться с сообществом;
  • быстро и удобно менять дизайн сайта;
  • защитить свои доработки от обновлений.
Внимание!
Обратите внимание на готовые темы дизайна для DIAFAN.CMS

Как создать тему

  • При обновлении системы и получении новых файлов DIAFAN.CMS сама определяет изменные Вами файлы, сравнивая их с сохраненными копиями в точке возврата. В ходе обновления тема сгененрируется автоматически и все «кастомные» файлы перенесутся в папку custom.
  • После доработки модулей и/или внедрения своего дизайна, пользователь может самостоятельно зайти в модуль «Темы и дизайн», нажать «Сгенерировать тему», и все «кастомные» файлы автоматически перенесутся в папку custom.

    Генерирование темы

  • При переносе темы с другого сайта, нужно сначала создать и применить новую тему, а затем скопировать файлы переносимой темы в папку темы. Она будет создана в папке custom. При ручном переносе проследите, чтобы сохранилась структура папок, входящих в состав темы.
Внимание!
Помните! Файлы текущей темы имеют приоритет над аналогичными файлами системы! Поэтому если Вы, внедряя свой дизайн, правили системный файл стандартного демо-шаблона themes/site.php, после создания темы этот файл переедет в папку custom/theme-name/themes/site.php, а на месте themes/site.php восстановится исходный файл DIAFAN.CMS! Это же касается всех остальных файлов, которые Вы трогали, в том числе и css/style.css, который после генерации темы будет иметь адрес custom/theme-name/css/style.css и т.д.

Пример:

Веб-мастер ранее уже вносил изменения в тему, и/или применял обновления. В результате на сайте несколько тем, одна из которых сейчас используется. Например, эта текущая тема называется "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: не активные темы, которые необходимо временно подключить для установки/удаления определенных в их коде модулей

Файлы

  1. modules/custom/admin/custom.admin.php – темы;

  2. modules/custom/admin/custom.admin.demo.php – демо-данные для темы;

  3. modules/custom/admin/js/custom.admin.edit.js – редактирование темы, JS-сценарий;

  4. modules/custom/admin/js/custom.admin.js – темы, JS-сценарий;

  5. modules/custom/custom.exec.php – обрабатывает полученные данные из формы;

  6. modules/custom/custom.export.php – экспорт темы;

  7. modules/custom/custom.inc.php – подключение модуля;

  8. modules/custom/custom.install.php – установка модуля.

База знаний

Ваши комментарии и дополнения

Ваш комментарий будет первым.

Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.