Как импортировать товар без атрибута name?

Если в импортируем фиде внутри элементов offer нет элементов name, то плагин Import from YML попробовать обработать данный товар согласно правилам Яндекса, разработанным для Произвольного типа предложений. Т.е он попытается отыскать в фиде typePrefix, vendor, model и склеить их по следующей схеме: typePrefix + vendor + model (см картинку ниже).

Произвольный тип YML фида

Однако, вы можете повлиять на данный алгоритм, если воспользуетесь встроенным в плагин фильтром ipytw_custom_yml_format_product_name_f. С его помощью можно изменить последовательность или вовсе взять название из какого-нибудь другого элемента.

В примере (код вставляется в function.php вашей темы) ниже мы добавляем название страны к уже сгенерированному названию:

add_filter('ipytw_custom_yml_format_product_name_f', 'my_custom_yml_format_product_name_func', 11, 3);
function my_custom_yml_format_product_name_func($product_name, $data_arr, $feed_id) {
	// $product_name - название, которое уже сгенерировал плагин
	// $data_arr - содержит ассоциативный массив с ключами 'offer_xml_object', 'typePrefix', 'vendor', 'model'
	// $feed_id - номер фида

	// объект спарсенных атрибутов
	$offer_xml_object = $data_arr['offer_xml_object'];

	// в примере ниже мы добавим к названию страну, если она есть в фиде и лежит в атрибуте country_of_origin
	if (property_exists($offer_xml_object, 'country_of_origin')) {
		$country_of_origin = trim((string)$offer_xml_object->country_of_origin);
		$product_name .= ' '.$country_of_origin;
	}

	return $product_name;
}

Обращаю ваше внимание на то, что данный фильтр срабатывает только тогда, когда соблюдаются два условия:

  1. Элемент offer не содержит внутри себя элемента name;
  2. Элемент offer содержит внутри себя элементы typePrefix, vendor, model
Рейтинг: 5

2023-10-24 / / 0 комментариев / Import from YML / , , , ,