При установке модуля, можно автоматически создать новую страницу Макета.
Сам layout.xml может располагаться как в app/addons/myadd/layout.xml
так и в рамках каждой темы:
или design/themes/responsive/layouts/addons/myadd/layout.xml
или design/themes/abt__youpitheme/layouts/addons/myadd/layout.xml
или design/themes/abt__unitheme/layouts/addons/myadd/layout.xml
но проблема в том, что функция, копирующая файлы при установке модуля - не учитывает папку /layouts/
- http://94.130.79.130/i/20190326-125737-QE4oLXumMN.png
Просьба поправить это.
1 лайк
К сожалению, нам не удалось воспроизвести проблему.
Логика установки модуля не предусматривает копирование layout.xml в папку design/themes/[theme]/layouts/
файл layout.xml импортируется в базу и потом появляется в качестве вкладки на странице Дизайн > Макеты
Примером такого модуля является модуль Blog, в котором файл layout.xml корректно импортируется.
Возможно, мы говорим о разных функционалах. Если это так, то, пожалуйста, уточните.
Видимо, я неправильно описал проблему.
При создании модуля можно создать новую страницу Макета оперируя файлом layout.xml
.
- В общем случае, этот файл может располагаться в двух местах:
app/addons/my_changes/layouts.xml
и
design/themes/THEME/layouts/addons/my_changes/layouts.xml
app
├- addons
| └- my_changes
| └- layouts.xml (глобальный для каждой ТЕМЫ)
|
└- desing
└- themes
├- responsive
| └- layouts
| └- addons
| └- my_changes
| └- layouts.xml (точечно можно задать только для темы RESPONSIVE)
|
├- abt__unitheme
| └- layouts
| └- addons
| └- my_changes
| └- layouts.xml (точечно можно задать только для темы ABT__UNITHEME)
|
└- abt__youpitheme
└- layouts
└- addons
└- my_changes
└- layouts.xml (точечно можно задать только для темы ABT__YOUPITHEME)
Почему я так решил, что в двух местах - по коду ядра cs-cart http://94.130.79.130/i/20190415-120533-QEx5wHtxjq.png
- сначала смотрим
layouts.xml
в рамках Темы:
$theme = Themes::factory($theme_name);
$theme_addon_layouts_file = $theme->getContentPath("layouts/addons/{$addon_name}/layouts.xml");
- если нет файла в рамках темы, смотрим в папку самого модуля
....
} elseif (file_exists(Registry::get('config.dir.addons') . $addon_name . '/layouts.xml')) {
$addon_layouts_path = Registry::get('config.dir.addons') . $addon_name . '/layouts.xml';
}
- Я как разработчик, хочу МОДУЛЬНО для разных Тем задать разные
layouts.xml
, поэтому я должен делать вот такую структуру в соответствии с парадигмой cs-cart (http://94.130.79.130/i/20190415-124107-Lbr8Ta7039.png):
app
├- addons
| └- my_changes
| └- layouts.xml (оставляю некий универсальный layouts.xml - для сторонних Тем)
|
└- var
└- themes_repository
├- responsive
| └- layouts
| └- addons
| └- my_changes
| └- layouts.xml (точечно можно задать только для темы RESPONSIVE)
|
├- abt__unitheme
| └- layouts
| └- addons
| └- my_changes
| └- layouts.xml (точечно можно задать только для темы ABT__UNITHEME)
|
└- abt__youpitheme
└- layouts
└- addons
└- my_changes
└- layouts.xml (точечно можно задать только для темы ABT__YOUPITHEME)
-
Так вот проблема в следующем: при установки модуля или темы cs-cart проверяет наличие
layouts.xml
в соответствии с п.1 и применяет их. Но при установке модуля не происходит копирование файлов из:
└- var
└- themes_repository
└- responsive
└- layouts
└- addons
└- my_changes
└- layouts.xml (точечно можно задать только для темы RESPONSIVE)
в
└- design
└- themes
└- responsive
└- layouts
└- addons
└- my_changes
└- layouts.xml (точечно можно задать только для темы RESPONSIVE)
Как мне, модульно поставлять layouts.xml
индивидуально для каждой темы?
К сожалению, мне не совсем понятно, что вы имеете в виду.
Если вы хотите создать layouts.xml для конкретных тем, то вы можете использовать логику из п.1 вашего сообщения, т.е. расположить файл в папках design/themes/[theme]/layouts/addons/[addon]/layouts.xml
В этом случае вам необходимо для каждой темы создать необходимый layouts.xml
Уточните, пожалуйста, почему этот вариант вам не подходит.
В том случае, если вы не знаете какие темы установлены, то вам необходимо написать функцию, которая будет при установке модуля определять какие темы установлены, и для них создавать/копировать/перемещать файл layouts.xml
Так, как layouts.xml не дергается из папки var. Это не является багом.