Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.

Форум Сайт на DIAFAN.CMS Вопросы от новичков Сортировка товаров в интернет магазине по цене


Алексей (Kadur) Сайт в Diafan.Cloud101 февраля, пятница

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

Что надо сделать, подскажите.

Евгений (evvdemin) Сайт в Diafan.Cloud103 февраля, воскресенье

Создайте файл 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;
}

}

Показать весь код

Алексей (Kadur) Сайт в Diafan.Cloud104 февраля, понедельник

Спасибо. В поддержке уже помогли. Там другой вариант сделали

Виталий NVGPRO (DIAFAN.CMS) 32604 февраля, понедельник

Можете выложить вариант решения здесь. Вдруг кому-то, как Вам, пригодится. Для этого форум и существует

Алексей (Kadur) Сайт в Diafan.Cloud105 февраля, вторник

Сценарий 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_();

Степан (idxdoc) 14005 февраля, вторник

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

Алексей (Kadur) Сайт в Diafan.Cloud105 февраля, вторник

Степан, а чем этот вариант плох? Чем грозит?

Сергей (universe) 7305 февраля, вторник

Возможными проблемами с обновлением cms. Если вы правите системный файл, при обновлении он улетит в custom и "перекроет" системный файл (в котором могут быть новые функции и тд). Чтобы такого не происходило применяется частичная кастомизация, как выше сделал Евгений.
Подробнее https://www.diafan.ru/dokument/full-manual/developers/api/custom/

Сергей (universe) 7305 февраля, вторник

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

Алексей (Kadur) Сайт в Diafan.Cloud105 февраля, вторник

Понятно. Спасибо, но я не обновляю CMS. Так что пока не страшно)))

Любимов Павел (DIAFAN.CMS) 31805 февраля, вторник

В таком случае страшно станет, когда-таки решите.

Алексей (Kadur) Сайт в Diafan.Cloud105 февраля, вторник

Учту) удалю пару строк... хотя завтра попробую решение Евгения. Спасибо.