Характеристики товара (custom_fields) вместо описания товара в выгрузке Яндекс.Маркет для Virtuemart

Комментариев: 0

Долго думал как правильно составить заголовок, что бы всем было понятно о чем речь, не уверен, что получилось, но суть такая:

На одном из клиентских проектов столкнулся с тем, что у товаров нет описания, но есть характеристики, которые и являются описанием товара. Дело в том, что этот YML файл я хочу использовать для Турбо-страниц Яндекса, но там поле <description> должно быть обязательно заполнено. Скрипт, который выгружает товары в YML для Яндекс.Маркета естественно это не поддерживает, поэтому пришлось его немного дописать. Сделано это было на скорую руку (если много товаров, скорее всего будет сильная нагрузка на базу данных), но в моём случае это работает без проблем.

Откройте файл vm2_market.php, найдите и удалите блок, который отвечает за вывод описания, он выглядит примерно так:

	if ($row->product_desc) {
		$description = $row->product_desc;
		$description_short = substr($description, 0, 170);
		$xml .= '<description>'.htmlspecialchars(strip_tags($description)).'</description>'."\n";
	}

Вместо этого, используйте этот код:

//Настраиваемые поля вместо описания

$custom_fields = 'SELECT `virtuemart_customfield_id`, `virtuemart_product_id`, `virtuemart_custom_id`, `customfield_value` FROM `#__virtuemart_product_customfields` WHERE `virtuemart_product_id` = '.$product_id.'';

$db->setQuery($custom_fields);
$fields = $db->loadObjectList();

$xml .= '<description><![CDATA[';
$xml .= '<ul>';
foreach ($fields as $field) {

    $virtuemart_custom_id = $field->virtuemart_custom_id;
    $custom_field_name = 'SELECT `custom_title` FROM #__virtuemart_customs WHERE `virtuemart_custom_id` = '.$virtuemart_custom_id.'';
    $db->setQuery($custom_field_name);
    $custom_field_name = $db->loadResult();
    $customfield_value = $field->customfield_value;
    $xml .= '<li>'.$custom_field_name.':'.$customfield_value.'</li>';
}
$xml .= '</ul>';
$xml .= ']]></description>';

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *