Выбрав в 2006 году DLE в качестве платформы для разработки сайтов все еще не пожалел. В том числе из-за шикарного шаблонизатора, благодаря которому с минимальными знаниями основ программирования любой начинающий вебмастер может адаптировать под себя внешний вид своего проекта. В данной статье будут описаны принципы создания шаблона в формате XML для дальнейшей самостоятельной модификации. Стоит обратить внимание, что у каждого сайта свой набор полей, их можно и нужно прописывать в шаблоны самостоятельно. Я лишь показываю, что штатными средствами движка 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 отдаем Яндексу.
Готовые шаблоны импорта в формате YML и в формате XML для Avito можно скачать в конце этой статьи.
Что такое YML (Yandex Market Language) формат и зачем он нужен сайту.
О формате YML вы можете прочитать
тут. Стандарт YML разработан Яндексом и основан на стандарте XML. Формат YML предоставляет больше возможностей и преимуществ, чем форматы XLS, CSV.
Типовой пример в формате .yml
Нам данный формат интересен для создания Яндекс Турбо страниц интернет-магазинов. Заходим в свой кабинет на
Яндекс Вебмастере и ищем раздел «Турбо-страницы для интернет-магазинов»:
Общая инструкция по подключению от Яндекса
находится тут.
Главное, без чего не будет произведен импорт -
это цена товара. Если ваш сайт на 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. Сам фид можно протестировать на соответствие перейдя
по этой ссылке.
Стоит обратить внимание, что у каждого сайта свой набор полей, их можно и нужно прописывать в шаблоны самостоятельно. Я лишь показал, что штатными средствами движка DLE можно генерировать XML файлы которые будут корректно обработаны при импорте на внешние сайты.
Готовые шаблоны импорта в виде плагина:
Файл шаблона xml2tpl/templates/xml2yml/main.tpl
Строка:
{catmenu id="90" subcat="yes" template="categories" cache="no"}
Формирует список категорий товаров на основе стандартного меню DLE сайта. Где значение
id="90" означает, что у вас первая категория магазина в базе сайта имеет номер
90, а параметр
subcat="yes" говорит, что будет генерирована в виде пунктов меню все подпункты.
Список своих категории смотрите в админке
/admin.php?mod=categories :
Таким образом в шаблон 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" аналогично тем, что были указаны для генерации меню категории выше.
Файл шаблона xml2tpl/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 версий только сильнее огораживают интернет в рамках техно-компаний без возможности выхода наружу.
Вот наглядный пример из товаров сгенерированных на основе данного шаблона. Когда в результате поиска Яндекса открывается турбо-версия магазина, Яндекс Браузер автоматически маскирует имя домена:
При этом, если нажать на строку ввода адреса, то мы видим реальный адрес домена:
Ну и конечно, далеко идущая идея с тем, что ссылки на оригинальный сайт в турбо-страницах есть только в одном единственном месте. И то, эта строка скрыта под скромной надписью "Официальный сайт".
На всякий случай напомню, что в Яндекс турбо страницах для константных сайтов, ссылка на оригинал материала была в каждой отдельной заметке.
Для 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>[/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]
Описывая правильные номера категорий для товаров.
Альтернатива - прописывать в файл шаблона
templates/xml2yml/main.tpl всю структуру категорий товара руками, а не генерировать автоматически средствами движка.
•
Автор: TCSE
•
Источник
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.