Как написать обновление для модуля Битрикс?

Ссылка скопирована
1 ответ

Есть самописный локальный модуль, который требуется дополнить фичей и чтобы она заработала нужно будет переустановить модуль, но хочу избежать этого. Можно ли как-то написать обновление для модуля?

Дополнительно:

Если это локальный, то просто замените файлы и все

  • Сергей, если бы всё было так просто. Дело в том что модуль копирует некоторые свои файлы в папку ядра при установке, так вот мне нужно докинуть туда ещё файлов, это легко сделать немного дописав инсталлер, но перед этим придётся удалить модуль, что повлечёт за собой ряд нежелательных сайдэффектов. Поэтому-то я и спрашиваю как написать обновление для модуля, в котором я смогу выполнить все необходимые мне действия, не прибегая к переустановки
  • JastaFly, а что Вам мешает переписать инсталлер так, чтобы удаление модуля не несло нежелательные сайд-эффекты?

    Или сделать так, чтобы повторная установка не несла сайд-эффектов. У меня был локальный модуль, в котором обновился набор обработчиков событий. Я просто в "Командной PHP-строке" создал экземпляр инсталлера и вызвал

    $installer->UninstallEvents(); $installer->InstallEvents();

    $installer->UninstallEvents(); $installer->InstallEvents();

  • Михаил Ливач, всё это костыли, на самом деле мою задачу можно решить и множеством других способов, не прибегая к переустановки, просто анализировал как до того делали другие разработчики и они переустанавливали модуль. Но истинные джедаи так не поступают, поэтому я и задумался, а может есть какой-то нативный способ написать апдейт для модуля
  • Если модуль локальный, и обновление через маркет не подходит, то как вариант - написать функцию что заберет и перекинет файлы куда надо и просто вызвать её из php-консоли, через агента или еще как-то в зависимости от сложности обновления.
    Также никто не запрещает вызвать класс инсталлятора модуля и руками заново запустить функцию установки не удаляя его.

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Антон С. Ответ

    Для того чтобы написать обновление для модуля в Битриксе, вам необходимо следовать определенным шагам. Вот пошаговая инструкция:

    1. Создайте новую папку в структуре вашего модуля и назовите ее "updates".
    2. Внутри этой папки создайте новый файл с именем "001_update.php" (номер файла указывает на порядок обновлений, вы можете использовать любые числа).
    3. В этом файле опишите обновление с помощью метода `CModule::IncludeModule` для подключения модуля и вызова необходимых функций.
    4. Напишите код обновления, который может включать в себя изменения в базе данных, добавление новых функций или исправление ошибок.
    5. Сохраните файл и загрузите его на сервер, в папку вашего модуля.

    Пример кода обновления для модуля Битрикс:

    query($sql);
     
            MigrationTable::add([
                'VERSION' => '001',
                'DESCRIPTION' => 'Add custom field to iblock element table',
            ]);
        }
     
        public function down()
        {
            $connection = Application::getConnection();
            $sql = "ALTER TABLE `b_iblock_element` DROP `CUSTOM_FIELD`";
            $connection->query($sql);
     
            MigrationTable::delete('001');
        }
    }
     
    $update = new UpdateModuleModuleName001();
    $update->up();

    query($sql); MigrationTable::add([ 'VERSION' => '001', 'DESCRIPTION' => 'Add custom field to iblock element table', ]); } public function down() { $connection = Application::getConnection(); $sql = "ALTER TABLE `b_iblock_element` DROP `CUSTOM_FIELD`"; $connection->query($sql); MigrationTable::delete('001'); } } $update = new UpdateModuleModuleName001(); $update->up();

    После того как вы создали и загрузили файл обновления на сервер, перейдите в административную часть Битрикса, зайдите в раздел "Marketplace" и найдите ваш модуль. В разделе "Установленные решения" выберите ваш модуль и нажмите на кнопку "Обновить".

    Теперь ваш модуль будет обновлен согласно коду, который вы написали в файле обновления. Не забудьте проверить работоспособность модуля после обновления.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно