Пример структуры файла index.php при разработке платного модуля Битрикс для Marketplace
Если Вы собираетесь написать платный модуль, знайте: файлы index.php и include.php платных модулей шифруются перед загрузкой на Marketplace, а также туда добавляется код, сравнивающий текущую дату с датой установки модуля (для корректной работы в деморежиме). Для того, чтобы в результате этих преобразований модуль не утратил работоспособности, код файла index.php должен быть выстроен по определенным правилам - см. пример.
<? IncludeModuleLangFile( __FILE__); Class mcart_softmebel extends CModule { var $MODULE_ID = "mcart.softmebel"; var $MODULE_VERSION; var $MODULE_VERSION_DATE; var $MODULE_NAME; var $MODULE_DESCRIPTION; var $MODULE_GROUP_RIGHTS = "Y"; function mcart_softmebel() { $arModuleVersion = array(); $path = str_replace("\\", "/", __FILE__); $path = substr($path, 0, strlen($path) - strlen("/index.php")); include($path."/version.php"); if (is_array($arModuleVersion) && array_key_exists("VERSION", $arModuleVersion)){ $this->MODULE_VERSION = $arModuleVersion["VERSION"]; $this->MODULE_VERSION_DATE = $arModuleVersion["VERSION_DATE"]; }else{ $this->MODULE_VERSION=MS_MODULE_VERSION; $this->MODULE_VERSION_DATE=MS_MODULE_VERSION_DATE; } $this->MODULE_NAME = GetMessage("MSOFTMEB_MODULE_NAME"); $this->MODULE_DESCRIPTION = GetMessage("MSOFTMEB_MODULE_DESCRIPTION"); $this->PARTNER_NAME = GetMessage("MSOFTMEB_PARTNER_NAME"); $this->PARTNER_URI = "https://mcart.ru/"; } function DoInstall() { global $APPLICATION; if (!IsModuleInstalled("mcart.softmebel")) { $this->InstallDB(); $this->InstallEvents(); $this->InstallFiles(); } return true; } function DoUninstall() { $this->UnInstallDB(); $this->UnInstallEvents(); $this->UnInstallFiles(); return true; } function InstallDB() { RegisterModule("mcart.softmebel"); return true; } function UnInstallDB() { UnRegisterModule("mcart.softmebel"); return true; } function InstallEvents() { return true; } function UnInstallEvents() { return true; } function InstallFiles() {CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/mcart.softmebel/install/mcart", $_SERVER["DOCUMENT_ROOT"]."/bitrix/wizards/mcart", true, True); return true; } function UnInstallFiles() { DeleteDirFilesEx("/bitrix/wizards/mcart/"); DeleteDirFilesEx("/bitrix/templates/softmebel_/"); return true; } } //end class ?> |
Обратите внимание на методы DoInstall и DoUnInstall - они должны быть построены именно так:
function DoInstall() { global $APPLICATION; if (!IsModuleInstalled("mcart.softmebel")) { $this->InstallDB(); $this->InstallEvents(); $this->InstallFiles(); } return true; } |
$this->InstallDB(); $this->InstallEvents(); $this->InstallFiles(); |
Если Вы считаете, что какой-то из этих трех методов не несет никакой функциональной нагрузки для Вашего модуля - достаточно написать "пустой" метод:
например, наш модуль не добавляет в систему никаких собственных событий. Поэтому метод InstallEvents будет выглядеть так:
function InstallEvents() { return true; } |