Как перенести в конец списка товар который равен 0 в Shop Script Premium?

Тема в разделе "Shop-script", создана пользователем baltazor-vova, 11 авг 2009.

Статус темы:
Закрыта.
Модераторы: kadurinho
  1. baltazor-vova

    baltazor-vova Постоялец

    Регистр.:
    4 авг 2009
    Сообщения:
    79
    Симпатии:
    18
    Как перенести в конец списка товар который равен 0 в Shop Script Premium, или чтобы пользователи не смогли его видеть! Искал по форуму именно для движка Шоп скрипт Премиум не нашел!Помогите плиз!
     
  2. GoldMiner

    GoldMiner Создатель

    Регистр.:
    29 окт 2008
    Сообщения:
    23
    Симпатии:
    2
    По-моему я вот в этой Перейти по ссылке про это же спрашиваю.

    Там предложен способ сортировки по одному полю Price, но можно заменить поле Price на id_have и тогда отсутствующие товары встанут в конце списка.

    Это работает, но только сбивается сортировка по тех товаров, которые есть в наличии. Мне бы хотелось чтобы была сортировка по трем полям: сначала по наличию, потом по алфавиту, потом по убыванию цены.

    Только никто мне не ответил как это сделать.
     
  3. Buyer

    Buyer Постоялец

    Регистр.:
    5 апр 2009
    Сообщения:
    55
    Симпатии:
    9
    Есть же поле сортировка. По умолчанию значение 0. Найти функцию которая уменьшает количество товара при заказе и дописать, чтобы в поле сортировки присваивалось значение например 1. А при добавлении товара снова 0. Это общими фразами, но сам принцип понятен. И все товары с количсетвом 0 будут вставать после тех которые есть и сортировка общая будет сохраняться.
    Если товары меняются не очень динамично, можно одним SQL запросом все расставлять (например раз в сутки)
    update `SS_products` set `sort_order`=1 where `in_stock`=0;
    update `SS_products` set `sort_order`=0 where `in_stock`>0;
     
    baltazor-vova нравится это.
  4. baltazor-vova

    baltazor-vova Постоялец

    Регистр.:
    4 авг 2009
    Сообщения:
    79
    Симпатии:
    18
    Да спасибо конечно работает отлично, но тут одна проблемка, когда раза 2-3 обновляешь базу дублируется товар, да понимаю что не по теме но все же! Например у поставщика изменился код товара а при обновлении аутентификация по коду товара, да можно и по наименованию, но в прайсе также возможно добавится какой то символ и это уже новый товар! Вопрос такой как можно запросом SQL убирать дублированый товар, но при этом важно чтобы сохранялся предыдущий з описанием и картинкой!
    ________________________________________________________________

    И буду признательным если ответите еще на 2 вопрос - Например у меня закончился товар пропала функция добавления в корзину, я не хочу чтобы показывалась цена на товар который отсутствует, а выводилась скажем надпись "товар не доступен", понимаю что можно и в админке это зделать но у меня база на 8500 товаров! Помогите плиз:bc::bc::bc::bc::thenks:
     
  5. Buyer

    Buyer Постоялец

    Регистр.:
    5 апр 2009
    Сообщения:
    55
    Симпатии:
    9
    По первому пункту одним запросом такое решить врядли получится. Да и вообще программно такое как сделаешь? Завтра в названии запятая новая появится или пробел так же и в коде товара. Тут кроме как глазами сравнивать?
    А по второму вопросу проще. Поставьте в шаблонах
    product_detailed.tpl.html и product_brief.tpl.html
    цену между условий
    {if $product_info.in_stock > 0 }
    Здесь вывод цены
    {/if}
    И все. Цена будет отображаться только так где есть товар.
     
  6. baltazor-vova

    baltazor-vova Постоялец

    Регистр.:
    4 авг 2009
    Сообщения:
    79
    Симпатии:
    18
    Вот кусок кода, впринципе у меня не получается, возможно из за того что у меня 2 валюты показуются одновременно!


    PHP:
    {if $currencies_count ne 0 && $product_info.Price 0}
                                {* 
    show list price? *}
                                {if 
    $product_info.list_price && 
                                        
    $product_info.list_price $product_info.Price && 
                                        
    $product_info.Price 0
                                    {
    $smarty.const.LIST_PRICE}: 
                                    <
    font color=brown>
                                        <
    strike>{$product_info.list_priceWithUnit}</strike>
                                    </
    font>
                                    <
    br>
                                {/if}

                                <
    b>{$smarty.const.CURRENT_PRICE}:<b><font color="#FF0000" face="Verdana" style="font-size: 9pt">{$product_info.Price}$</font> / 
                                <
    b><font class=cat color=red face="Verdana" style="font-size: 9pt" id='currentPrice'>
                                    {if 
    $product_info.Price <= 0}
                                        
    n/a
                                    
    {else}
                                        {
    $product_info.PriceWithUnit}
                                    {/if}
                                </
    font>
                                </
    b>
                                {* 
    you save *}
                                {if 
    $product_info.list_price && 
                                    
    $product_info.list_price $product_info.Price && 
                                    
    $product_info.Price 0
                                    <
    br>
                                    {
    $smarty.const.YOU_SAVE}:
                                        <
    font color=brown>
                                            {
    $product_info[14]} ({$product_info[15]}%)
                                        </
    font>
                                    <
    br>
                                {/if}
                            {/if}
                            
                            
                            
                                                    {* 
    in stock info *}
                            {if 
    $smarty.const.CONF_CHECKSTOCK == '1'}
                                {
    $smarty.const.IN_STOCK}: 
                                <
    b>
                                {if 
    $product_info.in_stock 0}
                                    {if 
    $smarty.const.CONF_EXACT_PRODUCT_BALANCE}
                                        {
    $product_info.in_stock}
                                    {else}
                                        {
    $smarty.const.ANSWER_YES}
                                    {/if}
                                {else}
                                    <
    font color=red>{$smarty.const.ANSWER_NO}</font>
                                {/if}
                                </
    b>
                                <
    br>
                            {/if}

        
                            {if 
    $product_info.shipping_freightUC}
                                {
    $smarty.const.ADMIN_SHIPPING_FREIGHT}:&nbsp;
                                    <
    font color=brown>{$product_info.shipping_freightUC}</font>
                                     <
    br>
                            {/if}
        
                            {if 
    $product_info.min_order_amount 1}
                                {
    $smarty.const.STRING_MIN_ORDER_AMOUNT}: {$product_info.min_order_amount
                                    {
    $smarty.const.STRING_ITEM}
                                <
    br>
                            {/if}
            
                            {if 
    $product_info.weight 0}
                                {
    $smarty.const.ADMIN_PRODUCT_WEIGHT}: {$product_info.weight} {$smarty.const.CONF_WEIGHT_UNIT}
                            {/if}
                            
    Добавлено через 3 минуты
    Это кусок кода из product detailed
     
  7. Buyer

    Buyer Постоялец

    Регистр.:
    5 апр 2009
    Сообщения:
    55
    Симпатии:
    9
    Да не имеет значение количества валют. Условие-то на количество товара.
    Что значит у вас не получается?
     
  8. baltazor-vova

    baltazor-vova Постоялец

    Регистр.:
    4 авг 2009
    Сообщения:
    79
    Симпатии:
    18
    Стыдно признаться но не получается буду очень благодарен если ткнете на код который нада заменить, поставить в product_brief. product_detailed:thenks::ah:!, а то люди видят цену но не смотрят на значек корзины и думают что товар есть!
     
  9. Buyer

    Buyer Постоялец

    Регистр.:
    5 апр 2009
    Сообщения:
    55
    Симпатии:
    9
    Я же не знаю полного кода вашей страницы и не могу сказать точное место. Поробуйте заключить весь тот кусок который вы процитировали. Вам проще методом тыка это сделать. Навредить у вас там не получится ни как. Поставьте поробуйте посмотрите как будет выглядеть. Если не попадет цена вы ее увидите, а если прихватите туда чего лишлего..то картинка поплывет. 5 минут экспериментов и все.
     
  10. baltazor-vova

    baltazor-vova Постоялец

    Регистр.:
    4 авг 2009
    Сообщения:
    79
    Симпатии:
    18
    Поверьте я уже вчера целую ночь сидел, тыкал никакого толка....!
    Если не затруднит посмотрит это из product_brief
    PHP:
    {* product brief view (from a category or search) *}


    {if 
    $product_info ne NULL}

    <
    p>
    <
    table width=100border=0 cellspacing=1 cellpadding=class="bbcodes">
    <
    tr class="voting">
    <
    td {if $product_info.picture || $product_info.thumbnail || $product_info.allow_products_comparison}width="100"{/if} align=center valign=top>

        {if 
    $product_info.thumbnail}
            <
    class="olive" href="index.php?productID={$product_info.productID}">
                <
    img src="products_pictures/{$product_info.thumbnail}
                    
    alt="{$product_info.name}
                    
    border=0><br>
                {
    $smarty.const.MORE_INFO_ON_PRODUCT}
            </
    a><br><br>
        {else} 
            {if 
    $product_info.picture}
                <
    class="olive" href="index.php?productID={$product_info.productID}">
                    <
    img src="products_pictures/{$product_info.picture}
                        
    alt="{$product_info.name}
                        
    border=0>
                    {
    $smarty.const.MORE_INFO_ON_PRODUCT}
                </
    a><br><br>
            {/if}
        {/if}

            {if 
    $product_info.allow_products_comparison}  {* removed ' && $categoryID == $product_info.categoryID' *}

                    <
    table class="voting"><form action="" method=post 
                        name
    ="MainForm3_{$product_info.productID}"><tr><td>

                                <
    input type=checkbox value='1'
                                
    name='ComparisonCheckBox_{$product_info.productID}'
                                
    onchange='JavaScript:Comparison_{$product_info.productID}()'>
                                {
    $smarty.const.STRING_SELECT_TO_COMPARISON}
                    </
    td></tr></form></table>

                    <
    script language='JavaScript'>

                    function 
    Comparison_{$product_info.productID}()
                    {
    literal}
                    {
                    {/
    literal}
                        
    _checked 
                            
    document.MainForm3_{$product_info.productID}.ComparisonCheckBox_{$product_info.productID}.checked;

                        
    _index = -1;
                        for(
    i=0i<ComparedProducts1.lengthi++)
                            if ( 
    ComparedProducts1[i] == {$product_info.productID} )
                            {
    literal}
                            {
                            {/
    literal}
                                
    _index i;
                                break;
                            {
    literal}
                            }
                            {/
    literal}

                        if ( 
    _checked )
                        {
    literal}
                        {
                        {/
    literal}
                            if ( 
    _index == -)
                            {
    literal}
                            {
                            {/
    literal}
                                
    ComparedProducts1.push( {$product_info.productID} );
                                
    ComparedProducts2.push( {$product_info.productID} );
                            {
    literal}
                            }
                            {/
    literal}
                        {
    literal}
                        }
                        {/
    literal}
                        else
                        {
    literal}
                        {
                        {/
    literal}
                            if ( 
    _index != -)
                            {
    literal}
                            {
                            {/
    literal}
                                
    ComparedProducts1.splice_index);
                                
    ComparedProducts2.splice_index);
                            {
    literal}
                            }
                            {/
    literal}
                        {
    literal}
                        }
                        {/
    literal}

                    {
    literal}                    
                    }
                    {/
    literal}

                    
    </script>

            {/if}{* $product_info.allow_products_comparison *}

    </td>

    <td valign=top width="*">

        <table width=100% border="0" cellpadding=3 cellspacing=0 class="voting">
            <tr>
                <td valign="top" width="30%">
                    <table border=0 cellpadding=0 cellspacing=0 class="voting">
                        <tr>
                            <td valign="top">
                                <p><b><a href="index.php?productID={$product_info.productID}">{$product_info.name}</b></a>
                                
                                {if $product_info.customer_votes > 0} {* rating *}
                                    <p><table cellspacing="0" cellpadding="0" class="voting">
                                    <tr>
                                    {section name=i loop=5}
                                        <td>
                                        {if $smarty.section.i.index<$product_info.customers_rating}
                                            <img src="images/redstar_big.gif">
                                        {else}
                                            <img src="images/blackstar_big.gif">
                                        {/if}
                                        </td>
                                    {/section}
                                    </tr><tr>
                                        <td colspan=5>({$smarty.const.VOTES_FOR_ITEM_STRING}: {$product_info.customer_votes})</td>
                                    </tr>
                                    </table>
                                {/if}
                            </td>
                        </tr>
                    </table>
                </td>

                <form action="index.php?categoryID={$product_info.categoryID}&prdID={$product_info.productID}" method=post
                            name="HiddenFieldsForm_{$product_info.productID}" >
                <td align=right valign=top width="70%"> {* add to cart *}                

                    {if $smarty.const.CONF_OPEN_SHOPPING_CART_IN_NEW_WINDOW eq 0}

                            {* shopping cart page is shown in the same window - in this cart 'add to cart' button is a form submit button *}

                            {if  $product_info.Price>0 && ( $smarty.const.CONF_SHOW_ADD2CART eq 1 ) && ( $smarty.const.CONF_CHECKSTOCK==0 || $product_info.in_stock > 0 ) }
                                <input name="cart_{$product_info.productID}" type="image" src="images/tmpl12_sale.gif" alt="{$smarty.const.ADD_TO_CART_STRING}">
                            {/if}

                        {else}

                            {* shopping cart page is shown in a popup window *}

                            {if $product_info.Price>0 && ( $smarty.const.CONF_SHOW_ADD2CART eq 1 ) && 
                                    ( $smarty.const.CONF_CHECKSTOCK==0 || $product_info.in_stock > 0 ) }
                                    <a href="javascript:open_window('cart.php?addproduct={$product_info.productID}{counter name='select_counter_hidden' start=0 skip=1 print=false}{counter name='select_counter_hidden_extra' start=0 skip=1 print=false}{section name=i loop=$product_info.product_extra}{if $product_info.product_extra[i].option_type eq 1}{section name=s loop=$product_info.product_extra[i].option_show_times}&option_select_hidden_{counter name=select_counter_hidden}='+document.HiddenFieldsForm_{$product_info.productID}.option_select_hidden_{counter name=select_counter_hidden_extra}_{$product_info.productID}.value+'{/section}{/if}{/section}',400,300);"><img border=0 src="images/tmpl12_sale.gif" 
                                        alt="{$smarty.const.ADD_TO_CART_STRING}"></a>

                                {else}
                                    &nbsp;
                                {/if}

                        {/if}
                        {counter name='select_counter_hidden' start=0 skip=1 print=false}
                        {section name=i loop=$product_info.product_extra}
                            {if $product_info.product_extra[i].option_type eq 1}
                                {section name=s loop=$product_info.product_extra[i].option_show_times}
                                    <input type=hidden 
                                        name='option_select_hidden_{counter name=select_counter_hidden}_{$product_info.productID}' 
                                        value='1'>
                                {/section}
                            {/if}
                        {/section}
                </td>
                </form>
            </tr>
            <tr>
                <td colspan=2>
                
                    {if $currencies_count ne 0 && $product_info.Price > 0}
                        {* show list price? *}
                        {if $product_info.list_price > 0 && $product_info.list_price > $product_info.Price && $product_info.Price > 0} 
                            {$smarty.const.LIST_PRICE}: <font color=brown><strike>{$product_info.list_priceWithUnit}</strike></font><br>
                    {/if}

                    <b>{$smarty.const.CURRENT_PRICE}:<b><font color="#FF0000" face="Verdana" style="font-size: 9pt">{$product_info.Price}$</font> /
                    <b><font class=cat color=red face="Verdana" style="font-size: 9pt">
                       {if $product_info.Price <= 0}n/a{else}{$product_info.PriceWithUnit}{/if}
                    </font>
                    </b>

                    {* you save *}
                    {if $product_info.list_price > 0 && $product_info.list_price > $product_info.Price && $product_info.Price > 0} 
                        <br>
                            {$smarty.const.YOU_SAVE}:
                                <font color=brown>{$product_info.SavePrice} ({$product_info.SavePricePercent}%)
                            </font>
                        <br>
                    {/if}
                     {/if}

                </td>
            </tr>

             {if $product_info.shipping_freightUC}
            <tr>
                <td>
                    {$smarty.const.ADMIN_SHIPPING_FREIGHT}:
                </td>
                <td>
                    <font color=brown>{$product_info.shipping_freightUC}</font>
                </td>
            </tr>
            {/if}



            <form action="index.php?productID={$product_info.productID}" method=post 
                name="MainForm1_{$product_info.productID}">

            {counter name='select_counter' start=0 skip=1 print=false assign='select_counter_var'}
            {section name=i loop=$product_info.product_extra}
                {if $product_info.product_extra[i].option_type eq 0 }
                    <!--<tr bgcolor="{if $smarty.section.i.index % 2 == 0}#{$smarty.const.CONF_LIGHT_COLOR}{else}white{/if}">
                        <td>
                            {$product_info.product_extra[i].name}:
                        </td>
                        <td>
                            <b>{$product_info.product_extra[i].option_value}</b>
                        </td>
                    </tr>-->
                {else}
                    {section name=k loop=$product_info.product_extra[i].option_show_times}
                        <tr>                    
                            <td>
                                {$product_info.product_extra[i].name}{if $product_info.product_extra[i].option_show_times > 1} ({$smarty.section.k.index+1}):{else}:{/if}
                            </td>
                            <td>
                                {counter name=select_counter}
                                {if $smarty.section.k.index == 0}
                                    <select name='option_select_{$select_counter_var}_{$product_info.productID}'
                                        onchange='JavaScript:GetCurrentCurrency_{$product_info.productID}();'>
                                        {section name=j loop=$product_info.product_extra[i].values_to_select}
                                            {if $product_info.product_extra[i].values_to_select[j].variantID eq $product_info.product_extra[i].variantID}
                                                <option value='{$product_info.product_extra[i].values_to_select[j].price_surplus}:{$product_info.product_extra[i].values_to_select[j].variantID}' selected>
                                            {else}
                                                <option value='{$product_info.product_extra[i].values_to_select[j].price_surplus}:{$product_info.product_extra[i].values_to_select[j].variantID}'>
                                            {/if}
                                                {$product_info.product_extra[i].values_to_select[j].option_value}
                                            </option>
                                        {/section}
                                    </select>
                                {else}
                                    <select name='option_select_{$select_counter_var}_{$product_info.productID}'
                                        onchange='JavaScript:GetCurrentCurrency_{$product_info.productID}();'>
                                        <option value='0:-1'>{$smarty.const.NOT_DEFINED}</option>
                                        {section name=j loop=$product_info.product_extra[i].values_to_select}
                                            <option value='{$product_info.product_extra[i].values_to_select[j].price_surplus}:{$product_info.product_extra[i].values_to_select[j].variantID}'>
                                                {$product_info.product_extra[i].values_to_select[j].option_value}
                                            </option>
                                        {/section}
                                    </select>
                                {/if}
                            </td>
                        </tr>
                    {/section}
                {/if}
            {/section}

            </form>

            {if $select_counter_var != 0}
            <tr>
                <form action="index.php?productID={$product_info.productID}" method=post 
                        name="MainForm2_{$product_info.productID}"><td colspan=2>
                    
                    
                        {if $product_info.Price > 0}
                        <b>{$smarty.const.CURRENT_PRICE_OPTION}:<br></b>
                        {/if}

                        <input type=hidden value="{php}echo(getPriceUnit());{/php}" 
                            name="priceUnit_{$product_info.productID}">
                        {if $product_info.Price <= 0}
                            <input type=hidden value="" 
                                id="optionPrice_{$product_info.productID}">
                    
                        {else}
                            <input type=text value="" 
                                class=totalPrice 
                                readonly 
                                id="optionPrice_{$product_info.productID}">
                        {/if}
                    
                </td></form>
            </tr>
            {/if}

            {if $product_info.brief_description}
            <tr>
                <td colspan=2 bgcolor="#{$smarty.const.CONF_LIGHT_COLOR}">
                    {$product_info.brief_description}
                </td>
            </tr>
            {/if}


        </table>



        {if $select_counter_var != 0}
        <script langauge='JavaScript'>

            function GetCurrentCurrency_{$product_info.productID}()
            {literal}
            {
            {/literal}
                _selectionCount={$select_counter_var};
                _sum = {$product_info.PriceWithOutUnit};


                {counter name='select_counter2' start=1 skip=1 print=false 
                            assign='select_counter_var2'}
                {section name=i loop=$product_info.product_extra}
                    {section name=k loop=$product_info.product_extra[i].option_show_times}

                        _value =
                            document.MainForm1_{$product_info.productID}.option_select_{$select_counter_var2}_{$product_info.productID}.value;
                        price_surplus = ( _value.split(":") )[0];
                        _sum += new Number( price_surplus );
                        variantID = ( _value.split(":") )[1];
                        document.HiddenFieldsForm_{$product_info.productID}.option_select_hidden_{$select_counter_var2}_{$product_info.productID}.value = 
                            variantID;

                        {counter name=select_counter2}

                    {/section}
                {/section}

                _sumStr = new String(_sum);
                _commaIndex = _sumStr.indexOf(".");
                if ( _commaIndex == -1 )
                    _sumStr = _sum;
                else
                    _sumStr = _sumStr.substr(0, _commaIndex + 3);
                {php}
                    echo("locationPriceUnit=".getLocationPriceUnit().";\n");
                {/php}

                _sumStr = _formatPrice(_sumStr);

                if ( locationPriceUnit )
                    document.MainForm2_{$product_info.productID}.optionPrice_{$product_info.productID}.value = 
                        _sumStr + document.MainForm2_{$product_info.productID}.priceUnit_{$product_info.productID}.value;
                else
                    document.MainForm2_{$product_info.productID}.optionPrice_{$product_info.productID}.value = 
                        document.MainForm2_{$product_info.productID}.priceUnit_{$product_info.productID}.value + _sumStr;
            {literal}
            }
            {/literal}

            GetCurrentCurrency_{$product_info.productID}();

        </script>
        {/if}

    </td>
    </tr>
    </table>
    {/if}
    Добавлено через 3 минуты
     
Статус темы:
Закрыта.