Как сделать сортировку одновременно по цене и наличию?

Знаю способ как на prestashop 1.6 при любой сортировке сделать так чтобы в списке товаров категории, те товары которых нет в наличии отображались всегда в конце списка. Работает 100%, переделать необходимо только 1 TPL файл. Совместимо с blocklayered.

Пишите в ПМ, помогу за какую ни будь плюшку, к примеру хорошего редкого платного модуля, который не выкладывали на этом форуме.
 
Господа, подскажите где поправить код, чтобы сделать сортировку товара по цене и наличию одновременно. Т.е. чтобы первыми стояли товары по цене, которые ОБЯЗАТЕЛЬНО есть в наличии. Стандартный метод выводит по цене все правильно, но только все подряд, включая товары, которых нет в наличии.
Отключать товары которых нет в наличии - не предлагать.
Версия 1.5.6.2
решается просто, адвансед сеарч 4 там в настройках указываешь показывать только те что есть в наличии а сортировку ставишь как тебе нужно например по цене
 
кстати, адвансед серч отрабатывает аякс запросами по выборке, без применения фильтров(если ничего не выбрать) будут отображаться и товары которые не в наличии, это я к тому что на поисковики это не аукнется
 
что то у меня не работает этот метод
 
В общем вот мое решение, сделано на основе дефолтного шаблона от 1.6.0.14, так что если у Вас шаблон не стандартный, нужно не тупо копировать мой код, а изучить свой код, включить интуицию и сделать по аналогии:

В файле product-list.tpl меняем весь код на этот:


Код:
{*
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <contact@prestashop.com>
*  @copyright  2007-2015 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*}
{if isset($products) && $products}
    {*define number of products per line in other page for desktop*}
    {if $page_name !='index' && $page_name !='product'}
        {assign var='nbItemsPerLine' value=3}
        {assign var='nbItemsPerLineTablet' value=2}
        {assign var='nbItemsPerLineMobile' value=3}
    {else}
        {assign var='nbItemsPerLine' value=4}
        {assign var='nbItemsPerLineTablet' value=3}
        {assign var='nbItemsPerLineMobile' value=2}
    {/if}
    {*define numbers of product per line in other page for tablet*}
    {assign var='nbLi' value=$products|@count}
    {math equation="nbLi/nbItemsPerLine" nbLi=$nbLi nbItemsPerLine=$nbItemsPerLine assign=nbLines}
    {math equation="nbLi/nbItemsPerLineTablet" nbLi=$nbLi nbItemsPerLineTablet=$nbItemsPerLineTablet assign=nbLinesTablet}
    <!-- Products list -->
    <ul{if isset($id) && $id} id="{$id}"{/if} class="product_list grid row{if isset($class) && $class} {$class}{/if}">
        {foreach from=$products item=product name=products}
            {math equation="(total%perLine)" total=$smarty.foreach.products.total perLine=$nbItemsPerLine assign=totModulo}
            {math equation="(total%perLineT)" total=$smarty.foreach.products.total perLineT=$nbItemsPerLineTablet assign=totModuloTablet}
            {math equation="(total%perLineT)" total=$smarty.foreach.products.total perLineT=$nbItemsPerLineMobile assign=totModuloMobile}
            {if $totModulo == 0}{assign var='totModulo' value=$nbItemsPerLine}{/if}
            {if $totModuloTablet == 0}{assign var='totModuloTablet' value=$nbItemsPerLineTablet}{/if}
            {if $totModuloMobile == 0}{assign var='totModuloMobile' value=$nbItemsPerLineMobile}{/if}
            {if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}
                {if (($product.allow_oosp || $product.quantity > 0)) OR ((isset($product.quantity_all_versions) && $product.quantity_all_versions > 0))}
                     {include file="$tpl_dir./product-list-filter.tpl"}
                {else}
                    {$outofstocks[] = $product}
                {/if}
            {else}
                {include file="$tpl_dir./product-list-filter.tpl"}
            {/if} 
        {/foreach}
        {if isset($outofstocks)}
            {foreach from=$outofstocks item=product name=products}
                 {include file="$tpl_dir./product-list-filter.tpl"}
            {/foreach}
        {/if}
</ul>
{addJsDefL name=min_item}{l s='Please select at least one product' js=1}{/addJsDefL}
{addJsDefL name=max_item}{l s='You cannot add more than %d product(s) to the product comparison' sprintf=$comparator_max_item js=1}{/addJsDefL}
{addJsDef comparator_max_item=$comparator_max_item}
{addJsDef comparedProductsIds=$compared_products}
    <!-- /Products list -->
{/if}

Далее рядом с product-list.tpl создаем файл product-list-filter.tpl со следующим кодом (смотри прикрепленный файл).
 

Вложения

  • product-list-filter.txt
    14,3 KB · Просмотры: 35
Скорее всего это решение будет не совместимо с фильтром Advanced Search. Для понимания, это решение перемещает товары которые не доступны для заказа, но если в админке установлено отображать такие товары, в конец списка с товарами в категории, не зависимо от выставленной сортировки и blocklayered фильтра.
 
Последнее редактирование:
помогите! сортировка по цене почему то где то до 50-го товара в категории - нормально, а потом заново. очень странно выглядит..
 
помогите! сортировка по цене почему то где то до 50-го товара в категории - нормально, а потом заново. очень странно выглядит..

Может быть проблемы с пагинацией или у вас стоит ограничение на выборку в 50 товаров. Вы ничего не меняли ручками в коде?
 
помогите! сортировка по цене почему то где то до 50-го товара в категории - нормально, а потом заново. очень странно выглядит..
Какая версия PS, что-нибудь трогали в файлах магазина, какой фильтр?
 
помогите! сортировка по цене почему то где то до 50-го товара в категории - нормально, а потом заново. очень странно выглядит..
возможно баг престы, при сортировке по цене сортировка сбрасывается при смене страницы.
вот решение : Для просмотра ссылки Войди или Зарегистрируйся
 
Назад
Сверху