RSS и Minishop

Здравствуйте!

Понадобилось экспортировать сайт с minishop2 в ВК через RSS. При таком экспорте текста в группе публикуется совсем немного, поэтому вся надежда на картинки. Вот здесь, замечательная статья про экспорт Tickets в RSS. На практике всё хорошо работает, ВК съедает и текст и картинки.

Теперь понадобилось экспортировать и ресурсы Minishop2. Можно было бы вполне обойтись pdoResources и чанком вида:
<item>
<title>[[+pagetitle:cdata]]</title>
<link>[[++site_url]][[~[[+id]]]]</link>
<description>
[[+content:striptags=`<p>`:ellipsis=`600`:cdata]]
</description>
<enclosure url="[[++site_url]][[+tv.image]]" type="image/jpeg" />
<pubDate>[[+publishedon:ShowDateEn]] +0600</pubDate>
<guid isPermaLink="false">[[++site_url]][[~[[+id]]]]</guid>
</item>
Но вот беда, не очень понятно как переместить первую картинку галереи минишопа в TV, и нужно ли это вообще делать. Может уже есть штатные средства?

Так же пробовал использовать &element=`msProducts`, что бы с его помощью подтянуть картинки через например [[+thumb]], но наладить дело не удалось. К тому же, необходима полноразмерная картинка или большое превью — тогда в ВК всё смотрится достойно.

Ещё теоретически есть вариант использовать вот такое решение.
Пока реализовать не удалось, не уверен что одно с другим связывается.

Буду благодарен за совет или ориентир в правильном направлении!
Особенно если решение будет универсальным, ввиду того, что встречаются ресурсы без минишопа, то есть обычные обычные, но там используется галерея MsGallery2.
Александр Н
14 апреля 2017, 14:31
modx.pro
1
1 408
0

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

Алексей Федоров
15 апреля 2017, 15:55
0
Самое простое решение — вызвать msProducts в xml-шаблоне со своим чанком. Просто взять из стандартного чанка:
{if $thumb?}
            <img src="{$thumb}" alt="{$pagetitle}" title="{$pagetitle}"/>
        {else}
            <img src="{'assets_url' | option}components/minishop2/img/web/ms2_small.png"
                 srcset="{'assets_url' | option}components/minishop2/img/web/ms2_small@2x.png 2x"
                 alt="{$pagetitle}" title="{$pagetitle}"/>
        {/if}
И кроме того есть возможность выбрать нужный вариант картинок. ВК, насколько помню, любит картинки размером 500+ px.
    Александр Н
    15 апреля 2017, 18:30
    0
    Алексей, благодарю за отклик! Но я не совсем понял как реализовать ваш совет (хотя пытался).

    В xml-шаблоне у меня следующее

    <?xml version="1.0" encoding="UTF-8"?>
    <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    	<channel>
    		<title>[[!+title]] / [[++site_name]]</title>
    		<link>[[~[[*id]]?scheme=`full`]][[+params]]</link>
    		<description>[[*description:cdata]]</description>
    		<language>ru</language>
    		<copyright></copyright>
    		<ttl>120</ttl>
            <atom:link href="[[~[[*id]]?scheme=`full`]][[+params]]" rel="self" type="application/rss+xml" />
    
            [[!pdoResources?
                &element=`msProducts` 
                &tpl=`rssItem`
                &limit=`10`
                &parents=`3`
                &depth=`3`
                &sortby=`publishedon`
                &sortdir=`DESC`
                &showHidden=`1`
                &hideContainers=`1`
                &includeContent=`1`
                &includeThumbs=`640x480`
            ]]
    	</channel>
    </rss>
    В чанке:

    <item>
    <title>[[+pagetitle:cdata]]</title>
    <link>[[++site_url]][[~[[+id]]]]</link>
    <description>
    [[+content:striptags=`<p>`:ellipsis=`600`:cdata]]
    </description>
    <enclosure url="[[+640x480]]" type="image/jpeg" />
    <pubDate>[[+publishedon:ShowDateEn]] +0600</pubDate>
    <guid isPermaLink="false">[[++site_url]][[~[[+id]]]]</guid>
    </item>
    То есть, msProducts пытаюсь вызвать. Спасибо!
      Алексей Федоров
      15 апреля 2017, 22:44
      0
      Имелось в виду вызвать именно msProducts самостоятельно — без pdoResources. Потому что:
      msProducts
      Сниппет для вывода товаров.
      и
      Сниппет msProducts, как и все сниппеты miniShop2, использует pdoTools для работы. Поэтому все основные его параметры совпадают с pdoResources, но есть и особенности.
      В первую очередь:
      Сниппет msProducts сразу присоединяет несколько связанных таблиц товара, позволяя вам получать данные из них без лишних запросов.
      К тому же Василий написал:
      Конечно, вы можете пользоваться pdoResources для вывода каталога, но msProducts делает это гораздо лучше.
      Потому что.
    Александр Н
    17 апреля 2017, 01:03
    0
    В конечном итоге работает такая конструкция

    <?xml version="1.0" encoding="UTF-8"?>
    <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    	<channel>
    		<title>[[!+title]] / [[++site_name]]</title>
    		<link>[[++site_url]]rss.xml</link>
    		<description>[[*description]]</description>
    		<language>ru</language>
    		<copyright></copyright>
    		<ttl>120</ttl>
            <atom:link href="[[++site_url]]rss.xml" rel="self" type="application/rss+xml" />
            [[!msProducts?
                &includeContent=`1`
                &hideContainers=`1`
            	&tpl=`rssItem`
            	&limit=`10`
            	&parents=`3`
            	&depth=`3`
            	&sortby=`publishedon`
            	&sortdir=`DESC`
            	&includeThumbs=`640x480`
            ]]
    	</channel>
    </rss>
    <item>
    <title>[[+pagetitle]]</title>
    <link>[[++site_url]][[~[[+id]]]]</link>
    <description>
    [[+content:striptags=`<p>`:ellipsis=`600`:cdata]]
    </description>
    <enclosure url="https://site.ru[[+640x480]]" type="image/jpeg" />
    <pubDate>[[+publishedon:date=`%a, %d %b %Y %H:%M:%S %z`]]</pubDate>
    <guid>[[++site_url]][[~[[+id]]]]</guid>
    </item>
    Вместо !msProducts? также работает !pdoPage?&element=`msProducts`, но первый вариант действительно лучше.

    При всём при этом, FireFox никак не хочет видеть разметку, а вот Opera видит нормально (хотя и не преобразует). Но зато ВК видит нормально, что в общем то целью и является.
      Александр Н
      17 апреля 2017, 01:29
      0
      upd
      FireFox не отображал из-за нестандартных кавычек. То есть, в заголовке когда ставлю обычные кавычки («заголовок») — все отлично отображается
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5