Перейти к содержимому


Webasyst Shop-script

Webasyst Shop-script

  • Вы не можете ответить в тему
Сообщений в теме: 11

#1 jorgovich

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 36 сообщений
Репутация: 1
Начинающий

Отправлено 23 April 2013 - 06:46 AM

Здравствуйте уважаемые форумчане!
Обратился ко мне человек с просьбой помочь настроить дополнительные характеристики в WebAsyst магазине, до этого я не сталкивался с этим скриптом, но бегло посмотрев его понял что отличия от Shopcms есть и причем зачастую удивился, что он вроде как даже более поддерживаемый разработчиком, но нет некоторых привычных вещей как в shopcms.
Вот с одной из них я и сталкнулся в Shopcms прописана такая штука что если дополнительная характеристика одна то выводить не селектом, а просто текстом, в Webasyste такого нет там выводится select в шаблоне. product_detailed.tpl.html разбит еще на вспомогательные шаблоны: product_params_fixed.html - отвечает за произвольные значения, product_params_selectable.html - отвечает за варианты значений.

Собственно есть просьба о помощи помогите написать условие по аналогии с shopcms что если характеристика одна то выводить не селектом а текстом вот код product_params_selectable.html:
{if !$CPT_CONSTRUCTOR_MODE}
<table>
{counter name='select_counter' start=0 skip=1 print=false assign='select_counter_var'}
{section name=i loop=$product_extra}
{if $product_extra[i].option_type != 0 }
{section name=k loop=$product_extra[i].option_show_times}
<tr>	
  <td>
   {$product_extra[i].name|escape:'html'}{if $product_extra[i].option_show_times > 1 }({counter name=option_show_times}):{else}:{/if}
  </td>
  <td>
   {counter name=select_counter assign=_cnt}
  <select name='option_{$_cnt}' class="product_option">
  <option value='' rel="0">{"str_not_defined"|translate|escape:'html'}</option>
   {section name=j loop=$product_extra[i].values_to_select}
   <option value='{$product_extra[i].values_to_select[j].variantID}' rel='{$product_extra[i].values_to_select[j].price_surplus}'
   {if $product_extra[i].values_to_select[j].variantID == $product_extra[i].variantID}selected="selected"{/if}>
	{$product_extra[i].values_to_select[j].option_value}
   </option>
   {/section}
   </select>
  </td>
</tr>
{/section}
{/if}
{/section}
</table>
{else}
<table>
<tr>	
<td>Color:   </td>
<td>

<select name='option_select_1_71' onchange='GetCurrentCurrency_71()'>
<option value='0.00:8'>
white
</option>
<option value='0.00:5'>

yellow
</option>
<option value='0.00:6'>
green
</option>
</select>
</td>
</tr>
</table>
{/if}
а вот кусок кода из Shopcms отвечающая за выборку шаблон product_detailed.tpl.html
	  <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 }
			  {$product_info.product_extra[i].name}: {$product_info.product_extra[i].option_value}<br>
			  {else}
			  {section name=k loop=$product_info.product_extra[i].option_show_times}
			  {$product_info.product_extra[i].name}{if $product_info.product_extra[i].option_show_times > 1} ({$smarty.section.k.index+1}):{else}:{/if}
			  {counter name=select_counter}
			  {if $product_info.product_extra[i].values_to_select_count == 1} <b>{$product_info.product_extra[i].values_to_select[0].option_value}</b><br>
			  <input type="hidden" name="option_select_{$select_counter_var}_{$product_info.productID}" value='{$product_info.product_extra[i].values_to_select[0].price_surplus}:{$product_info.product_extra[i].values_to_select[0].variantID}'>
			  {else}
			  {if $smarty.section.k.index == 0}
			  <select name='option_select_{$select_counter_var}_{$product_info.productID}' onchange='GetCurrentCurrency_{$product_info.productID}();' class="WCHhider">
			  
{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}' {if $product_info.product_extra[i].values_to_select[j].variantID eq $product_info.product_extra[i].variantID}selected{/if}>{$product_info.product_extra[i].values_to_select[j].option_value}</option>
			  
{/section}
			  </select>
			  <br>
			  {else}
			  <select name='option_select_{$select_counter_var}_{$product_info.productID}' onchange='GetCurrentCurrency_{$product_info.productID}();' class="WCHhider">
				<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>
			  <br>
			  {/if}{/if}
			  {/section}
			  {/if}
			  {/section}
			</form>
			{if $product_info.product_extra_count > 0}
			<div class="fil"></div>
			{/if}
			{if $select_counter_var != 0}

  • 0

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 23 April 2013 - 12:23 PM

используйте {if $массив_вариантов|@count > 1}вывод выпадающим списком{else}вывод в одну строку{/if}
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 jorgovich

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 36 сообщений
Репутация: 1
Начинающий

Отправлено 24 April 2013 - 06:49 AM

