Astra.CMS

 

 

Форум » Приемы конструирования и интеграции дизайна

Шаг заказа

Стоит ли открыть форум? Напишите об этом по адресу admin@astracms.ru написав в теме "открыть форум". Я не автор движка и поэтому не могу консультировать так, как это делал бы он, но возможно у нас получится совместно находить решения.

Автор Текст сообщения

Maksim
Сообщений: 277

Подскажите пожалуйста, возможно ли каким-то способом сделать, "шаг заказа"? Например, цена указана за 1 метр, а заказать минимально можно 5 метров?
 
aristoc

admin
Сообщений: 1159

Можно попробовать сделать доп. поле для указания шага. И потом его использовать в шаблоне корзины, например для умножения заданного количества на этот шаг.
 

Maksim
Сообщений: 277

Спасибо большое, сделал вычисления по этому принципу (последнее ваше сообщение). Но возникает проблема в итоговой сумме, и итоговой сумме в шаблоне уведомления о заказе. Подсчет идет от единицы товара и соответственно "умножение" пропадает в итоговой сумме, которая в том числе суммируется с доставкой. Может, есть выход из данной ситуации?
 
aristoc

admin
Сообщений: 1159

Возможно лучше не просто умножать заданное количество на шаг. А корректировать само количество в зависимости от шага. Т.е. если задано количество товара 1, и у него шаг 5, то устанавливать принудительно количество кратное шагу и отправлять форму корзины для сохранения.
Либо пересчитывать общую сумму тоже в шаблоне.
 

Maksim
Сообщений: 277

Не понял как это сделать. Подскажите пожалуйста, в каких шаблонах/файлах можно "откорректировать количество" в зависимости от шага? unsure Если просто умножать количество на шаг в шаблоне корзина и заказа, то, не идет пересчет суммы, а при обновлении товар постоянно перемножается smile  
 
aristoc

admin
Сообщений: 1159

В шаблоне корзины, в цикле формируются записи о товарах с указание м количества.
...
<input type="text" name="count_{$basket[i].id}" value="{$basket[i].count}">
...
Можно поставить условие чтобы проверять кратность количества заданному шагу.
{if $basket[i].count % $basket[i].data.step >0}
<input type="text" name="count_{$basket[i].id}" value="{$basket[i].count} + ($basket[i].data.step - $basket[i].count % $basket[i].data.step)}">
{assign var="recalc" value=true} {метка, что надо пересчитать заказ}
{else}
<input type="text" name="count_{$basket[i].id}" value="{$basket[i].count}">
{/if}

...  {*где то после формы*}

<script>
{if $recalc} 
document.forms.basketform.submit();
{/if}
</script>
...
При первом открытии страницы, если количество задано некратное шагу, то оно увеличится до шага, и форма сразу обновится.

Как-то так.
 

Maksim
Сообщений: 277

Спасибо большое за пример, только у меня ничего не получилось sad Просто скопировал этот код и исправил только - {$basket.count} + ($basket, убрав "}" после count и ничего не обновляется. <script> еще в literal заключил.
 
aristoc

admin
Сообщений: 1159

Пробелы в выражениях лишние.
{if $basket[i].data.step>1 && $basket[i].count%5>0}
<input type="text" name="count_{$basket[i].id}" value="{$basket[i].count+$basket[i].data.step-$basket[i].count%$basket[i].data.step}">
{assign var="recalc" value=true}
{else}
<input type="text" name="count_{$basket[i].id}" value="{$basket[i].count}">
{/if}
 

Maksim
Сообщений: 277

Спасибо большое все получилось, только кроме обновления самой страницы, добавляется изначально только один товар, но в корзине в количестве отображено 5, обновление происходит только когда нажать кнопку "обновить" в самой корзине.
{literal}
<script>
{if $recalc} 
document.forms.basketform.submit();
{/if}
</script>
{/literal}
этот код запихнул в header страницы и в конце страницы, он также ни чего не дает sad
 
aristoc

admin
Сообщений: 1159

У формы надо чтобы был атрибут name="basketform"
Код скрита, должен быть где-то после формы, в конце страницы.
 
aristoc

admin
Сообщений: 1159

И в {literal} его брать не надо. Внутри же условие шаблонизатора стоит.
 

Maksim
Сообщений: 277

Спасибо большое все здорово работает!
Подскажите пожалуйста, а как быть с блоком "корзина", есть ли возможность его обновлять?
 

Maksim
Сообщений: 277

Спасибо большое все здорово работает!
Подскажите пожалуйста, а как быть с блоком "корзина", есть ли возможность его обновлять?
 
aristoc

admin
Сообщений: 1159

При пересчете корзины меняется информация и в блоке.
 

Вы не можете добавить сообщение. Вам необходимо авторизироваться на сайте под своим логином либо зарегистрироваться.