Свои настройки в модуле решения
Файл bitrix/modules/astdesign.marketpro/custom_params.php уже есть в поставке решения — с пустым массивом. Его нужно не создать, а отредактировать.
Пример содержимого:
<?php
$customParams = [
"hideProductsNoPreviewPicture" => [
"TITLE" => "Скрывать товары без картинки анонса",
"TYPE" => "checkbox",
"DEFAULT" => ""
],
"hideProductsNoDetailPicture" => [
"TITLE" => "Скрывать товары без детальной картинки",
"TYPE" => "checkbox",
"DEFAULT" => ""
],
"hideProductsNoPrice" => [
"TITLE" => "Скрывать товары без цены",
"TYPE" => "checkbox",
"DEFAULT" => ""
],
];В результате на странице настроек решения появится секция
Пример получения значения добавленной настройки:
\Astdesign\Marketpro\Solution::getOption("hideProductsNoPreviewPicture", "N")Скрытые рычаги решения
Через этот же файл объявляются настройки, которых нет в админке. Часть параметров решение сознательно держит в коде — владельцу магазина их крутить незачем, — но у конкретного клиента их можно вынести в настройки:
geoRequestTimeoutиgeoRequestConnectTimeout— таймауты запроса к сервису определения города по IP. По умолчанию три и две секунды: если сервис не ответил, посетитель получает город по умолчанию, а не висящую страницу.pushDevicesDays— сколько дней хранить токены устройств, которые не заходили в приложение. По умолчанию срок задан по поведению FCM, который сам инвалидирует токен примерно через 270 дней простоя.параметры прогона push-рассылки, кроме размера партии: параллельность, таймауты, число попыток, интервал пересмотра сегмента.
Объявили опцию в custom_params.php — и Solution::getOption() начнёт брать значение из настроек решения вместо константы. Править ядро для этого не нужно.
Что переживает обновление
Папка lib/custom обновлением не затирается: сборщик пакета исключает её из поставки, поэтому переопределённые методы остаются на месте. Так же исключены backups, logs и files.
С custom_params.php иначе: он входит в поставку модуля. Пакет обновления содержит только изменённые файлы, поэтому обычно его не трогает — но однажды он в пакет уже попадал, когда решение его добавляло. Значит риск есть.
Держите этот файл под контролем версий и проверяйте после обновления: пустой массив вместо ваших настроек означает, что файл перезаписали. Как удобно это отслеживать — в статье «Контроль версий».