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

Статус
В этой теме нельзя размещать новые ответы.

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}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху