Мод "Отображать только наличие" для Shop-script

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

Статус темы:
Закрыта.
  1. dvdiamond

    dvdiamond Создатель

    Регистр.:
    4 окт 2007
    Сообщения:
    26
    Симпатии:
    10
    Давно искал, не нашел - пришлось делать самому.
    При "вкл./выкл." галки чекбокса отображается "только наличие/весь товар". По умолчанию галка выкл. => надо помнить про ссылочные биржи ;)
    В течение сессии сохраняется состояние чекбокса, мод работает при простом поиске, сортировке. Включить галку можно на страницах категорий или на странице результата простого поиска.
    Итак. Shop-script premium 1.24. Шаблон 12 (другие шаблоны по аналогии). Изменения будут вноситься в 11 файлов. Очень рекомендую сохранить неизмененные версии.

    1. файл category.php
    ищем
    Код:
    $sort_string = STRING_PRODUCT_SORT;
    идущий после блок сортировки меняем на условие
    Код:
    			if ($_SESSION['storage']==1) {
    			$sort_string = str_replace( "{ASC_NAME}",   "<a href='".$urlToSort."&sort=name&direction=ASC&storage=1'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_NAME}",  "<a href='".$urlToSort."&sort=name&direction=DESC&storage=1'>".STRING_DESC."</a>",	$sort_string );
    			$sort_string = str_replace( "{ASC_PRICE}",   "<a href='".$urlToSort."&sort=Price&direction=ASC&storage=1'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_PRICE}",  "<a href='".$urlToSort."&sort=Price&direction=DESC&storage=1'>".STRING_DESC."</a>",	$sort_string );
    			$sort_string = str_replace( "{ASC_RATING}",   "<a href='".$urlToSort."&sort=customers_rating&direction=ASC&storage=1'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_RATING}",  "<a href='".$urlToSort."&sort=customers_rating&direction=DESC&storage=1'>".STRING_DESC."</a>",	$sort_string );} 
                            else {			
    			$sort_string = str_replace( "{ASC_NAME}",   "<a href='".$urlToSort."&sort=name&direction=ASC'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_NAME}",  "<a href='".$urlToSort."&sort=name&direction=DESC'>".STRING_DESC."</a>",	$sort_string );
    			$sort_string = str_replace( "{ASC_PRICE}",   "<a href='".$urlToSort."&sort=Price&direction=ASC'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_PRICE}",  "<a href='".$urlToSort."&sort=Price&direction=DESC'>".STRING_DESC."</a>",	$sort_string );
    			$sort_string = str_replace( "{ASC_RATING}",   "<a href='".$urlToSort."&sort=customers_rating&direction=ASC'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_RATING}",  "<a href='".$urlToSort."&sort=customers_rating&direction=DESC'>".STRING_DESC."</a>",	$sort_string );}
    2. файл category.tpl.html
    а) в самое начало вставляем скрипт
    Код:
    {literal}
    <script language="Javascript">
    <!--
    function storcheck(fff) {
     var curr_loc = new String(window.location.href);
            
    if (fff.checked==true)
    { new_loc = curr_loc+ "&storage=1";
             window.location = new_loc;
    //alert(new_loc);
    }  else if (fff.checked==false)
     { 
      re = /&storage=\d{1}/gi
      new_loc = curr_loc.replace(re, "");
      window.location = new_loc;
     //alert(new_loc);
     }
    }
    -->
    </script>
    {/literal}
    б) Чек-бокс у меня расположен над формой расширенного поиска. Для приведенной надписи надо подкорректировать ширину таблиц - 30 и 70% вместо 25 и 75%. Если форма отключена - измените место самостоятельно.
    Ищем код
    Код:
    {include file="advanced_search_in_category.tpl.html"}
    Перед ним вставляем
    Код:
    <input type=checkbox {php} if ($_GET["storage"]==1)  {echo "checked";} else {echo "unckecked";}{/php} onclick='storcheck(this)'>
    <font class="voting">Показать только наличие</font>
    в) ищем
    Код:
    {if $product_category_path[i].categoryID != 1}
    идущую после ссылку меняем на
    Код:
    <a class="cat" href="index.php?categoryID={$product_category_path[i].categoryID}{php}if ($_GET['storage']==1) echo "&storage=1";{/php}">{$product_category_path[i].name}</a>
    г) ищем
    Код:
    {section name=i loop=$subcategories_to_be_shown}
    идущую после ссылку меняем на
    Код:
    <a class=standard href="index.php?categoryID={$subcategories_to_be_shown[i][0]}{php}if ($_GET['storage']==1) echo "&storage=1";{/php}">{$subcategories_to_be_shown[i][1]}</a>
    3. файл category_search_result.php


    ищем
    Код:
    $sort_string = STRING_PRODUCT_SORT;
    идущий после блок сортировки меняем на условие
    Код:
    			if ($_SESSION['storage']==1) {
    			$sort_string = str_replace( "{ASC_NAME}",   "<a href='".$urlToSort."&sort=name&direction=ASC&storage=1'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_NAME}",  "<a href='".$urlToSort."&sort=name&direction=DESC&storage=1'>".STRING_DESC."</a>",	$sort_string );
    			$sort_string = str_replace( "{ASC_PRICE}",   "<a href='".$urlToSort."&sort=Price&direction=ASC&storage=1'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_PRICE}",  "<a href='".$urlToSort."&sort=Price&direction=DESC&storage=1'>".STRING_DESC."</a>",	$sort_string );
    			$sort_string = str_replace( "{ASC_RATING}",   "<a href='".$urlToSort."&sort=customers_rating&direction=ASC&storage=1'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_RATING}",  "<a href='".$urlToSort."&sort=customers_rating&direction=DESC&storage=1'>".STRING_DESC."</a>",	$sort_string );} else {
    			
    			$sort_string = str_replace( "{ASC_NAME}",   "<a href='".$urlToSort."&sort=name&direction=ASC'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_NAME}",  "<a href='".$urlToSort."&sort=name&direction=DESC'>".STRING_DESC."</a>",	$sort_string );
    			$sort_string = str_replace( "{ASC_PRICE}",   "<a href='".$urlToSort."&sort=Price&direction=ASC'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_PRICE}",  "<a href='".$urlToSort."&sort=Price&direction=DESC'>".STRING_DESC."</a>",	$sort_string );
    			$sort_string = str_replace( "{ASC_RATING}",   "<a href='".$urlToSort."&sort=customers_rating&direction=ASC'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_RATING}",  "<a href='".$urlToSort."&sort=customers_rating&direction=DESC'>".STRING_DESC."</a>",	$sort_string );}
    4. файл category_tree.tpl.html
    ищем
    Код:
    {* not selected node => make a link to a category *}
    идущую после ссылку заменяем на
    Код:
    <a href="index.php?categoryID={$categories_tree[i].categoryID}{php} if ($_SESSION['storage']==1) echo "&storage=1";{/php}">{$categories_tree[i].name}</a>
    
    5. файл functions.php
    ищем
    Код:
    ShowNavigator( $count, $offset, $countRowOnPage, $url."&", $out);
    после вставляем
    Код:
    	if ($_GET['storage']==1)
    	{$out2=explode("\">",$out);
    	for ($i=0;$i<count($out2)-1;$i++)
    	$out2[$i].='&storage=1';
    	$out=implode("\">",$out2);
    	}
    6. файл home.tpl.html
    а) ищем
    Код:
    ({$root_categories[i][2]})
    ссылку перед меняем на
    Код:
    <a href="index.php?categoryID={$root_categories[i][0]}{php}if ($_SESSION['storage']==1) echo "&storage=1";{/php}">{$root_categories[i][1]}</a>
    б) ищем
    Код:
    {assign var="tmp" value=1}
    ссылку после меняем на
    Код:
    <a href="index.php?categoryID={$root_categories_subs[j][0]}{php}if ($_SESSION['storage']==1) echo "&storage=1";{/php}">{$root_categories_subs[j][1]}</a>
    7. файл index.php
    ищем
    Код:
    $smarty_mail = new Smarty; //for e-mails
    после добавляем
    Код:
    	if (strstr($_SERVER['REQUEST_URI'],'categoryID') || strstr($_SERVER['REQUEST_URI'],'searchstring') )
    	$_SESSION["storage"]=$_GET["storage"];
    8. файл index.tpl.html
    ищем
    Код:
    <input type="image" src="images/tmpl12_go_1.gif" style="width:13px; height:11px">
    после добавляем
    Код:
    {php}if ($_SESSION['storage']==1) echo "<input type=hidden name='storage' value=1>"{/php}
    9. файл product_functions.php
    а) ищем
    Код:
    			if ( $where_clause != "" )
    			{
    				$where_clause = " where categoryID>1 and enabled=1 and ".$where_clause;
    			}
    			else
    			{
    				$where_clause = "where categoryID>1 and enabled=1";
    			}
    меняем на
    Код:
    			if ($_SESSION['storage']==1){
    			if ( $where_clause != "" ){$where_clause = " where categoryID>1 and enabled=1 and in_stock >0 and ".$where_clause;}
    			else{$where_clause = "where categoryID>1 and enabled=1";}
    			}else{
    			if ( $where_clause != "" ){$where_clause = " where categoryID>1 and enabled=1 and ".$where_clause;}
    			else{$where_clause = "where categoryID>1 and enabled=1";}
    			}
    б) ищем
    Код:
    			{
    				$where_clause = _getConditionWithCategoryConjWithSubCategories( $where_clause, 
    											$callBackParam["categoryID"] );
    			}
    меняем на
    Код:
    			{ if ($_GET['storage']==1)
    				$where_clause = "( ". _getConditionWithCategoryConjWithSubCategories( $where_clause, 
    											$callBackParam["categoryID"] ) .") and in_stock>0";
    			  else $where_clause = _getConditionWithCategoryConjWithSubCategories( $where_clause, 
    											$callBackParam["categoryID"] ) ;
    			}
    10. файл search_simple.php
    ищем
    Код:
    $sort_string = STRING_PRODUCT_SORT;
    идущий после блок сортировки меняем на условие
    Код:
    			if ($_SESSION['storage']==1) {
    			$sort_string = str_replace( "{ASC_NAME}",   "<a href='".$urlToSort."&sort=name&direction=ASC&storage=1'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_NAME}",  "<a href='".$urlToSort."&sort=name&direction=DESC&storage=1'>".STRING_DESC."</a>",	$sort_string );
    			$sort_string = str_replace( "{ASC_PRICE}",   "<a href='".$urlToSort."&sort=Price&direction=ASC&storage=1'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_PRICE}",  "<a href='".$urlToSort."&sort=Price&direction=DESC&storage=1'>".STRING_DESC."</a>",	$sort_string );
    			$sort_string = str_replace( "{ASC_RATING}",   "<a href='".$urlToSort."&sort=customers_rating&direction=ASC&storage=1'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_RATING}",  "<a href='".$urlToSort."&sort=customers_rating&direction=DESC&storage=1'>".STRING_DESC."</a>",	$sort_string );} else {
    			
    			$sort_string = str_replace( "{ASC_NAME}",   "<a href='".$urlToSort."&sort=name&direction=ASC'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_NAME}",  "<a href='".$urlToSort."&sort=name&direction=DESC'>".STRING_DESC."</a>",	$sort_string );
    			$sort_string = str_replace( "{ASC_PRICE}",   "<a href='".$urlToSort."&sort=Price&direction=ASC'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_PRICE}",  "<a href='".$urlToSort."&sort=Price&direction=DESC'>".STRING_DESC."</a>",	$sort_string );
    			$sort_string = str_replace( "{ASC_RATING}",   "<a href='".$urlToSort."&sort=customers_rating&direction=ASC'>".STRING_ASC."</a>",	$sort_string );
    			$sort_string = str_replace( "{DESC_RATING}",  "<a href='".$urlToSort."&sort=customers_rating&direction=DESC'>".STRING_DESC."</a>",	$sort_string );}
    11. файл search_simple.tpl.html
    а) в начало файла добавить скрипт
    Код:
    {literal}
    <script language="Javascript">
    <!--
    function storcheck(fff) {
     var curr_loc = new String(window.location.href);
            
    if (fff.checked==true)
    { new_loc = curr_loc+ "&storage=1";
             window.location = new_loc;
    //alert(new_loc);
    }  else if (fff.checked==false)
     { 
      re = /&storage=\d{1}/gi
      new_loc = curr_loc.replace(re, "");
      window.location = new_loc;
     //alert(new_loc);
     }
    }
    -->
    </script>
    {/literal}
    б) ищем
    Код:
    {$smarty.const.STRING_PRODUCTS}
    после добавляем
    Код:
    <br><input type=checkbox {php} if ($_GET["storage"]==1)  {echo "checked";} else {echo "unckecked";}{/php} onclick='storcheck(this)'> <font class="voting">Показать только наличие</font>

    Недоделал расширенный поиск - лень :)
    Если что пропустил - не бейте - довольно много переделок.. Отремонтируйте сами ;)

    Добавлено через 21 минуту
    Напрягся, и доделал расширенный поиск.
    файл advanced_search_in_category.tpl.html
    ищем в самом конце
    Код:
    <input type=submit class="bbcodes" value='{$smarty.const.FIND_BUTTON}' name='advanced_search_in_category'>
    после добавляем
    Код:
    {php}if ($_SESSION['storage']==1) echo "<input type=hidden name='storage' value=1>"{/php}
     
    onenures, mcwolf, nafanyaa и 3 другим нравится это.
Статус темы:
Закрыта.