Родительские темы

Примечание

Большая часть информации в этой статье относится только к CS-Cart 4.4.1 и более новым версиям.

Общая информация

Если у темы X в файле manifest.json в поле parent_theme указана тема Y, то тема X является зависимой темой (или дочерней темой), а тема Yродительской.

Зависимая тема содержит только те файлы, которые отличаются от файлов родительской темы, и использует содержимое (шаблоны, лого и т.д.) родительской темы, когда это необходимо.

  • Объединение папок css, media и templates родительской и зависимой тем происходит в реальном времени.
    • Если в зависимой теме не хватает определённого файла, будет использован соответствующий файл из родительской темы.
    • Если в зависимой теме присутствуют файлы, которых нет в родительской теме (например, шаблоны детальной страницы товаров и списка товаров, оболочки блоков или статичные шаблоны), то при слиянии в дочерней теме будут и эти файлы, и файлы родительской темы.
    • Если один и тот же файл присутствует в обеих темах, предпочтение отдаётся файлу зависимой темы.
  • Папки layouts и styles из разных тем не объединяются.
    • Если у зависимой темы есть собственные макеты, то используются только они. В противном случае будут использоваться макеты родительской темы.
    • Стили используются только от зависимой темы.
  • Изображения могут быть загружены из родительской темы с помощью переменной $images_dir.
    • Если у темы есть родительская тема, то $images_dir в Smarty-шаблонах будет указывать на папку media/images, расположенную в родительской теме.
    • Если у темы нет родительской темы, то переменная будет указывать на папку media/images, расположенную в самой теме.

Примечание

Чтобы указывать на папку media/images, расположенную в самой теме, используйте в Smarty-шаблонах переменную $self_images_dir.

Клонирование темы

  • Если у исходной темы нет родительской темы, то файлы исходной темы не будут скопированы в директорию темы-клона.

    Тема-клон будет состоять только из файла manifest.json и папки /media/images/ с логотипами темы. Название исходной темы будет указано в поле parent_theme файла manifest.json темы-клона.

  • Если у исходной темы есть родительская тема, содержимое исходной темы будет целиком скопировано в тему-клон.

Установка тем

При установке зависимой темы файлы родительской темы не объединяются с файлами зависимой темы. Из папки var/themes_repository в папку design/themes копируются только файлы зависимой темы.

Обновление файлов темы

Центр обновлений не обновляет файлы пользовательских тем. При обновлении изменяются только темы Responsive и Basic.

Установка файлов модулей

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

Например, содержимое var/themes_repository/responsive/templates/addons/[addon] будет скопировано только в папку design/themes/responsive/templates/addons/[addon].

Модули, добавляющие файлы шаблонов в тему Basic, будут корректно работать только в теме Basic и темах, зависимых от неё. Если необходимые шаблоны отсутствуют в текущей теме, CS-Cart не будет использовать шаблоны темы Basic.