К содержанию

Фид товаров для Facebook

Рекламщики дали задачу собрать им фид товаров для импорта в facebook*.

Распишу этапы работ, которые делал, может кому нибудь пригодится. А заодно может кто-то предложит решение лучше и укажет на мои ошибки, которые возможно есть))

1) Создаем ресурс. Я назвал его facebook*.
Шаблон: пустой шаблон (я код указал сразу в Содержимом, поэтому пустой шаблон, можно все запихнуть в отдельный Шаблон и указать его)
Псевдоним: facebook*
Тип содержимого: XML

Содержимое
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0">
<title>{1 | resource : 'longtitle' | title}</title>
<link rel="self" href="{$_modx->config.site_url}"/>
{'!msProducts' | snippet : [
    'parents' => '3',
    'limit' => '0',
    'includeThumbs' => 'medium',
    'tpl' => 'tpl.facebook*Item',
]}            
</feed>

2) Создаем чанк tpl.facebook*Item.

tpl.facebook*Item
<entry>
    <g:id>{$id}</g:id>
    <g:title>{$pagetitle | title}</g:title>
    <g:description>{$description | title}</g:description>
    <g:link>{$id | url : ['scheme' => 'full']}</g:link>
    <g:image_link>{$_modx->config.site_url}{$medium}</g:image_link>
    {'!msGallery' | snippet : [
        'product' => $id,
        'tpl' => 'tpl.facebook*Gallery',
    ]}
    <g:brand>{$_pls['vendor.name']}</g:brand>
    <fb_product_category>{$parent | resource : 'pagetitle'}</fb_product_category>
    <g:condition>new</g:condition>
    <g:availability>available for order</g:availability>
    {if $old_price > 0}
        <g:price>{$old_price | replace : ' ' : ''} RUB</g:price>
        <g:sale_price>{$price | replace : ' ' : ''} RUB</g:sale_price>
    {else}    
        <g:price>{$price | replace : ' ' : ''} RUB</g:price>
    {/if}
</entry>

3) Создаем чанк tpl.facebook*Gallery в котором выводим все изображения товара, кроме первого. Первое изображение выводится в чанке выше. Почему то параметр offset не работает в msGallery, поэтому отсеял первый элемент в цикле foreach.

tpl.facebook*Gallery
{if $files?}
    {foreach $files as $file}
        {if !$file@first}
            <additional_image_link>{$_modx->config.site_url}{$file['medium']}</additional_image_link>
        {/if}
    {/foreach}
{/if}

4) Еще у меня используется сниппет title и вызывается в виде модификатора. Нашел на просторах интернета. Сниппет чистит строку от ненужных символов, а также заменяет кавычки на кавычки-елочки, которые не сломают вывод.

title
<?php
$str = preg_replace ("#([^=])\"([^\"]+)\"#", "\\1«\\2»", $input);
$str = str_replace (array("\r","\n"), "", $str);
$str = str_replace ('&', '', $str);
$str = strip_tags ($str);
return $str;

После того как все сделали по ссылке site_name.ru/facebook*.xml будет доступен наш фид.

Документация по параметрам есть тут https://www.facebook*.com/business/help
Андрей Шевяков
Андрей Шевяков
05 июля 2021, 15:21
modx.pro
2 491
Поблагодарить автора Отправить деньги
Реклама

Комментарии: 7

Евгений Шеронов
Евгений Шеронов Проверенный
05 июля 2021, 15:51
Решение хорошее.

Но раз это готовое бесплатное решение, то позволите мне немного рекламы?)

Для тех кто хочет визуально управлять элементами с описаниями полей, выгружать большие объемы точно валидного XML и не трогать код — то выгрузка под похожий формат Google Rss 2.0 (это Гугл покупки, и что-то для Фейсбука) есть в компоненте YandexMarket2 (пост о добавлении такого типа выгрузок писать не стал, инфа была только в changelog)
    Андрей Шевяков
    Андрей Шевяков Проверенный
    05 июля 2021, 15:57
    Но раз это готовое бесплатное решение, то позволите мне немного рекламы?
    Возьму на заметку. Готового решения не смог нагуглить, поэтому изобрел свой велосипед.
    Алексей Соин
    Алексей Соин Проверенный
    06 июля 2021, 09:33
    Возможно немного не по теме, но можете подсказать, что при выводе заголовка делает | title?
      Андрей Шевяков
      Андрей Шевяков Проверенный
      06 июля 2021, 11:01
      Я в 4м пункте написал.
      Этот сниппет, выводится в виде модификатора, чистит строку от ненужных символов, а также заменяет кавычки на кавычки-елочки, которые не сломают вывод.
      Роман
      Роман Старожил
      07 июля 2021, 09:20
      Подскажите, изображения с watermark не принимаются Фейсбуком или проходят проверку?
        Андрей Шевяков
        Андрей Шевяков Проверенный
        07 июля 2021, 09:56
        Добрый день.
        Вот что написано в справочнике Facebook
        https://www.facebook.com/business/help/686259348512056?id=725943027795860

        …
        …
        Рекомендации для изображений товаров

        Используйте изображения товаров, которые:

        • имеют белый фон;
        • наглядно демонстрируют товар целиком;
        • демонстрируют товар с разных сторон или ракурсов (если изображений несколько);
        • показывают товар в реальных жизненных ситуациях.

        Не используйте изображения товаров, которые содержат:

        • текст (например, призывы к действию или промокоды);
        • информацию, привязанную ко времени (например, краткосрочное снижение цены);
        • водяные знаки.
        …
        …

        PS. На сайте для которого делал Фид, все изображения подходят под требования.
        Точно не подскажу, пройдут ли проверку изображения с watermark.
          Роман
          Роман Старожил
          07 июля 2021, 10:09
          Благодарю.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        7