1

Тема: Виджет популярных и акционных товаров.

В общем... Ситуация такая. На главной магазина сделал две вкладки (их можно переключать, все работает на чистом css): популярные товары и акционные товары (т.е. те у которых стоит пометка Акция в админке). Создавал виджеты через админку виджетов, выбрал тип Модуль, "Популярные/Новые/Акционные товары". Каждый виджет называется по-своему естественно.

Теперь вопрос: почему в них выводится одинаковая информация, хотя в настройках первого (популярные) стоят все галочки кроме Акция, а во втором виджете все галки сняты кроме Акция, но по-прежнему оба виджета выводят одинаковую информацию. Глянул в tpl каждого виджета: php-запросы одинаковые, естественно что инфа одна выводится.
Вопрос: почему не действуют настройки в админке на виджеты? Как модифицировать запросы в tpl каждого виджета, что в одном выводились только популярные товары (т.е. с наибольшим количеством просмотров), а во втором железобетонно только Акционные товары?

Вот первая строчка из первого виджета:

{foreach $products as $hotProduct}

Т.е. в обеих виджетах одинаковые запросы! На кой так движок делает и почему он игнорит настройки виджетов?

Thumbs up Thumbs down

2 Отредактировано AJIEKCAHDP (28-05-2016 17:12:51)

Re: Виджет популярных и акционных товаров.

Потому что в переменной $products - содержатся товары только популярные или только новые или только акционные, другово не дано, так как запрос из базы всего один, но разные критерии, надо код виджета переписывать под ваши нужды. Чтобы в одном виджете, выводились 2 или 3 группы вывода товара.

Сделаю обновления вашего магазина до актуальной версии системы со вем переносом ваших товаров, просьба писать в приват.
https://novabench.com/image/742206.png

3

Re: Виджет популярных и акционных товаров.

AJIEKCAHDP пишет:

Потому что в переменной $products - содержатся товары только популярные или только новые или только акционные, другово не дано, так как запрос из базы всего один, но разные критерии, надо код виджета переписывать под ваши нужды. Чтобы в одном виджете, выводились 2 или 3 группы вывода товара.

Спасибо. Я догадывался об этом. Только не знал механизма выдачи товаров из базы. Может быть есть доки где-то чтобы почитать именно о структуре запросов в базу по товарам и аргументы какие можно применять? Может сам почитаю, покумекаю, разберусь, с sql мало сталкивался, больше все по верстке всегда работал.

Thumbs up Thumbs down

4

Re: Виджет популярных и акционных товаров.

Вы создали тему в разделе "Сторонние модули, виджеты, расширения ImageCMS Corporate"
Речь идет о каком-то стороннем модуле магазина для версии  ImageCMS Corporate?
Или Вы ошиблись разделом и говорите про официальный виджет, который идет с коробкой ImageCMS Shop - http://take.ms/xpjTy

ImageCMS Lead Front End Developer

Thumbs up +1 Thumbs down

5

Re: Виджет популярных и акционных товаров.

Kepler-22b пишет:

Вы создали тему в разделе "Сторонние модули, виджеты, расширения ImageCMS Corporate"
Речь идет о каком-то стороннем модуле магазина для версии  ImageCMS Corporate?
Или Вы ошиблись разделом и говорите про официальный виджет, который идет с коробкой ImageCMS Shop - http://take.ms/xpjTy

Ошибся разделом. Уже попросил модераторов перенести тему в соответствующий раздел. Речь идет именно про встроенный уже виджет в Shop который реализуется именно через модуль на Вашей картинке.

Может быть как-то можно выбирать уже из сформированного $products по лейблам, т.е. по promoLabel (это я уже нахватался вершком из вики по imagecms), чтобы в нужном мне табе показать нужные продукты?

Thumbs up Thumbs down

6

Re: Виджет популярных и акционных товаров.

Если все так как Вы описали, все должно работать по настройках. Без каких либо изменения в запросов к БД

Если вы:
1 - создали в админке 2 разных виджета - http://take.ms/1NiP8
2 - указали им разные настройки
3 - вывели их под разными названиями: {widget('widget_1')} и {widget('widget_2')} - http://take.ms/SRUVX
они должны работать корректно, то есть каждый со своими настройками.
Именно так на одной странице выводятся виджеты с разными настройками на демке - http://demoshop.imagecms.net
Для верхнего виджета указанно "Хиты и Новинки", для второго "Акции и товары со скидкой"
Именно так разделяются на главной разные виджеты на других шаблонах.
Практически такая ситуация использовалась уже не один десяток раз.

