, (*1)
Данный пакет больше активно не поддерживается
Причина - мы больше не используем Битрикс в своих проектах.
Если вам интересен этот проект и вы хотите заняться его поддержкой - форкните его и создайте Issue в данном репозитории чтобы мы поместили здесь ссылку на форк., (*2)
Модификация полей создаваемых модулем highloadblock
Введение
Как известно, модуль highloadblock хранит элементы в произвольной таблице, причем каждое поле highload-блока представляет из себя столбец в этой таблице.
Однако по историческим причинам, Битрикс весьма странно выбирает тип столбца под свойство, например строковое свойство хранится в столбце с типом text.
Данный пакет позволяет переопределить типы полей для любых свойств хайлоадблоков, а также выполняет ряд самых полезных преобразований по-умолчанию., (*3)
Установка
1)composer require arrilot/bitrix-hlblock-fields-fixer, (*4)
2) добавляем в init.php, (*5)
require $_SERVER['DOCUMENT_ROOT']."/vendor/autoload.php";
Arrilot\BitrixHLBlockFieldsFixer\ServiceProvider::register();
Использование
По-умолчанию, пакет производит следующие преобразования:, (*6)
// тип поля => тип столбца в mysql
// 'string' => 'varchar(255)',
// 'string_formatted' => 'varchar(255)',
// 'text' => 'text',
// 'boolean' => 'tinyint(1)',
string - строка
string_formatted - шаблон
text - строка/шаблон в случае если при создании в поле "Количество строчек поля ввода:" указано более 1., (*7)
Можно добавить дополнительные или переписать существующие при помощи массива конфигурации:, (*8)
Arrilot\BitrixHLBlockFieldsFixer\ServiceProvider::register(['text' => 'longtext']);
Данная строчка затронет лишь преобразования для поля text, все остальные преобразования по-умолчанию продолжат работать.
Для того чтобы выключить какое-то преобразование можно задать ему null., (*9)
Как это работает
На событие OnAfterUserTypeAdd добавлен обработчик который выполняет ALTER TABLE MODIFY COLUMN
Выполняется он только при добавлении нового свойства. При обновлении ничего испортить невозможно., (*10)