Добавление свойств инфоблоку через Schema - techart/bitrix.tao GitHub Wiki

Часто возникает задача - добавить новое свойство инфоблоку. Добавлять можно разными путями: через админку на сайте (на хостинге), локально в классе, потом залить изменения. Чтобы все это синхронизировать можно воспользоваться данным способом.

  1. Создать папку /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',
		));
	}
}
  1. В файле /local/php_interface/init.php прописываем вызов метода cachedRun(), где в качестве параметра передаем имя класса, который был описан ранее.
// local/php_interface/init.php
\TAO::cachedRun('\App\Schema\News');

После этого свойство будет добавлено.

Метод cachedRun() проверяет, были ли произведены какие-либо изменения в файле. И если были, то он загружает класс в этом файле и запускает в нем статический метод run().

Кроме того, в метод cachedRun() вторым параметром можно передать имя другого метода, если он отличается от run().