Добавление свойств инфоблоку через Schema - techart/bitrix.tao GitHub Wiki
Часто возникает задача - добавить новое свойство инфоблоку. Добавлять можно разными путями: через админку на сайте (на хостинге), локально в классе, потом залить изменения. Чтобы все это синхронизировать можно воспользоваться данным способом.
- Создать папку /local/lib/Schema/. В ней будут храниться файлы с описанием добавляемых свойств.
Например, к инфоблоку с новостями хотим привязать элементы другого инфоблока. Заводим в папке файл, где описываем метод **run()*. В котором и добавляем свойство.
// local/lib/Schema/News.php
namespace App\Schema;
class News
{
public static function run()
{
\TAO::infoblock('News')
->setProperty(array(
'CODE' => 'shops',
'NAME' => 'Магазины',
'PROPERTY_TYPE' => 'E',
'LINK_TO' => 'Shops',
'MULTIPLE' => 'Y',
));
}
}
- В файле /local/php_interface/init.php прописываем вызов метода cachedRun(), где в качестве параметра передаем имя класса, который был описан ранее.
// local/php_interface/init.php
\TAO::cachedRun('\App\Schema\News');
После этого свойство будет добавлено.
Метод cachedRun() проверяет, были ли произведены какие-либо изменения в файле. И если были, то он загружает класс в этом файле и запускает в нем статический метод run().
Кроме того, в метод cachedRun() вторым параметром можно передать имя другого метода, если он отличается от run().