Вход • Регистрация

Сортировка товаров в интернет магазине по цене

  • 01 февраля 2019 г.
  • Добрый день.
    Как сделать сортировку в ИМ по цене от меньшего к большему. В админке 4 настройки но не то.
    Форум излазил всё вроде попробовал, но так и не заработало.
    Последнее что пробовал в shop.model вставлял код
    Код
    public function list_()
    {
    $this->diafan->_route->sort = 1;

    Что надо сделать, подскажите.
  • 03 февраля 2019 г.
  • Создайте файл shop.model.custom.php в папке modules/shop/ шаблона с таким содержанием:

    Код


    class Shop_model extends Model
    {
    before private function list_elements_query($time, $cat_ids)
    {
    $this->diafan->_route->sort = $this->diafan->_route->sort ? $this->diafan->_route->sort : 1;
    }

    }

  • 04 февраля 2019 г.
  • Спасибо. В поддержке уже помогли. Там другой вариант сделали
    • 04 февраля 2019 г.
    • Можете выложить вариант решения здесь. Вдруг кому-то, как Вам, пригодится. Для этого форум и существует
  • 05 февраля 2019 г.
  • Сценарий modules/shop/shop.php
    Нужно добавить 2 строчки как в скрине
    Код
    public function init()
    {
    if($this->diafan->configmodules("cat"))
    {
    $this->rewrite_variable_names[] = 'cat';
    }
    if ($this->diafan->_route->show)
    {
    $this->model->id();
    }
    elseif ($this->diafan->_route->param)
    {
    $this->diafan->_route->sort = !empty($this->diafan->_route->sort) ? $this->diafan->_route->sort : 1;
    $this->model->list_param();
    }
    elseif(isset($_GET["action"]) && $_GET["action"] === 'search')
    {
    $this->model->list_search();
    }
    elseif(isset($_GET["action"]) && $_GET["action"] === 'compare' && ! $this->diafan->configmodules('hide_compare', "shop"))
    {
    $this->model->compare();
    }
    elseif(isset($_GET["action"]) && $_GET["action"] === 'file' && isset($_GET["code"]))
    {
    $this->model->file_get();
    }
    elseif (! $this->diafan->configmodules("cat")|| $this->diafan->configmodules("first_page_list") || $this->diafan->_route->cat || $this->diafan->_route->brand)
    {
    $this->diafan->_route->sort = !empty($this->diafan->_route->sort) ? $this->diafan->_route->sort : 1;
    $this->model->list_();
    • 05 февраля 2019 г.
    • Это плохой способ, ничего не имею против поддержки, но лучше использовать вариант Евгения, он правильно вынес в custom
      • 05 февраля 2019 г.
      • Степан, а чем этот вариант плох? Чем грозит?
        • 05 февраля 2019 г.
        • Возможными проблемами с обновлением cms. Если вы правите системный файл, при обновлении он улетит в custom и "перекроет" системный файл (в котором могут быть новые функции и тд). Чтобы такого не происходило применяется частичная кастомизация, как выше сделал Евгений.
          Подробнее https://www.diafan.ru/dokument/full-manual/developers/api/custom/
      • 05 февраля 2019 г.
      • Я думаю поддержка ответила стандартно, полагая, что частичная кастомизация автоматически подразумевается специалистами, когда затрагиваются подобные изменения системных файлов.)
  • 05 февраля 2019 г.
  • Учту) удалю пару строк... хотя завтра попробую решение Евгения. Спасибо.
  • 18 июня 2019 г.
  • А может кто знает как сделать сортировку товаров по цене в админке?
    • 18 июня 2019 г.
    • В свойстве $config shop.admin.php вроде как можно сделать
      • 20 июня 2019 г.
      • Это в любом другом модуле. А в магазине сортировка идет через настройки магазина, там же параметр "Сортировать товары" и 4 варианта, ручная, по алфавиту и туда-сюда по порядку добавления
      • 20 июня 2019 г. , редакция: 20 июня 2019 г.
      • Сортировать по цене в целом не так просто, как сортировка по полю, которое есть в таблице.
        Вообще, там приличная такая розовая мохнатая попа с алгоритмом сортировки по цене :)
        Если открыть сторону сайта, там можно увидеть, что там учитывается для сортировки по цене и умереть от ужаса.

        Основные проблемы: сортировать надо товары, а цены лежат в другой таблице. Более того, у одного товара может быть не одна цена, а зависимые от характеристики несколько цен. Матрас "А" имеет размер односпал за 5000, полуторку за 10000 и двуспальный за 15000. Как сортировать матрас "А" среди других матрасов с одной ценой по 3000, 7000 и 20000? По самой дешевой? Её найти надо сначала в БД...
        А ещё есть примененные скидки к ценам, есть матрас за 15000, а есть за 16000, но со скидкой 10%. Как его ставить в списке? А если одна цена со скидкой, а другая нет? Это всё надо найти в БД и посчитать.
        А ещё есть валюты. У одного матраса цена 15000, а у другого цена 250 евро, какой выше ставить? Если зависимые цены? А если матрас "Б" имеет цену 5000 за односпал, 150 евро за полуторку, но скидка 50%?
        Так что, по цене надо искать со стороны фронта и потом уже править в админке то, что нашлось
        • 21 июня 2019 г.
        • Мне вообще кажется, что вот эта реализация товаров имеющих несколько модификаций была стратегически неверной. В шмитриксе идея торговых предложений, когда каждая модификация по сути отдельный товар со всеми вытекающими гибче что-ли будет.
          • 21 июня 2019 г.
          • Не гибче, а примитивнее. Плюсы есть, конечно.
            Но потому он такой и тормозной и громоздкий.

            При этом эта теория у нас тоже не отменяется: хочешь, добавляй модификации отдельно, без зависимых цен.
  • 19 июня 2019 г.
  • А по подробней можно.
    • 19 июня 2019 г.
    • Если Вы хотите сразу решение, то лучше сюда http://pro.user.diafan.ru/
      Или подождите, пока у кого нибудь появится желание вникнуть и сделать подробный мануал

Новости

  • Вчера, 09:05
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 
  • 15 декабря 2023 г.
  • Подводим итоги 2023 года. Выпустили новую сборку DIAFAN.CMS 7.1.1, вводим новые тарифы на аренду сайта и коммерческую поддержку и автообновления с января 2024 г., строим планы на будущий год.