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

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

baltazor-vova

Профессор
Регистрация
4 Авг 2009
Сообщения
107
Реакции
35
Как перенести в конец списка товар который равен 0 в Shop Script Premium, или чтобы пользователи не смогли его видеть! Искал по форуму именно для движка Шоп скрипт Премиум не нашел!Помогите плиз!
 
По-моему я вот в этой Для просмотра ссылки Войди или Зарегистрируйся про это же спрашиваю.

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

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

Только никто мне не ответил как это сделать.
 
Есть же поле сортировка. По умолчанию значение 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;
 
Да спасибо конечно работает отлично, но тут одна проблемка, когда раза 2-3 обновляешь базу дублируется товар, да понимаю что не по теме но все же! Например у поставщика изменился код товара а при обновлении аутентификация по коду товара, да можно и по наименованию, но в прайсе также возможно добавится какой то символ и это уже новый товар! Вопрос такой как можно запросом SQL убирать дублированый товар, но при этом важно чтобы сохранялся предыдущий з описанием и картинкой!
________________________________________________________________

И буду признательным если ответите еще на 2 вопрос - Например у меня закончился товар пропала функция добавления в корзину, я не хочу чтобы показывалась цена на товар который отсутствует, а выводилась скажем надпись "товар не доступен", понимаю что можно и в админке это зделать но у меня база на 8500 товаров! Помогите плиз:bc::bc::bc::bc::thenks:
 
По первому пункту одним запросом такое решить врядли получится. Да и вообще программно такое как сделаешь? Завтра в названии запятая новая появится или пробел так же и в коде товара. Тут кроме как глазами сравнивать?
А по второму вопросу проще. Поставьте в шаблонах
product_detailed.tpl.html и product_brief.tpl.html
цену между условий

И все. Цена будет отображаться только так где есть товар.
 
Вот кусок кода, впринципе у меня не получается, возможно из за того что у меня 2 валюты показуются одновременно!


PHP:
{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" id='currentPrice'>
								{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[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
 
Да не имеет значение количества валют. Условие-то на количество товара.
Что значит у вас не получается?
 
Стыдно признаться но не получается буду очень благодарен если ткнете на код который нада заменить, поставить в product_brief. product_detailed:thenks::ah:!, а то люди видят цену но не смотрят на значек корзины и думают что товар есть!
 
Я же не знаю полного кода вашей страницы и не могу сказать точное место. Поробуйте заключить весь тот кусок который вы процитировали. Вам проще методом тыка это сделать. Навредить у вас там не получится ни как. Поставьте поробуйте посмотрите как будет выглядеть. Если не попадет цена вы ее увидите, а если прихватите туда чего лишлего..то картинка поплывет. 5 минут экспериментов и все.
 
Поверьте я уже вчера целую ночь сидел, тыкал никакого толка....!
Если не затруднит посмотрит это из product_brief
PHP:
{* product brief view (from a category or search) *}


{if $product_info ne NULL}

<p>
<table width=100% border=0 cellspacing=1 cellpadding=2 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}
		<a 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}
			<a 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=0; i<ComparedProducts1.length; i++)
						if ( ComparedProducts1[i] == {$product_info.productID} )
						{literal}
						{
						{/literal}
							_index = i;
							break;
						{literal}
						}
						{/literal}

					if ( _checked )
					{literal}
					{
					{/literal}
						if ( _index == -1 )
						{literal}
						{
						{/literal}
							ComparedProducts1.push( {$product_info.productID} );
							ComparedProducts2.push( {$product_info.productID} );
						{literal}
						}
						{/literal}
					{literal}
					}
					{/literal}
					else
					{literal}
					{
					{/literal}
						if ( _index != -1 )
						{literal}
						{
						{/literal}
							ComparedProducts1.splice( _index, 1 );
							ComparedProducts2.splice( _index, 1 );
						{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 минуты
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху