Яндекс.Маркет добавляем к тегу param пользовательский data аттрибут
Последние записи
В первую очередь предупреждаю, что не нужно вносить модификации в ядро проекта или классы сторонних модулей.
Делая это вы делаете на свой страх и риск и понимаете, что при любом обновлении модуля могут возникнуть проблемы
Иногда все же может возникнуть ситуация, когда вы не можете ждать внесения изменений в модуль и решение нужно здесь и сейчас. Опишу как добавить в "Яндекс.Маркет для продавцов" пользовательский атрибут к тегу param. В моем случае я добавлял атрибут code. Если вы все сделаете правильно, то получится так:
 
1. Добавляем класс нового атрибута на базе уже существующего name.
Переходим в \bitrix\modules\yandex.market\lib\export\xml\attribute. Ищем файл paramname.php и копируем его в новый файл. В моем случае это paramcode.php
Заменяем все что связано с name на code. У вас должен получиться примерно такой файлик:
<?php
namespace Yandex\Market\Export\Xml\Attribute;
use Yandex\Market;
class ParamCode extends Base
{
	public function getDefaultParameters()
	{
		return [
			'name' => 'code',
		];
	}
	public function preselect(array $context)
	{
		return [
			'TYPE' => Market\Export\Entity\Manager::TYPE_IBLOCK_PROPERTY_FEATURE,
			'FIELD' => implode('.', [
				Market\Config::getModuleName(),
				Market\Ui\Iblock\PropertyFeature::getFeatureId($context['EXPORT_SERVICE']),
				'CODE',
			]),
		];
	}
}2. Добавляем новый атрибут во всплывающее меню Яндекс.Маркет
Переходим в \bitrix\modules\yandex.market\lib\export\xml\format\yandexmarket
Ищем функцию getOfferDefaultChildren а в ней формирование структуры тега param с таким кодом new Xml\Tag\Param. В моем случае это 190 строка
Добавляем вызов нашего класса:
new Xml\Attribute\ParamCode(['preselect' => true]),Должно получиться примерно так:
new Xml\Tag\Param([
	'multiple' => true,
	'visible' => true,
	'preselect' => true,
	'attributes' => [
		new Xml\Attribute\ParamName(['required' => true, 'visible' => true, 'preselect' => true]),
		new Xml\Attribute\ParamUnit(['preselect' => true]),
		new Xml\Attribute\ParamCode(['preselect' => true]),
	],
]),Все. Сохраняйте изменения, переходите в формирование прайс-листов Яндекс маркет, добавляйте тег param и наслаждайтесь новым атрибутом.
Комментарии