Jump to content

Recommended Posts

Всем привет!

Как можно реализовать вывод цены, даже если товара нет в наличии?

Уверен что вопрос решается парой строчек, не подскажете куда копать?

Link to post
Share on other sites

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

Link to post
Share on other sites

Всем привет!

Как можно реализовать вывод цены, даже если товара нет в наличии?

Уверен что вопрос решается парой строчек, не подскажете куда копать?

Напишите в личку или скайп.

Link to post
Share on other sites

Убрать ограничение на вывод отсутствующих товаров можно убрав фильтр 'in_stock'=>true из выборки вариантов. Это одинаковая операция во всех ниэжеприведенных файлах (предвкушая ехидство со стороны Корса - я считаю, что это 1 строка кода)
view/ProductsView.php строка 163

$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));

на

$variants = $this->variants->get_variants(array('product_id'=>$products_ids));

view/ProductView.php строка 36

foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v)

на 

foreach($this->variants->get_variants(array('product_id'=>$product->id)) as $v)

view/View.php строки 187, 233, 278 

$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));

на

$variants = $this->variants->get_variants(array('product_id'=>$products_ids));

Теперь у нас в товарах выводятся отсутствующие варианты, но они активны для заказа, хотя их положить туда нельзя, т.к. нулевой остаток. Поэтому в шаблонах напишем вторую строчку кода (это для счетчика Корса) - сделаем вместо

<input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>

заменим на что-то типа

{if $v->stock}<input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>{/if}

Конечно в каждом шаблоне есть свои особенности, но тут важно проверить $v->stock и не дать клиенту сделать заявку на товар, у которого $v->stock меньше 1.

Link to post
Share on other sites

Корс, чего ты прикопался с шаблону? Ты хочешь сказать, что твой уникальный код работает и с радиокнопками и с селектом?

Link to post
Share on other sites
  • 3 weeks later...

Убрать ограничение на вывод отсутствующих товаров можно убрав фильтр 'in_stock'=>true из выборки вариантов. Это одинаковая операция во всех ниэжеприведенных файлах (предвкушая ехидство со стороны Корса - я считаю, что это 1 строка кода)

view/ProductsView.php строка 163

$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));

на

$variants = $this->variants->get_variants(array('product_id'=>$products_ids));

view/ProductView.php строка 36

foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v)

на 

foreach($this->variants->get_variants(array('product_id'=>$product->id)) as $v)

view/View.php строки 187, 233, 278 

$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));

на

$variants = $this->variants->get_variants(array('product_id'=>$products_ids));

Теперь у нас в товарах выводятся отсутствующие варианты, но они активны для заказа, хотя их положить туда нельзя, т.к. нулевой остаток. Поэтому в шаблонах напишем вторую строчку кода (это для счетчика Корса) - сделаем вместо

<input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>

заменим на что-то типа

{if $v->stock}<input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>{/if}

Конечно в каждом шаблоне есть свои особенности, но тут важно проверить $v->stock и не дать клиенту сделать заявку на товар, у которого $v->stock меньше 1.

Все отлично работает. Даже если шаблон не дефолтный. Сделал так.

               {if $product->variant->price >0}<input type="submit" class="but_add to_cart" value="" data-result-text=""/>{/if}
			</form>
		{else}
		<div class="price"><i style='margin:0;' title='Нет на складе'><br />Нет в наличии</i></div>
		{/if}

обернуть в {if $v->stock}.........{/if}, и получаем

{if $v->stock}{if $product->variant->price >0}<input type="submit" class="but_add to_cart" value="" data-result-text=""/>{/if}
			</form>
		{else}
		<div class="price"><i style='margin:0;' title='Нет на складе'><br />Нет в наличии</i></div>{/if}
		{/if}

В итоге, если товар отсутствует, выводится цена и надпись "Нет в наличии" :)

Link to post
Share on other sites

Интересно, пробовал кто-то предложенный здесь способ? Получается?

 

Автор способа на мои вопросы-замечания не реагирует.

ТС о результатах применения ничего не сообщает...

Предложенный здесь способ проверял. Получается.

Djep, В Вашем последнем небольшом посте легко увидеть массу ошибок.

1. Вы пишете, что "Полное решение в посте #5". И тут же зачем-то добавляете какой-то код. Для чего это нужно, если полное решение уже дано ранее? Возможно, имеете в виду, что полное решение - это пост #5 плюс написанная Вами добавка.

2. Теперь перейдем к обсуждению существа Вашего предложения. С ходу видно полное безобразие: при предлагаемом изменении тег </form> иногда выводится на странице, иногда нет. Легко придумать ситуацию, когда он выводиться не будет. Поскольку на странице может быть несколько подобных форм, то ошибка в формировании одних форм может приводить к ошибкам в работе и других форм, в том числе и правильно сформированных...

3. В Вашем условии используется {if $v->stock}. В данном контексте $v означает последний вариант товара. Следовательно, это далеко не то условие, по которому надо определять, отсутствует товар в наличии или нет. Опять-таки несложно придумать ситуацию, когда проявится грубая ошибка.

4. Судя по вышеизложенному, Вы писали свое предложение на ходу, небрежно, и совсем не проверяли даже простейшие ситуации. Не самый лучший стиль работы для программиста...

то есть способ работает...... :lol:

Link to post
Share on other sites
  • 1 month later...
  • 4 weeks later...

 

Теперь у нас в товарах выводятся отсутствующие варианты, но они активны для заказа, хотя их положить туда нельзя, т.к. нулевой остаток. 

 

Как сделать чтоб при нулевом остатке всетаки можно было добавить в корзину?

Link to post
Share on other sites

Как сделать чтоб при нулевом остатке всетаки можно было добавить в корзину?

В api/Cart.php убрать ограничение

			// Не дадим больше чем на складе
			$amount = min($amount, $variant->stock);

Но потом надо и на странице корзины доработать...

Link to post
Share on other sites

Не думаю что данная доработка стоит 700 руб, при условии что практически все сделано. Спасибо.

 

В api/Cart.php убрать ограничение

			// Не дадим больше чем на складе
			$amount = min($amount, $variant->stock);

Но потом надо и на странице корзины доработать...

Большое спасибо! Все получилось! ;)  

Link to post
Share on other sites

Я не могу найти в каком файле это изменять?

 

 

Все отлично работает. Даже если шаблон не дефолтный. Сделал так.

               {if $product->variant->price >0}<input type="submit" class="but_add to_cart" value="" data-result-text=""/>{/if}
			</form>
		{else}
		<div class="price"><i style='margin:0;' title='Нет на складе'><br />Нет в наличии</i></div>
		{/if}

обернуть в {if $v->stock}.........{/if}, и получаем

{if $v->stock}{if $product->variant->price >0}<input type="submit" class="but_add to_cart" value="" data-result-text=""/>{/if}
			</form>
		{else}
		<div class="price"><i style='margin:0;' title='Нет на складе'><br />Нет в наличии</i></div>{/if}
		{/if}

В итоге, если товар отсутствует, выводится цена и надпись "Нет в наличии" :)

Link to post
Share on other sites

В api/Cart.php убрать ограничение

			// Не дадим больше чем на складе
			$amount = min($amount, $variant->stock);

Но потом надо и на странице корзины доработать...

Стесняюсь спросить, что именно на странице корзины доработать?

Link to post
Share on other sites

Поправить выбор количества.

 

Я сделал ограничение в 9 товаров указав loop=10

 

Тоесть нужно заменить в шаблоне cart.tpl

 

{section name=amounts start=1 loop=$purchase->variant->stock+1 step=1}
 

 

на

 

{section name=amounts start=1 loop=10 step=1}
 

 

 

Но в корзину можно добавить и более 9 шт, добавив товар со страницы товара, но это мелочи.

Link to post
Share on other sites

Поправить выбор количества.

 

Я сделал ограничение в 9 товаров указав loop=10

 

Тоесть нужно заменить в шаблоне cart.tpl

 

{section name=amounts start=1 loop=$purchase->variant->stock+1 step=1}
 

 

на

 

{section name=amounts start=1 loop=10 step=1}
 

 

 

Но в корзину можно добавить и более 9 шт, добавив товар со страницы товара, но это мелочи.

Сделал немного по другому, но этот вариант то же обязательно попробую. Спасибо.

Link to post
Share on other sites
  • 1 month later...

нужно дорабатывать, так как заказы сделаные на товары с количеством 0, потом ведут себя не корректно. Когда количество появляется, при переносе из новых в принятые или выполненные  количество не отнимается, зато если обратно, добавляется 1 штука.

если удалять, добавляется 1 шт.

 

Так же нельзя добавить товар в заказ через админку если количество 0

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...