• Импорт новостей в формат YML средствами движка DLE

В данной статье будут описаны принципы создания шаблона в формате XML для дальнейшей самостоятельной модификации. Стоит обратить внимание, что у каждого сайта свой набор полей, их можно и нужно прописывать в шаблоны самостоятельно. Я лишь показываю, что штатными средствами движка DLE можно генерировать XML файлы которые будут корректно обработаны при импорте на внешние сайты.

Выбрав в 2006 году DLE в качестве платформы для разработки сайтов все еще не пожалел. В том числе из-за шикарного шаблонизатора, благодаря которому с минимальными знаниями основ программирования любой начинающий вебмастер может адаптировать под себя внешний вид своего проекта.

В данной статье будут описаны принципы создания шаблона в формате XML для дальнейшей самостоятельной модификации.

Стандартный RSS поток DLE формируется на основе шаблона /tempates/rss.tpl и содержит в себе отдельные секции вывода информации в зависимости от настроек шаблона:

— Обычный RSS поток
— В формате Яндекс-Турбо
— В формате Яндекс Новости

Все три этих варианта объеденены единой оберткой описанной в файле /engine/rss.php

<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:turbo="http://turbo.yandex.ru" version="2.0">
<channel>
....
</channel>
</rss>

И именно в этом проблема, почему нельзя получить правильный YML формат для товарного фида Яндекс Маркета. Тоже самое для автоматического импорта новостей для avito.

Но все как оказалось решается штатными средствами движка — мы просто создаем новый шаблон для определенной категории сайта и именно его адрес в качестве ссылки на YML отдаем Яндексу.

Готовые шаблоны доступны в репозитории https://github.com/tcse/DLE-xml2tpl
Шаблон импорта в формате YML https://github.com/tcse/DLE-xml2tpl/tree/main/tempates/xml2yml
Шаблон импорта в формате XML для Avito https://github.com/tcse/DLE-xml2tpl/tree/main/templates/xml2avitoru

Что такое YML формат и зачем он нужен сайту

О формате YML вы можете прочитать по адресу https://yandex.ru/support/partnermarket/export/yml.html#yml-format Стандарт YML (Yandex Market Language )разработан Яндексом и основан на стандарте XML.Формат YML предоставляет больше возможностей и преимуществ, чем форматы XLS, CSV. Типовой пример в формате .yml https://yandex.ru/support/partnermarket/export/yml.html#yml_example

Нам данный формат интересен для создания Яндекс Турбо страниц интернет-магазинов. Заходим в свой кабинет на Яндекс Вебмастере https://webmaster.yandex.ru/ и ищем раздел «Турбо-страницы для интернет-магазинов»

Общая инструкция по подключению от яндекса тут https://yandex.ru/dev/turbo-shop/doc/quick-start/markets.html

Главное, без чего не будет произведен импорт — это цена товара. Если ваш сайт на DLE используется в том числе для создания витрину товаров, то отдельное дополнительное поле с ценой у вас скорее всего уже есть. После подключения турбо-страниц для магазинов у вас получиться что-то типа

И так, примеры шаблонов скачены и установлены на сайт. Остается добавить (при необходимости) нужные дополнительные поля. Для этого переходим Настройки скрипта -> Дополнительные поля новостей. Добавить в разделе дополнительных полей новостей следующие поля:

Либо открыть по ftp файл /engine/data/xfields.txt и дописать в самый конец

xml2tpl_io-yml|Включить вывод в формат YML||yesorno||0|0|0|0|||0|0|||||0|Если выключено - Данная новость не попадает в товарный фид||||||||
xml2tpl_io-avito|Включить вывод в формат Avito.ru||yesorno||0|0|0|0|||0|0|||||0|Если выключено - Данная новость не попадает в товарный фид||||||||
xml2tpl_price|Цена для xml2tpl||text||1|0|0|1|||0|0||||||Используется для импорта в форматы YML и Avito||||||||
xml2tpl_currencyid|Валюта, в которой указана цена товара для xml2tpl||select|RUR__NEWL__USD__NEWL__EUR__NEWL__BYN__NEWL__KZT__NEWL__UAH|0|0|0|0|||0|0||||||Цена и валюта должны соответствовать друг другу. Например, вместе с USD надо указывать цену в долларах, а не в рублях.||||||||
xml2tpl_vendor|Название производителя  для xml2tpl||text||1|0|0|1|||0|0||||||||||||||
xml2tpl_vendorcode|Код товара, который ему присвоил производитель  для xml2tpl||text||1|0|0|1|||0|0||||||||||||||

После чего при редактировании новостей появятся новые поля для корректного заполнения товарного фида.

Следующим шагом вам потребуется создать новую категорию сайта и в ее настройках выбрать в секции Установить другой шаблон для категории: шаблон с именем xml2yml для товарного фида YML

или шаблон с именем xml2avitoru для импорта объявлений на Avito

Так же рекомендуется установить в настройках категории запрет на поиск по сайту и отключить генерацию яндекс турбо страниц.

Далее получаем ссылки на категории сайтов внутри которых у нас формируются новости. Для демонстрации работы я сделал 2 таких категории https://tcse-cms.com/archive/xml2yml/ для формата YML.

и https://tcse-cms.com/archive/xml2avitoru/ для Avito

Переходим в Яндекс Вебмастер и добавляем ссылку на источник

Переходим в Яндекс Вебмастер и добавляем ссылку на источник

тестируем правильность фида

там же можно посмотреть предварительную версию

Примерно так же все происходит и с форматом импорта на Avito.ru. Сам фид можно протестировать на соответствие по ссылке https://autoload.avito.ru/format/xmlcheck/

Стоит обратить внимание, что у каждого сайта свой набор полей, их можно и нужно прописывать в шаблоны самостоятельно.
Я лишь показал, что штатными средствами движка DLE можно генерировать XML файлы которые будут корректно обработаны при импорте на внешние сайты.

Скачать исходники шаблонов можно в репозитории https://github.com/tcse/DLE-xml2tpl

Версия шаблонов в виде плагина доступна по ссылке https://github.com/tcse/DLE-xml2tpl/releases/download/1.0/xml2tpl.zip