1 Отредактировано sitent (12-08-2013 17:28:38)

Тема: Яндекс Маркет, выгрузка дополнительных увеличенных изображений товара.

Пожалуйста, помогите реализовать правильно в коде (у меня версия Shop Pro 4.3 дефолтная):
Модуль выгрузки в Яндекс Маркет работает корректно и хорошо, проблем по работе с маркетом особых нет,, но не хватает функционала. Картинка в маркет попадает одна только главная MainImage.  Но Маркет предусматривает также дополнительные увеличенные изображения. Пример http://clubs.ya.ru/market/replies.xml?item_no=3949.  Причем если их нет, надпись увеличить присутствует, а нажатие на +увеличить в маркете ведет на сайт и скликивается понапрасну бюджет. Кроме того увеличенные красивые  картинке в маркете позволят повысить лояльность покупателя.
С виду все просто и описано в инструкции на Маркете http://help.yandex.ru/partnermarket/?id=1111484  т.е в файле http://сайт/shop/yandex/genreyml необходимо картинки указывать подряд, первая станет главной, остальные отнесутся к увеличенным изображениям.  Формируется genreyml в файле application/modules/shop/yandex.php.  Так как дополнительные изображения у некоторых продуктов нет, у других от 1го до 10 доп изображений с именами вида ID_0.jpg ID_1.jpg и т.д. необходимо в yandex php прописать условие проверки их наличия, и если они есть то вывод соответствующего количества строк со ссылками на картинки, как в Примере или Инструкции выше.
Подобное  реализовано в файле product.tpl для вывода доп картинок на сайт.
В yandex.php условия формирования  genreyml выглядят так:
public function genreYML() {
        $ci = ShopCore::$ci;
        foreach ($this->getProducts() as $p) {
            foreach ($p->getProductVariants() as $v) {
                $unique_id += $p->getId() . '.' . $v->getId();
                $this->offers[$unique_id] = array(
                    'url' => ShopCore::$ci->config->item('base_url') . '/shop/product/' . $p->id,
                    'price' => $v->getPrice(),
                    'currencyId' => $this->currencyCode,
                    'categoryId' => $p->getCategoryId(),
                    'picture' => str_replace('//uploads', '/uploads', productImageUrl($p->getMainImage())),
                   ???? здесь нужно прописать код с условием ????
                    'name' => encode($p->getName() . ' ' . $v->getName()),
                    'description' => '',
                );
            }
        }
По сути под «picture» нужно вставить код условия проверки наличия и вывода URL картинки / картинок и получиться в genreyml  вывод такой:
<picture>http://сайт/uploads/shop/223_main.jpg</picture> - главная картинка выводиться
<picture>http://сайт/uploads/shop/223_0.jpg</picture>  доп картинка 1
<picture>http://сайт/uploads/shop/223_2.jpg</picture>
  доп картинка 3
В product.tpl  подобное условие реализовано так, но в этом условии реализован еще вывод миниатюр а по клику их увеличение в допокне, разобраться не выходит, нужна помощь!!??:
<!-- Start. Show additional images -->
                        {if sizeof($productImages = $model->getSProductImagess()) > 0}
                            {foreach $productImages as $key => $image}
                                <li>
                                    <a rel="group" href="{echo $image->getThumbUrl()}" class="photo">
                                        <figure>
                                            <span class="helper"></span>
                                            <img src="{productImageUrl($image->getImageName())}" alt="{echo ShopCore::encode($model->getName())} - {echo ++$key}"/>
                                        </figure>
                                    </a>                               
                                </li>
                            {/foreach}
                        {/if}       
   <!-- End. Show additional images -->

Использую ImageCMS Shop 4.11 premium

2

Re: Яндекс Маркет, выгрузка дополнительных увеличенных изображений товара.

В PHP не силен мало сказать, вообще не понимаю, имею только опыт программирования 15летней давности могу смотреть куски кода анализировать и методом тыка подбирать.
   
Я так подумал и набросал кусочки, оставил условие в котором не понимаю что к чему но вроде как проверяет наличие допкартинок, список-видимо позволяет если картинок несколько создавать друг за другом, и строку вывода из yandex.php с именем предполагаемого допимиджа.   

Поправьте плиз. С сайтом проще можно до дыр тестировать, а с genryml уже поздно тестировать, т.к. каждые 3 часа в него смотрит яндекс робот и если что не так может и выпнуть с маркета. Я б и раньше протестировал, но узнается все во время работы, не попал бы в Маркет и не знал бы камни подводные.  foreach условие еще мне непонятное, может вообще не нужно.

                      if sizeof($productImages = $model->getSProductImagess()) > 0
                            foreach $productImages as $key => $image
                                <li>
                                                                               
                                         'picture' => str_replace('//uploads', '/uploads', productImageUrl($p-> getImageName())),
                                         
                                </li>
                            /foreach
                        /if

Использую ImageCMS Shop 4.11 premium

3

Re: Яндекс Маркет, выгрузка дополнительных увеличенных изображений товара.

Может кто нибудь из разработчиков поможет с кодом?
Ведь это отличное и не очень сложное дополнение, которое можно добавить к движку версии Shop в следующих версиях.

Использую ImageCMS Shop 4.11 premium

4

Re: Яндекс Маркет, выгрузка дополнительных увеличенных изображений товара.

проблема актуальна, помогите

Использую ImageCMS Shop 4.11 premium

5

Re: Яндекс Маркет, выгрузка дополнительных увеличенных изображений товара.

Проблема актуальна.
Удивительные разработчики похоже не проверяют свои творения и нам приходится разгребать ошибки.

Описано все верно в первом посте.
В последней версии файла yandex.php есть вывод доп. картинок, но они выводятся в КОНЦЕ, что не позволяет формат файла yml, соотв. модерация файла не проходит и вываливается ошибка
Ошибка парсинга XML: Error parsing XML feed: Element 'picture' is not valid for content model.

Элементы <picture> должны быть рядом и идти после <categoryId>, но никак не в конце.

Thumbs up Thumbs down

6 Отредактировано supleader (10-04-2014 14:58:40)

Re: Яндекс Маркет, выгрузка дополнительных увеличенных изображений товара.

Кстати, да. У этого стандарта важен порядок элементов. Его можно узнать из этого файла - http://partner.market.yandex.ru/pages/help/shops.dtd

Профессиональное создание сайтов любой сложности, аудит, продвижение, а также поддержка вашего интернет ресурса - web2life.ru

TIMEWEB > Всегда больше, чем просто хостинг для ImageCMS!