Обновление на бою
Коротко: бэкап → замена файлов → кнопка «Обновить» → проверка → сброс кеша.
Нажать «Обновить» — обязательный шаг, а не формальность. Разберём почему.
1. Бэкап
База. Достаточно этих объектов:
b_hl_blockи сама таблица словаря — по умолчаниюb_site_dictionary, точное имя смотрите вb_hl_block.TABLE_NAME;b_mrlexndr_translate_state— очередь и отметки о переводах;b_option WHERE MODULE_ID = 'mrlexndr.translate'— настройки;b_module,b_module_to_module— регистрация модуля и обработчиков;b_agent WHERE MODULE_ID = 'mrlexndr.translate'.
Файлы. Каталог модуля и заглушки страниц админки
bitrix/admin/mrlexndr_translate_*.php.
2. Замена кода
Залейте новые файлы поверх старых.
Проверьте, что install/version.php содержит версию выше той, что записана
в b_module. Иначе Битрикс не покажет кнопку «Обновить» — он показывает её
только при расхождении версий. Что делать, если кнопки нет, —
отдельная страница.
3. Нажмите «Обновить»
Marketplace → Установленные решения → Обновить рядом с модулем.
Без этого шага новый серверный код будет работать со старой клиентской частью и старой схемой базы. Обновление делает три вещи, которых подмена файлов не делает:
- раскладывает файлы вне каталога модуля — скрипты, стили, заглушки страниц админки и эндпоинт. Они физически лежат в других местах дерева, и заменой каталога модуля не обновляются;
- добавляет недостающие колонки таблицы состояния. Операция идемпотентна: повторный запуск ничего не портит;
- приводит в порядок обработчики событий. Их состав между версиями меняется: какие-то добавляются, какие-то снимаются.
После успешного обновления на месте должны быть:
/local/js/mrlexndr.translate/— редактор на сайте, перевод в списке и карточке;/local/styles/mrlexndr.translate/;/bitrix/tools/mrlexndr.translate/translate.php— единый эндпоинт.
Если обновление приходит не подменой файлов, а через сервис обновлений, сценарий другой: Обновление через сервис обновлений.
4. Проверьте структуру таблицы состояния
Колонки добавляются при каждом обновлении сами. Но если обновление по какой-то причине не выполнялось, недостающее можно добавить руками:
ALTER TABLE b_mrlexndr_translate_state ADD COLUMN FAILED_PROPS text NULL;
ALTER TABLE b_mrlexndr_translate_state ADD COLUMN MACHINE_PROPS text NULL;
ALTER TABLE b_mrlexndr_translate_state ADD COLUMN BROKEN_PROPS text NULL;
Ошибка «duplicate column» означает, что колонка уже есть, — это нормально и ничего не сломало.
5. Проверьте работу
Короткий прогон по живому сайту — Что проверить после выкладки.
6. Сбросьте кеш сайта
Настройки → Настройки продукта → Автокеширование, либо страница
bitrix/admin/cache_etag.php.
Переводы кешируются, и без сброса витрина какое-то время будет показывать прежние значения. Это не поломка, но выглядит как она — и время на поиск несуществующей причины уходит настоящее.
Если что-то пошло не так
Модуль не меняет стандартные объекты Битрикса. Даже если полностью удалить его
каталог и записи в b_module_to_module и b_agent, сайт продолжит работать —
пропадёт только подстановка переводов.
Порядок отката — Удаление, переустановка, откат.