А не по ID DESC
Создал магазин на основе InstantCMS и instantcms.ru/addons/instantcart.html
Замечательное дополнение, всем доволен. Кроме одного момента. Для вывода товаров создаётся и используется стандартный тип контента.
В нём предусмотрена система "последним опубликовал — показал первым".
Для статейных материалов самое то, просто идеально. Но в магазине есть товары, которые относятся к нескольким категориям одновременно. Т.е. при просмотре различных категорий вверху выводятся последнедобавленные товары, а, поскольку эти товары во многих категориях, то выглядит так, что во всех категориях одинаковые товары
У любого товара (контента) есть основная категория и дополнительные. Мне необходимо сделать так, что бы сортировка вывода была следующей:
сначала SORT (ID основной категории контента == ID текущей категории), а потом ID контента DESC (умолчательная сортировка).
Помогите, пожалуйста! Легко поправлю даже системные файлы, и буду править после каждого обновления. Но куда лезть, не знаю…
Или хотя бы скажите, какой запрос отвечает за этот вывод, и по какому пути его искать, буду сам пробовать...
Описание движка слишком скудное и неполное, что бы можно было выяснить через вики =-(
Заранее благодарен за любую помощь.
Но они должны идти после тех товаров, у которых текущая категория равна основной.
public function getContentItems($ctype_name, $callback = null){ $table_name = $this->table_prefix . $ctype_name; $this->select('u.nickname', 'user_nickname'); $this->select('f.title', 'folder_title'); $this->joinLeft('content_folders', 'f', 'f.id = i.folder_id'); if (!$this->privacy_filter_disabled) { $this->filterPrivacy(); } if (!$this->approved_filter_disabled) { $this->filterApprovedOnly(); } if (!$this->delete_filter_disabled) { $this->filterAvailableOnly(); } if (!$this->pub_filter_disabled) { $this->filterPublishedOnly(); } if (!$this->order_by){ $this->orderBy('date_pub', 'desc')->forceIndex('date_pub'); } $this->useCache('content.list.'.$ctype_name); $user = cmsUser::getInstance(); return $this->get($table_name, function($item, $model) use ($user, $callback, $ctype_name){ 'id' => $item['user_id'], 'nickname' => $item['user_nickname'], 'is_friend' => $user->isFriend($item['user_id']) ); $item = $callback($item, $model, $ctype_name, $user); } return $item; }); }
Может просто поменяете в админке эту сортировку в обратном порядке?В нём предусмотрена система "последним опубликовал — показал первым".
Сомневаюсь что это то что надо. Или вы собрались менять сортировку всех типов контента?Нашёл куда нужно вставить сортировку.
Её, похоже тут и нету.Но так и не понял с наскока, откуда взять ID текущей категории.
Вывод же формируется не по совсем по категории, а по точке в дереве категорий, ведь ваша категория может содержать множество подкатегорий, а те еще кучу под-подкатегорий и т.д. и все эти вложения надо вывести.
А смысл?) Меня устраивает порядок сортировки. Мне просто необходимо, что бы статьи, у которых выбранная категория основная, выводились первыми. А если эта же категория есть как дополнительная у другой статьи, она бы тоже выводилась, но после!
Может просто поменяете в админке эту сортировку в обратном порядке?
Конечно. ИМХО так и должно быть.Сомневаюсь что это то что надо. Или вы собрались менять сортировку всех типов контента?
Мало того, по логике сначала выводятся статьи этой категории, а потом, после заголовка "Так же на тему:" статьи, у которых текущая категория прописана в дополнительных.
Но я не разработчик, им виднее.
разобрался в коде. поправил 2 системных файла: во frontend.php передаю в функцию getContentItems() дополнительный параметр $category_id.Её, похоже тут и нету.
Вывод же формируется не по совсем по категории, а по точке в дереве категорий, ведь ваша категория может содержать множество подкатегорий, а те еще кучу под-подкатегорий и т.д. и все эти вложения надо вывести.
в этой функции изменил сортировку на
if (!$this->order_by){ if ($category_id) { ); $this->orderByList($ordering); }else{ $this->orderBy('date_pub', 'desc')->forceIndex('date_pub'); } }
Может, пригодится кому-либо ещё…
Полностью согласен с данным предложением!Мне просто необходимо, что бы статьи, у которых выбранная категория основная, выводились первыми. А если эта же категория есть как дополнительная у другой статьи, она бы тоже выводилась, но после!
Осталось найти связь с разработчиками этого замечательного движка и предложить им сделать "галочку" типа вывода
Полностью согласен с данным предложением!