Главная страница / Сторонние модули / Импорт новостей в формат YML средствами движка DLE
сентябрь 14 2022

Импорт новостей в формат 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

Комментарии

  1. TCSE (Клиенты)

    14 сентября 2022 12:05 57 комментариев

    Известный баги на сегодня

    Для YML файла генерация первоначального меню категорий товаров происходит через базовое DLE меню в строке 

    {catmenu id="21" subcat="no" template="categories" cache="no"}

    где id="21" это номер вашей категории с товарами.
    И если у вас большая система подкатегорий, то в самом товарном фиде в секции  /templates/xml2yml/custom.tpl

    <categoryId>21</categoryId>

    нужно указывать номер категории к которой относится новость (товар). А сделать это автоматически не получиться, так как в DLE нет тега {category-news-id} который бы выводил номер категории у публикации.

    По этой причине приходится собирать костыль в виде

    [catlist=90]<categoryId>90</categoryId>[/catlist][catlist=94]<categoryId>94</categoryId>[/catli
    st][catlist=91]<categoryId>91</categoryId>[/catlist][catlist=95]<categoryId>95</categoryId>[/ca
    tlist][catlist=97]<categoryId>97</categoryId>[/catlist][catlist=98]<categoryId>98</categoryId>[
    /catlist][catlist=99]<categoryId>99</categoryId>[/catlist][catlist=100]<categoryId>100</categoryId
    >[/catlist][catlist=101]<categoryId>101</categoryId>[/catlist][catlist=92]<categoryId>92</categ
    oryId>[/catlist][catlist=107]<categoryId>107</categoryId>[/catlist][catlist=108]<categoryId>108<
    ;/categoryId>[/catlist][catlist=109]<categoryId>109</categoryId>[/catlist][catlist=110]<categoryId>
    ;110</categoryId>[/catlist][catlist=111]<categoryId>111</categoryId>[/catlist][catlist=112]<catego
    ryId>112</categoryId>[/catlist][catlist=93]<categoryId>93</categoryId>[/catlist][catlist=96]<ca
    tegoryId>96</categoryId>[/catlist]

    Описывая правильные номера категорий для товаров.

    Альтернатива - прописывать в файл шаблона /templates/xml2yml/main.tplвсю структуру категорий товара руками, а не генерировать автоматически средствами движка.

  2. NlCKRUS (Клиенты)

    7 апреля 2023 12:32 44 комментария

    При попытке загрузить такой feed появляется ошибка:

    Некорректное значение Content-Type. Разрешенные значения Content-Type: application/xml, text/xml, application/octet-stream.

Информация

Комментирование публикаций доступно только пользователям имеющим действующую лицензию на скрипт. Если вы уже приобретали скрипт, то вам необходимо зайти на сайт под своим клиентским аккаунтом.

Календарь

«    Апрель 2024    »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930 

Опрос на сайте

Совершаете ли вы покупки в интернет?