Яндекс.Маркет добавляем к тегу 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 и наслаждайтесь новым атрибутом.
Комментарии