Поставил условие, крах шаблона, точнее не крах а не отображает эти характеристики, т.о делаю вывод что условие работает но неправильно задано, по смарти не силен каждая строчка дается мозговыносом, если для кого плевое дело подскажите, судя по всему отрезок кода я правилно выбрал но с синтаксисом траблы:
<table>
{counter name='select_counter' start=0 skip=1 print=false assign='select_counter_var'}
{section name=i loop=$product_extra}
{if $product_extra[i].option_type != 0 }
{section name=k loop=$product_extra[i].option_show_times}
<tr>	
  <td>
   {$product_extra[i].name|escape:'html'}{if $product_extra[i].option_show_times > 1 }({counter name=option_show_times}):{else}:{/if}
  </td>
  <td>
   {counter name=select_counter assign=_cnt}
{if $product_extra[i].values_to_select_counter == 1} <b>{$product_extra[i].values_to_select[0].option_value}</b><br>
<input type="hidden" name="option_select_{$select_counter_var}" value='{$product_extra[i].values_to_select[0].price_surplus}:{$product_extra[i].values_to_select[0].variantID}'>
{else}
	  <select name='option_{$_cnt}' class="product_option">
  
   {section name=j loop=$product_extra[i].values_to_select}
   <option value='{$product_extra[i].values_to_select[j].variantID}' rel='{$product_extra[i].values_to_select[j].price_surplus}'
   {if $product_extra[i].values_to_select[j].variantID == $product_extra[i].variantID}selected="selected"{/if}>
    {$product_extra[i].values_to_select[j].option_value}
   </option>
   {/section}
   </select>
  </td>
</tr>
{/section}
{/if}
{/section}
</table>

  • 0

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 24 April 2013 - 10:51 AM

по смарти не силен каждая строчка дается мозговыносом

А никто еще не родился со знанием smarty. Но есть документация вполне на русском. Вариантов-то всего три:
- изучить инструмент, если хочется пользоваться
- платить тому, кто изучил
- (текущий вариант) выклянчивать решения на халяву

PS.
1. нет закрывающего {/if}
2. {="" if} что это за бред?
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 jorgovich

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 36 сообщений
Репутация: 1
Начинающий

Отправлено 24 April 2013 - 11:17 AM

код неправильно передался там такого не было поправил.
А вообще по поводу вариантов, у меня другое мнение, по первым двум пунктам абсолютно согласен, а по 3 не выклянчиваю, а прошу помочь, во первых я абсолютно уверен что это пойдет и на пользу людям, так как данный вопрос активно мучает многих пользователей на форуме Webasysta, что непосредственно принесет трафик и на этот форум. Да и сам делаю ему не за деньги, а в целях найти решение, и помочь знакомому с его магазином, потому как ему фрилансеры сделали за деньги и элементарных решений не внедрили. Не получится так не получится, получится выложу сюда..
  • 0

#6 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 24 April 2013 - 01:14 PM

Да и сам делаю ему не за деньги, а в целях найти решение, и помочь знакомому с его магазином,

Другими словами, Ваш знакомый делает магазин, чтобы зарабатывать деньги. Вы ему помогаете бесплатно потому, что это Ваш знакомый. Это понятно. Но хотите, чтобы и остальные ему забесплатно помогли зарабатывать деньги. При этом Вы не хотите потратить пару часов, чтобы прочитать документацию по Smarty и решить проблему самостоятельно. Как это назвать по другому кроме как "клянчить"?

во первых я абсолютно уверен что это пойдет и на пользу людям, так как данный вопрос активно мучает многих пользователей на форуме Webasysta

Что-то я не вижу связи между замученными людьми на профильном форуме и бесплатной помощью на этом :).

PS. Я не вижу по коду, почему бы там должно выводиться "пусто", а не единственный вариант хар-ки. Может, он и правда пустой?
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#7 jorgovich

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 36 сообщений
Репутация: 1
Начинающий

Отправлено 24 April 2013 - 01:36 PM

Да не клянчаю, форум ведь для того и нужен чтоб находить решение, то что у меня занимает часы, кто-нибудь сможет за секунду найти ошибку в коде, которую я пропустил по невнимательности, или я не прав мое мнение форум и нужен для двух вещей новичкам учиться и находить решения, профи зарабатывать, но профи не докажет, что он профи просто трепя языком и кидаясь выражениями которые каждый знает.
  • 0

#8 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 24 April 2013 - 01:59 PM

новичкам учиться и находить решения

Золотые слова. Особенно второе :).

Короче, я потратил-таки десять минут на сравнение этого кода и родного кода shopCMS. Отличий и ошибок не нашел. Т.е. дело, видимо, в данных, а не в синтаксисе.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#9 jorgovich

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 36 сообщений
Репутация: 1
Начинающий

Отправлено 24 April 2013 - 02:23 PM

Спасибо, похоже счетчик по другому как то переменная не эта которую я взял из Шопцмса
{if $product_extra[i].values_to_select_counter == 1}
Хотя в product_detailed из Webasyst он такой же... почему то в шаблоне для selecta не работает
попробовал просто selectы заментить текстовыми полями со скрытым инпутом для отправки формы все нормально отрабатывает
Вообще смотрю код в обоих цмсках очень похож различия только, что поделили шаблон еще на несколько частей и переопределили некоторые переменные, буду искать что откуда берется
  • 0

#10 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 24 April 2013 - 02:51 PM

Спасибо, похоже счетчик по другому как то переменная не эта которую я взял из Шопцмса

Использовать несуществующую переменную только потому, что переменная с таким именем есть в другой CMS - это сильно.
Что мешает использовать решение, которое я написал в самом начале - {if $product_extra[i].values_to_select|@count == 1}
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#11 jorgovich

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 36 сообщений
Репутация: 1
Начинающий

Отправлено 24 April 2013 - 06:19 PM

Нет эта переменная есть в обоих скриптах в шаблоне product.detailed.tpl, но в webasyst- product.detailed.tpl разбит еще на несколько шаблонов, один из них product_params_selectable.html который отвечает за характеристики, который я и правлю..
{if $product_extra[i].values_to_select|@count == 1} попробую завтречком..
  • 0

#12 hinter79

    Новичок

  • Пользователи
  • Pip
  • 5 сообщений
Репутация: 0
Начинающий

Отправлено 19 March 2016 - 03:45 PM

{if count($product_extra[i].values_to_select|) == 1}
  • 0