Страница 1 из 1

Товары на главной в случайном порядке

Добавлено: 01.12.2017, 22:50
makki
Простое но полезное решение, которое придаст динамичности вашему магазину.
По умолчанию Хиты продаж, Новинки и Акционные товары на главной странице отображаются в порядке соответствующему дате добавления товара. Т.е. покупатель всегда видит те же товары. Для того, чтобы при каждой перезагрузке страницы, отображать товары в случайном порядке из списка соответствующих товаров, нужно сделать такие нехитрые действия в файле view/View.php

Хиты продаж
После строки

Код: Выделить всё

public function get_featured_products_plugin($params, &$smarty) {

добавьте

Код: Выделить всё

        if(!isset($params['sort'])) {
            $params['sort'] = 'rand';
        }


Новинки

Код: Выделить всё

public function get_new_products_plugin($params, &$smarty) {

Тут логичнее, если товары действительно отображаются в порядке добавления в магазин. Ничего не меняем.

Акционные товары
После строки

Код: Выделить всё

public function get_discounted_products_plugin($params, &$smarty) {

добавьте такой же код

Код: Выделить всё

        if(!isset($params['sort'])) {
            $params['sort'] = 'rand';
        }

Добавлено: 02.12.2017, 01:38
Vadik
Здравствуйте. А можно как-то сделать, чтобы при первом заходе отображался мною выбранный товар (у меня в магазине отображаются только хиты продаж, которые собственно сам и выбирал), а уже в дальнейшем, после обновления, чтобы отображался случайным образом товар?

Добавлено: 02.12.2017, 08:49
korshunov
Несколько заумный способ.

Проще всего лишь в шаблоне main.tpl поменять
{get_discounted_products var=discounted_products limit=4}
на
{get_discounted_products var=discounted_products limit=4 sort=rand}

Параметры в функции для того и придуманы, чтоб их простой пользователь задавал легко и просто, не влезая в программный код...

Добавлено спустя 5 минут:
Vadik писал(а):Здравствуйте. А можно как-то сделать, чтобы при первом заходе отображался мною выбранный товар (у меня в магазине отображаются только хиты продаж, которые собственно сам и выбирал), а уже в дальнейшем, после обновления, чтобы отображался случайным образом товар?

Можно, но несколько хлопотно. И надо задачу ставить, потому как реализовывать можно по разному. А если через неделю найдет еще, это как считать - "первый заход" или уже не первый? И как считать заходы - то ли только по главной странице, то ли по всем страницам сайта?

Добавлено: 02.12.2017, 18:40
makki
korshunov писал(а):Проще всего лишь в шаблоне main.tpl поменять
{get_discounted_products var=discounted_products limit=4}
на
{get_discounted_products var=discounted_products limit=4 sort=rand}

Параметры в функции для того и придуманы, чтоб их простой пользователь задавал легко и просто, не влезая в программный код...
Спасибо!

Добавлено: 03.12.2017, 07:28
Vadik
Понятно. Спасибо

Добавлено: 09.01.2019, 14:13
pizhama
А как можно сделать вывод случайного товара на главной?

Добавлено: 09.01.2019, 14:46
korshunov
По аналогии, скажем, с выводом рекомендованных на главной. Изменять в двух местах - в шаблоне main.tpl и написать свою функцию в view/View.php.

як реалізувати такий вивід товарів в v.3.5.2

Добавлено: 14.05.2020, 07:29
Andrijk
Добрий день підкажіть як можна зробити такий вивід товарів в версії v.3.5.2

Добавлено: 14.05.2020, 12:35
zyxer
В принципе как и в двойке, вот уже ответили

korshunov писал(а):Проще всего лишь в шаблоне main.tpl поменять
{get_discounted_products var=discounted_products limit=4}
на
{get_discounted_products var=discounted_products limit=4 sort=rand}

Добавлено: 19.09.2020, 13:56
muno
За подсказку /sort=rand/ спасибо! Уже работает)

А теперь, внимание, вопрос!

Заголовок темы звучит так: "Товары на главной в случайном порядке".

Вот именно это я и хотел бы реализовать.

Не feautured_products
Не discounted_products
Не new_products
Не browsed_products

А именно all_products, если можно так выразиться.
Подозреваю, что main.tpl и view.php потребуют глубокой модернизации.

Помогите, пожалуйста!
Спасибо!

Добавлено: 19.09.2020, 16:13
korshunov
muno писал(а):Заголовок темы звучит так: "Товары на главной в случайном порядке".
Вот именно это я и хотел бы реализовать.

По аналогии, например, с new_products...

Добавлено: 19.09.2020, 20:48
muno
Ну, если с main.tpl более-менее понятно...

Код: Выделить всё

    {* All products *}
    {get_all_products var=all_products limit=4 sort=rand}
    {if $all_products}
        <div class="h2">
            <span data-language="main_all_products">{$lang->main_all_products}</span>
            // * Добавить слово "Товары" в Переводы * //
        </div>

        <div class="all_products clearfix">
            // * Добавить раздел "all_products" в css, скопировав и переименовав "new_products" * //       
            {foreach $all_products as $product}
                <div class="products_item no_padding col-sm-6 col-xl-3">
                    {include "product_list.tpl"}
                </div>
            {/foreach}
        </div>
    {/if}


то view.php для меня потёмки. Как изменить функцию, чтобы она не сортировала товары по времени создания?

Код: Выделить всё

    public function get_all_products_plugin($params, &$smarty) {
        if(!isset($params['visible'])) {
            $params['visible'] = 1;
        }
        if(!isset($params['sort'])) {
            $params['sort'] = 'created';
        }
        $params['in_stock'] = 1;
        if(!empty($params['var'])) {
            $images_ids = array();
            foreach($this->products->get_products($params) as $p) {
                $products[$p->id] = $p;
                $images_ids[] = $p->main_image_id;
            }
           
            if(!empty($products)) {
                // id выбраных товаров
                $products_ids = array_keys($products);
               
                // Выбираем варианты товаров
                $variants = $this->variants->get_variants(array('product_id'=>$products_ids));
               
                // Для каждого варианта
                foreach($variants as $variant) {
                    // добавляем вариант в соответствующий товар
                    $products[$variant->product_id]->variants[] = $variant;
                }
               
                // Выбираем изображения товаров
                if (!empty($images_ids)) {
                    $images = $this->products->get_images(array('id'=>$images_ids));
                    foreach ($images as $image) {
                        if (isset($products[$image->product_id])) {
                            $products[$image->product_id]->image = $image;
                        }
                    }
                }
               
                foreach($products as $product) {
                    if(isset($product->variants[0])) {
                        $product->variant = $product->variants[0];
                    }
                }
            }
            $smarty->assign($params['var'], $products);
        }
    }


Возможно где-то ещё надо внести правки?

Спасибо за подсказку.

Добавлено: 20.09.2020, 08:43
korshunov
Видимо, тут:
$params['sort'] = 'created';

Добавлено: 20.09.2020, 14:49
muno
Вот, кстати, не первый раз проделываю подобное - очередная попытка добавить новую функцию. Итог: This page isn’t working. Вебсайт не открывается. Причём, причина в обоих файлах. Если один из них оригинальный, а другой - нет, всё равно не открывается. Подозреваю, что где-то ещё есть закладка, и просто так функцию не добавить.

В итоге просто в функции new_products в файле view.php удалил сортировку. Теперь все товары всегда будут новыми)