1. Главная
  2. Блог Эм Си Арт
  3. Пример структуры файла index.php при разработке платного модуля Битрикс для Marketplace

Пример структуры файла index.php при разработке платного модуля Битрикс для Marketplace

Если Вы собираетесь написать платный модуль, знайте: файлы index.php и include.php платных модулей шифруются перед загрузкой на Marketplace, а также туда добавляется код, сравнивающий текущую дату с датой установки модуля (для корректной работы в деморежиме). Для того, чтобы в результате этих преобразований модуль не утратил работоспособности, код файла index.php должен быть выстроен по определенным правилам - см. пример.

Если Вы собираетесь написать платный модуль, знайте: файлы 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->InstallDB();          $this->InstallEvents();          $this->InstallFiles();
			
и с обязательным return true; в конце.

Если Вы считаете, что какой-то из этих трех методов не несет никакой функциональной нагрузки для Вашего модуля - достаточно написать "пустой" метод:

например, наш модуль не добавляет в систему никаких собственных событий. Поэтому метод InstallEvents будет выглядеть так:

				function InstallEvents()    {       return true;    }
			

Похожие записи в блоге

Все статьи