Тут или я не правильно понял суть проблемы или Вы что-то не так делаете.

ImageCMS Lead Front End Developer

Thumbs up +1 Thumbs down

Re: Виджет популярных и акционных товаров.

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

Thumbs up Thumbs down

8 Отредактировано Andrei_Ts (29-05-2016 22:19:35)

Re: Виджет популярных и акционных товаров.

Kepler-22b пишет:

Если все так как Вы описали, все должно работать по настройках. Без каких либо изменения в запросов к БД

Если вы:
1 - создали в админке 2 разных виджета - http://take.ms/1NiP8 через использование при создании этого модуля - http://SSMaker.ru/fdc8a52c/
2 - указали им разные настройки
3 - вывели их под разными названиями: {widget('widget_1')} и {widget('widget_2')} - http://take.ms/SRUVX
они должны работать корректно, то есть каждый со своими настройками.
Именно так на одной странице выводятся виджеты с разными настройками на демке - http://demoshop.imagecms.net
Для верхнего виджета указанно "Хиты и Новинки", для второго "Акции и товары со скидкой"
Именно так разделяются на главной разные виджеты на других шаблонах.
Практически такая ситуация использовалась уже не один десяток раз.

Тут или я не правильно понял суть проблемы или Вы что-то не так делаете.

Именно так я и делал. Используется шаблон multishop. Никуда в php движок самого магазина никогда не лазил за ненадобностью.

1) Создал в админке два разных виджета - http://SSMaker.ru/1eab1832/
2) Настройки popular - http://SSMaker.ru/26978e8c/ и настройки акционных - http://SSMaker.ru/92fb8fa0/
3) Выводятся виджеты так - http://SSMaker.ru/a616c8e7/
4) Каждый виджет выводится как отдельный слой (нужно чтобы табы работали) и имеет свой id в верстке .tpl
5) Сделал 6 штук товаров с пометкой ХИТ и 6 с пометкой АКЦИЯ
6) Результат (даже после очистки кэша) - выводится в двух виджетах одно и тоже

Вот код виджета popular (большой, но так в верстке, ибо мультишоп затачивал под свой дизайн):

{if count($products) > 0}    
<section class="container">
<!-- Popular Tab START -->
        <div id="widget42__content">
                {foreach $products as $hotProduct}
                <div class="col-xs-6 col-sm-6 col-md-4 col-lg-4 mrg42 widget42 {if $hotProduct->firstvariant->getStock()==0} not_avail{/if}" style="margin-bottom: 8px;">
                        <article class="product-cut" data-product-scope="">
                    <!-- product info block -->
                    <div class="widget42__product-description">

                        <!-- displaying product name -->
                        <div>
                        <a class="widget42__products-link" href="{shop_url('product/'.$hotProduct->getUrl())}">
                            {echo ShopCore::encode($hotProduct->getName())}
                        </a>
                        </div>

                        <!-- displaying buy button according to its availability in stock -->

                        <!-- displaying products small mod image -->
                        <div class="product-photo">
                            <a class="product-photo__item-widget product-photo__item-widget--md" href="{shop_url('product/'.$hotProduct->getUrl())}" title="Перейти к этому товару">
                                    <span class="helper"></span>
                                    <img class="product-photo__img" src="{echo $hotProduct->firstVariant->getMediumPhoto()}" 
                                         alt="{echo ShopCore::encode($hotProduct->getName())} - {echo $hotProduct->getId()}"/>
                            </a>
                        </div>
                        
                        <!-- products price and currency -->
                        <div class="widget42__product-price">
                            {if $hotProduct->hasDiscounts()}
                            <span class="">
                                <span class="f-w_b_222">{echo $hotProduct->firstVariant->toCurrency('OrigPrice')} </span>
                            </span>                           
                            {/if}
                            <span class="widget42__product-price-full_price">
                                {echo emmet_money($hotProduct->firstVariant->toCurrency()) }
                            </span>
                            <span class="second_cash"></span>
                        </div>
                        
                        <!-- displaying products SCU -->
                          {if $hotProduct->firstVariant->getNumber()}
                                          <div class="widget42__product-scu">
                                            {tlang('Number')}: <span data-product-number>{echo $hotProduct->firstVariant->getNumber()}</span>
                                          </div>
                                    {/if}
                        </div>
                    </article>
                </div>
                {/foreach}
       </div>
<!-- Popular Tab END -->
</section>   
{/if}
<!-- featured -->

Код второго виджета идентичен, за разницей в id дивов. Но это к делу отношение вряд ли имеет.

Thumbs up Thumbs down

9

Re: Виджет популярных и акционных товаров.

Товарищи, спасибо за помощь! Разобрался )) Косяк оказался в верстке, зря я грешил на движок smile

Суть. Когда создаешь виджет новый для отображения товаров через модуль "Популярные/Новые/Акционные товары", в tpl шаблоне виджета, который движок создает, есть обертка вот такая:

<section class="container"></section>

Она выводила слои друг за другом, но браузер не прятал их, а показывал друг за другом, стоило убрать эту обертку и обернуть в обычные div, все заработало чудесным образом smile

Еще раз, извиняюсь за беспокойство, зря я грешил на движок smile

P.S. Кстати, на будущее, может кто объяснит простым языком смысл лейбла ХИТ - этим нужно вручную помечать хитовые товары? Есть ли в движке возможность выводить в блоке ПОПУЛЯРНЫЕ например товары, которые имеют больше всего просмотров и/или заказов?

Thumbs up Thumbs down

10

Re: Виджет популярных и акционных товаров.

Andrei_Ts пишет:

Товарищи, спасибо за помощь! Разобрался )) Косяк оказался в верстке, зря я грешил на движок smile

Суть. Когда создаешь виджет новый для отображения товаров через модуль "Популярные/Новые/Акционные товары", в tpl шаблоне виджета, который движок создает, есть обертка вот такая:

<section class="container"></section>

Она выводила слои друг за другом, но браузер не прятал их, а показывал друг за другом, стоило убрать эту обертку и обернуть в обычные div, все заработало чудесным образом smile

Еще раз, извиняюсь за беспокойство, зря я грешил на движок smile

P.S. Кстати, на будущее, может кто объяснит простым языком смысл лейбла ХИТ - этим нужно вручную помечать хитовые товары? Есть ли в движке возможность выводить в блоке ПОПУЛЯРНЫЕ например товары, которые имеют больше всего просмотров и/или заказов?

Рад, что у Вас все получилось.

По поводу последнего вопроса, вот так должно работать - http://take.ms/zo6x0
Мы выводим в виджете все товары не зависимо от ярлыка и сортируем по популярности. Если я не ошибаюсь, сортировка по популярным как раз выводит товары отсортированы по количеству переходов. Хотя 100% гарантии не дам, нужно будет самому еще посмотреть.

По поводу смысла ярлыка "Хит" то смысл в том, что бы сделать акцент на конкретные товары для посетителя. Просто работает в "ручном режиме".

ImageCMS Lead Front End Developer

Thumbs up +1 Thumbs down

11

Re: Виджет популярных и акционных товаров.

Kepler-22b пишет:
Andrei_Ts пишет:

Товарищи, спасибо за помощь! Разобрался )) Косяк оказался в верстке, зря я грешил на движок smile

Суть. Когда создаешь виджет новый для отображения товаров через модуль "Популярные/Новые/Акционные товары", в tpl шаблоне виджета, который движок создает, есть обертка вот такая:

<section class="container"></section>

Она выводила слои друг за другом, но браузер не прятал их, а показывал друг за другом, стоило убрать эту обертку и обернуть в обычные div, все заработало чудесным образом smile

Еще раз, извиняюсь за беспокойство, зря я грешил на движок smile

P.S. Кстати, на будущее, может кто объяснит простым языком смысл лейбла ХИТ - этим нужно вручную помечать хитовые товары? Есть ли в движке возможность выводить в блоке ПОПУЛЯРНЫЕ например товары, которые имеют больше всего просмотров и/или заказов?

Рад, что у Вас все получилось.

По поводу последнего вопроса, вот так должно работать - http://take.ms/zo6x0
Мы выводим в виджете все товары не зависимо от ярлыка и сортируем по популярности. Если я не ошибаюсь, сортировка по популярным как раз выводит товары отсортированы по количеству переходов. Хотя 100% гарантии не дам, нужно будет самому еще посмотреть.

По поводу смысла ярлыка "Хит" то смысл в том, что бы сделать акцент на конкретные товары для посетителя. Просто работает в "ручном режиме".

Ясно. Попробую сделать отдельный блок, чтобы проверить ПОПУЛЯРНЫЕ по посещениям. Буду экспериментировать.
Еще раз, спасибо.

Thumbs up Thumbs down