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

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


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

Если кратко - главная фича шаблонизатора DLE в том, что его синтаксис основан на правилах русского языка, а не как принято в php и всех прочих языках программирования на основе построения английских слов. И благодаря этой особенности составлять правила вывода блоков внутри шаблона значительно проще. Но это тема для отдельной статьи, возможно когда-нибудь потом она будет написана.

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

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

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

<?xml version="1.0" encoding="{$config['charset']}"?>
<rss xmlns:yandex="http://news.yandex.ru" 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">


И именно в этом проблема, почему нельзя получить правильный 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



Скачать файл: xml2tpl.zip [40,05 Kb] (cкачиваний: 1)

МЫ принимаем заказы на верстку XML шаблонов для DLE сайтов с вашими наборами дополнительных полей под Avito, avto.ru, drom.ru и Яндекс Маркет.


Пояснения по шаблонам для самых маленьких


Формат YML


Файл шаблона https://github.com/tcse/DLE-xml2tpl/blob/main/templates/xml2yml/main.tpl

Строка

{catmenu id="90" subcat="yes" template="categories" cache="no"}


Формирует список категорий товаров на основе стандартного меню DLE сайта.
Где значение id="90" означает, что у вас первая категория магазина в базе сайта имеет номер 90

Список своих категории смотрите в админке /admin.php?mod=categories



параметр subcat="yes" говорт, что будет генерирована в виде пунктов меню все подпункты.
Таким образом в шаблон YML у нас формируется следующая структура:

<categories>
    <category id="90">Запчасти для тягачей и полуприцепов</category>
    <category id="94">Запчасти Kraker </category>
    <category id="91">Запчасти для полуприцепов WIELTON</category>
    <category id="95">Запчасти Cargo Floor</category>
    <category id="97">Компоненты гидравлических систем</category>
    <category id="98">Профили пола</category>
    <category id="99">Пластиковые компоненты и опоры</category>
    <category id="100">Электрические компоненты</category>
    <category id="101">Аксессуары и крепежные материалы</category>
    <category id="92">Запчасти Binotto</category>
    <category id="107">Гидравлические цилиндры</category>
    <category id="108">КОМ / Вал КОМ</category>
    <category id="109">Гидравлические баки</category>
    <category id="110">Гидравлические насосы</category>
    <category id="111">Гидростанции</category>
    <category id="112">Прочее</category>
    <category id="93">Запчасти MAN</category>
    <category id="96">Аксессуары</category>
</categories>


И далее, при формирования товарного предложения, которое задается все в том же шаблоне путем подключения custom шаблона

<offers>
	{custom category="90" template="custom" available="global"  limit="500" order="reads" sort="desc" cache="no"}
</offers>


Где значение category="90" аналогично тем, что были указаны для генерации меню категории выше.


Файл шаблона https://github.com/tcse/DLE-xml2tpl/blob/main/templates/xml2yml/custom.tpl

В нем описывается каждое отдельное товарное предложение.

Раз родительская категория товаров у нас имеет номер 90, то для каждого товара мы указываем именно ее.

<categoryId>90</categoryId>


К сожалению на данный момент (DLE 15.2) в скрипте отсутствует такое полезный тег как {category-news-id} который бы выводил номер категории у публикации.

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

[catlist=90]<categoryId>90</categoryId>[/catlist]
[catlist=94]<categoryId>94</categoryId>[/catlist]
[catlist=91]<categoryId>91</categoryId>[/catlist]
[catlist=95]<categoryId>95</categoryId>[/catlist]
[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</categoryId>[/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]<categoryId>112</categoryId>[/catlist]
[catlist=93]<categoryId>93</categoryId>[/catlist]
[catlist=96]<categoryId>96</categoryId>[/catlist]

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


Отдельно хочу обратить внимание:


Передавая данные о своем контенте в Яндекс вы льете воду на чужую мельницу.
Пока ваш проект на этапе роста, вам важен любой трафик. НО если вы уже большие и авторитетные, то любые варианты турбо страниц или amp версий только сильнее огораживают интернет в рамках технокомпаний без возможности выхода наружу.

Вот наглядный пример из товаров сгенерированных на основе данного шаблона:
Когда в результате поиска Яндекса открывается турбо-версия магазина, Яндекс Браузер автоматически маскирует имя домена
DLE-xml2tpl - Импорт новостей в формат YML средствами движка DLE


При этом, если нажать на строку ввода адреса, то мы видим реальный адрес домена


Ну и конечно, далеко идущая идея с тем, что ссылки на оригинальный сайт в турбо-страницах есть только в одном единственном месте. И то, эта строка скрыта под скромной надписью "Официальный сайт".



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




И что дальше?


И вот тут мы переходим к самому интересному :)
У вас есть новости-товары автоматически публикуемые на Яндекс Маркет и Авито. Каталог мы не особо стремитесь пополнять (он и так не маленький, условно более 100 позиций) менять цены руками каждый раз это вовсе не интересно и муторно.

Самое время использовать нашу разработку DLE-importNews


Скачиваем с сайта нужные новости, открываем их в экселе и редактируем параметры цены и доступности для YML или XML файлов.

Машинный Парк - журнал в формате блога

«Машинный парк» — место, где живут знания о коммерческой технике, «М-Парк» — отраслевой портал в

Частное мнение о Яндекс.Турбо

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

Верстка шаблона и внедрение нового дизайна для журнала ГрузАвтоИНФО

Мы рады представить свою новую работу - внедрение дизайна, предоставленного заказчиком, в готовый

AMP4DLE - плагин AMP страниц для DLE

Модуль AMP страниц для DataLife Engine В качестве исходника - бесплатный модуль DomiTori

Посещаемость с Яндекс десктопа упала: что произошло в 2019 и как это повлияет в 2020

Главная головная боль всех SEO оптимизаторов – найти причину, если трафик просел. Иногда это можно

Счёт может быть красивым и в HTML, а не в PDF

В статье “Что должно быть в счёте на оплату, чего быть не должно и что дико бесит” мы разбирали

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

Написать комментарий

  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги