bingo 0 Опубликовано 13 ноября, 2014 Жалоба Share Опубликовано 13 ноября, 2014 В VamShop 2 в Адмике - Оформление - Шаблоны - Шаблон категории поменял: {content_listing template='product-listing' parent={$content_id} page={$page} type='product,downloadable' order='price-desc'} на: {content_listing template='product-listing' parent={$content_id} page={$page} type='product,downloadable' order='stock-desc'} Теперь товары со стоком = 0 уходят в конец категории. Но при выборе сортировки сток перестает учитываться. Можно ли сделать чтобы условие при открытии категории было следующее: Сортировка по цене от меньшей к большей, по имени от А до Я, по стоку от большего к меньшему или сток 0 в конец списка Кто-нибудь уже с этим сталкивался? Как поправить код, чтобы условия учитывались? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 13 ноября, 2014 Жалоба Share Опубликовано 13 ноября, 2014 Верните price-desc сортировку. А в /app/Vendor/smarty/vam_plugins/function.content_listing.php попробуйте поменять: if($params['order'] == 'price-desc' or $config['order'] == 'price-desc') $params['order_column'] = 'ContentProduct.price DESC'; на: if($params['order'] == 'price-desc' or $config['order'] == 'price-desc') $params['order_column'] = 'ContentProduct.price ASC, ContentProduct.stock DESC'; Ссылка на сообщение Поделиться на другие сайты
bingo 0 Опубликовано 13 ноября, 2014 Автор Жалоба Share Опубликовано 13 ноября, 2014 Вернул price-desc Поменял код Фильтр по умолчанию стоит по возрастанию цены, но товар со stock = 0 перемещается в конец товаров с одинаковой стоимостью Сортировка по цене при наличии в категории товаров со стоком 0 вообще перестает работать, остальные по имени и популярности работают А как сделать, чтобы товары со стоком 0 уходили в конец списка при любых параметрах сортировки? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 13 ноября, 2014 Жалоба Share Опубликовано 13 ноября, 2014 Добавиьте , ContentProduct.stock DESC во все значения переменой $params['order_column'] Там же в файле идёт целый блок кода, я Вам пример показал для price-desc, Вы этот код добавляйте и в других значениях. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 13 ноября, 2014 Жалоба Share Опубликовано 13 ноября, 2014 Вот там же блок кода идёт с заданием сортировки: if(!isset($params['order']) or !isset($config['order'])) $params['order_column'] = 'Content.order ASC'; if(isset($config['order'])) $params['order'] = $config['order']; if($params['order'] == 'order' or $config['order'] == 'order') $params['order_column'] = 'Content.order'; if($params['order'] == 'order-asc' or $config['order'] == 'order-asc') $params['order_column'] = 'Content.order ASC'; if($params['order'] == 'order-desc' or $config['order'] == 'order-desc') $params['order_column'] = 'Content.order DESC'; if($params['order'] == 'price' or $config['order'] == 'price') $params['order_column'] = 'ContentProduct.price'; if($params['order'] == 'price-asc' or $config['order'] == 'price-asc') $params['order_column'] = 'ContentProduct.price ASC'; if($params['order'] == 'price-desc' or $config['order'] == 'price-desc') $params['order_column'] = 'ContentProduct.price DESC'; if($params['order'] == 'stock' or $config['order'] == 'stock') $params['order_column'] = 'ContentProduct.stock'; if($params['order'] == 'stock-asc' or $config['order'] == 'stock-asc') $params['order_column'] = 'ContentProduct.stock ASC'; if($params['order'] == 'stock-desc' or $config['order'] == 'stock-desc') $params['order_column'] = 'ContentProduct.stock DESC'; if($params['order'] == 'name' or $config['order'] == 'name') $params['order_column'] = 'ContentDescription.name'; if($params['order'] == 'name-asc' or $config['order'] == 'name-asc') $params['order_column'] = 'ContentDescription.name ASC'; if($params['order'] == 'name-desc' or $config['order'] == 'name-desc') $params['order_column'] = 'ContentDescription.name DESC'; if($params['order'] == 'id' or $config['order'] == 'id') $params['order_column'] = 'Content.id'; if($params['order'] == 'id-asc' or $config['order'] == 'id-asc') $params['order_column'] = 'Content.id ASC'; if($params['order'] == 'id-desc' or $config['order'] == 'id-desc') $params['order_column'] = 'Content.id DESC'; if($params['order'] == 'ordered' or $config['order'] == 'ordered') $params['order_column'] = 'ContentProduct.ordered'; if($params['order'] == 'ordered-asc' or $config['order'] == 'ordered-asc') $params['order_column'] = 'ContentProduct.ordered ASC'; if($params['order'] == 'ordered-desc' or $config['order'] == 'ordered-desc') $params['order_column'] = 'ContentProduct.ordered DESC'; Везде и добавляйте по аналогии как это было в строке с price-desc Ссылка на сообщение Поделиться на другие сайты
bingo 0 Опубликовано 13 ноября, 2014 Автор Жалоба Share Опубликовано 13 ноября, 2014 Везде добавил, фильтр по цене не работает и товары со стоком не уходят в конец. Вот код. Что можно еще попробовать? function smarty_function_content_listing($params, $template) { global $config,$content,$filter_list; if(!isset($params['order']) or !isset($config['order'])) $params['order_column'] = 'Content.order ASC, ContentProduct.stock DESC'; if(isset($config['order'])) $params['order'] = $config['order']; if($params['order'] == 'order' or $config['order'] == 'order') $params['order_column'] = 'Content.order, ContentProduct.stock DESC'; if($params['order'] == 'order-asc' or $config['order'] == 'order-asc') $params['order_column'] = 'Content.order ASC, ContentProduct.stock DESC'; if($params['order'] == 'order-desc' or $config['order'] == 'order-desc') $params['order_column'] = 'Content.order DESC, ContentProduct.stock DESC'; if($params['order'] == 'price' or $config['order'] == 'price') $params['order_column'] = 'ContentProduct.price, ContentProduct.stock DESC'; if($params['order'] == 'price-asc' or $config['order'] == 'price-asc') $params['order_column'] = 'ContentProduct.price ASC, ContentProduct.stock DESC'; if($params['order'] == 'price-desc' or $config['order'] == 'price-desc') $params['order_column'] = 'ContentProduct.price ASC, ContentProduct.stock DESC'; if($params['order'] == 'stock' or $config['order'] == 'stock') $params['order_column'] = 'ContentProduct.stock, ContentProduct.stock DESC'; if($params['order'] == 'stock-asc' or $config['order'] == 'stock-asc') $params['order_column'] = 'ContentProduct.stock ASC, ContentProduct.stock DESC'; if($params['order'] == 'stock-desc' or $config['order'] == 'stock-desc') $params['order_column'] = 'ContentProduct.stock DESC, ContentProduct.stock DESC'; if($params['order'] == 'name' or $config['order'] == 'name') $params['order_column'] = 'ContentDescription.name, ContentProduct.stock DESC'; if($params['order'] == 'name-asc' or $config['order'] == 'name-asc') $params['order_column'] = 'ContentDescription.name ASC, ContentProduct.stock DESC'; if($params['order'] == 'name-desc' or $config['order'] == 'name-desc') $params['order_column'] = 'ContentDescription.name DESC, ContentProduct.stock DESC'; if($params['order'] == 'id' or $config['order'] == 'id') $params['order_column'] = 'Content.id, ContentProduct.stock DESC'; if($params['order'] == 'id-asc' or $config['order'] == 'id-asc') $params['order_column'] = 'Content.id ASC, ContentProduct.stock DESC'; if($params['order'] == 'id-desc' or $config['order'] == 'id-desc') $params['order_column'] = 'Content.id DESC, ContentProduct.stock DESC'; if($params['order'] == 'ordered' or $config['order'] == 'ordered') $params['order_column'] = 'ContentProduct.ordered, ContentProduct.stock DESC'; if($params['order'] == 'ordered-asc' or $config['order'] == 'ordered-asc') $params['order_column'] = 'ContentProduct.ordered ASC, ContentProduct.stock DESC'; if($params['order'] == 'ordered-desc' or $config['order'] == 'ordered-desc') $params['order_column'] = 'ContentProduct.ordered DESC, ContentProduct.stock DESC'; Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 13 ноября, 2014 Жалоба Share Опубликовано 13 ноября, 2014 Это ведь код для сортировки, к фильтрам он отношения не имеет. Всё, что касается вывода товара в этом файле находится, что касается сортировки задаётся в параметре order Пробуйте править код как Вам нужно. Ссылка на сообщение Поделиться на другие сайты
bingo 0 Опубликовано 13 ноября, 2014 Автор Жалоба Share Опубликовано 13 ноября, 2014 можно ли как-то прописать одновременно в шаблоне категории ? order='price-asc' order='stock-desc'} чтобы оба условия сработали для order по умолчанию Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 14 ноября, 2014 Жалоба Share Опубликовано 14 ноября, 2014 Нет. Но я ж Вам именно этот варант и предложил. ContentProduct.price ASC, ContentProduct.stock DESC Это и есть сортирофка поце и количеству на складе. Ссылка на сообщение Поделиться на другие сайты
bingo 0 Опубликовано 14 ноября, 2014 Автор Жалоба Share Опубликовано 14 ноября, 2014 да, я понял, просто с этим условием, получается, что колличество на складе сортируется в рамках цены например товар1 - 500руб - сток 5 товар2 - 100руб- сток 0 товар3 - 100руб- сток 5 товар4 - 300руб- сток 5 товар5 - 100руб- сток 5 сортируется товар5 - 100руб- сток 5 товар3 - 100руб- сток 5 товар2 - 100руб- сток 0 товар4 - 300руб- сток 5 товар1 - 500руб - сток 5 а нужно получить товар5 - 100руб- сток 5 товар3 - 100руб- сток 5 товар4 - 300руб- сток 5 товар1 - 500руб - сток 5 товар2 - 100руб- сток 0 видимо это парадокс ) Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 14 ноября, 2014 Жалоба Share Опубликовано 14 ноября, 2014 Поставьте ContentProduct.stock DESC на первое место. Либо вообще оставьте только ContentProduct.stock DESC Что б всегда по складу сортировалось, но тогда полоска сортировки смысла не будет иметь, если Вы поменяете везде значение на сортировку по складу. Ссылка на сообщение Поделиться на другие сайты
bingo 0 Опубликовано 14 ноября, 2014 Автор Жалоба Share Опубликовано 14 ноября, 2014 ContentProduct.stock DESC на первое место не изменяет. Посталю только stock Спасибо. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 14 ноября, 2014 Жалоба Share Опубликовано 14 ноября, 2014 Тогда полоску сортировки вообще уберите, раз удалили варианты сортировки. В Админке - Оформление - Микро-шаблоны - product_listing находится html-код полоски с сортировкой. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения