Если вы пишите свой модуль, называться папки, в которых они будут лежать будут называться примерно так
mycompany.module1
mycompany.module2
Компоненты, которые они содержат, при установке обычно размещаются в папке
/bitrix/components/mycompany/
(или /local/components/mycompany/)
Т.е. пространство компонентов у двух разных модулей одного разработчика будет совпадать.
При удалении модуля он должен найти и удалить только свои компоненты.
Мне не удалось найти примеров в готовых модулях Битрикса - они только копируют компоненты, но их не удаляют.
Поэтому я сделал так:
По-хорошему нужно ещё проверять, не удалили ли мы все наши модули и все их компоненты и в этом случае удалять пустую папку пространства имён наших компонентов
mycompany.module1
mycompany.module2
Компоненты, которые они содержат, при установке обычно размещаются в папке
/bitrix/components/mycompany/
(или /local/components/mycompany/)
Т.е. пространство компонентов у двух разных модулей одного разработчика будет совпадать.
При удалении модуля он должен найти и удалить только свои компоненты.
Мне не удалось найти примеров в готовых модулях Битрикса - они только копируют компоненты, но их не удаляют.
Поэтому я сделал так:
//Класс установки модуля class mycompany_component1 extends CModule{ //Пространство имён компонентов public $MODULE_COMPONENTS_NAMESPACE = "mycompany"; //Компоненты модуля public $arModuleComponents = ["component1"]; ... function UnInstallFiles() { ... //Удаление компонентов модуля из /local foreach ($this->arModuleComponents as $componentName) { if (strlen($componentName) > 0) { $resDel=DeleteDirFilesEx("/local/components/" . $this->MODULE_COMPONENTS_NAMESPACE . '/' . $componentName . '/'); } } //TODO: удалять папку с компонентами, если она оказывается пустая return true; } } |