Minishop2 кнопка сделать заказ

всем привет, подскажите пож как сделать после нажатия кнопки сделать заказ редирект на гланую страницу?
а то нажимаю кнопку сделать заказ- заказ добавляется, но страница не перегружается и данные не стираются, словно форма и не работает

сам чанк оформления заказа

<h1>[[*pagetitle]]</h1>
<div id="msProduct" class="row">
  <div class="col-md-6">
	[[!msGallery]]
  </div>
  <div class="col-md-6">

	<form class="ms2_form" method="post">
	  <input type="hidden" name="id" value="[[*id]]"/>
	  <div class="form-group">
		<label class="col-md-2 control-label">[[%ms2_product_article]]:</label>
		<div class="col-md-10 form-control-static">
		  [[+article:default=`-`]]
		</div>
	  </div>
	  <div class="form-group">
		<label class="col-md-2 control-label" >[[%ms2_product_price]]:</label>
		<div class="col-md-10 form-control-static">
		  [[+price]] [[%ms2_frontend_currency]]
		  [[+old_price:gt=`0`:then=`
		  <span class="old_price">[[+old_price]] [[%ms2_frontend_currency]]</span>
		  `:else=``]]
		</div>
	  </div>


	  <div class="form-group form-inline " style="margin-bottom:15px;">
		<label class="col-md-2 control-label" for="product_price">[[%ms2_cart_count]]:</label>
		<div class="col-md-10">
		  <input type="number" name="count" id="product_price" class="input-sm form-control" value="1" style="width: 120px; margin-left: 15px;margin-bottom: 10px;"/>
		  [[%ms2_frontend_count_unit]]

		</div>

	  </div>

	  [[msOptions?options=`color,size`]]
	  
	  [[msProductOptions]]
	  <div class="col-md-10">
	  <p style="color: #6d6d6d;">Страна:<span style="padding-left: 30px;">[[+made_in]]</span></p>
	  </div>
	  <div class="col-md-10">
	   [[*avaible:eq=`1`:then=`<p class="availability in-stock">Доступность: <span>В наличии</span></p>`]]
		[[*avaible:eq=`2`:then=`<p class="availability in-stock">Доступность: <span>Под заказ</span></p>`]]
		[[*avaible:eq=`0`:then=`<p class="availability in-stock">Доступность: <span>Нет наличии</span></p>`]]
	  </div>
	 [[*avaible:neq=`0`:then=` <div class="form-group">
		<div class="col-md-offset-2 col-md-10 ">
		  <button type="submit" class="btn add-to-cart" name="ms2_action" value="cart/add">
			<span> В корзину</span>
		  </button>
		  
		</div>
	  </div>`]]
	</form>
  </div>
</div>
<div class="single-product-description"> 
  <div class="row">
	<div class="col-md-12">
	  <div class="product-description-tab">
		<!-- tab bar -->
		<ul class="nav nav-tabs" role="tablist">
		  <li class="active"><a href="#product-des" data-toggle="tab">Описание</a></li>
		  <li><a href="#product-rev" data-toggle="tab">Отзывы</a></li>
		  
		</ul>
		<!-- Tab Content -->
		<div class="tab-content">
		  <div class="tab-pane active" id="product-des">
			[[*content]]
		  </div>
		  <div class="tab-pane" id="product-rev">
			<div class="row">
			  [[!modxTalks]]
			</div>
		  </div>
		  
		</div>
	  </div>
	</div>
  </div>
  
</div>
Максим
17 октября 2016, 10:22
modx.pro
3 189
0

Комментарии: 15

Дмитрий Меркурьев
17 октября 2016, 14:18
0
Добавление в корзину происходит ajax-ом. Если вам нужен именно редирект на главную, то можно добавить callback в js

$(function(){
    if (typeof miniShop2 !== "undefined"){
        miniShop2.Callbacks.add('Cart.add.response.success', 'restrict_cart', function() {
		window.location = '/';
        });        
    }
});
    Максим
    18 октября 2016, 00:18
    0
    а в какой именно js?
      Дмитрий Меркурьев
      18 октября 2016, 00:53
      0
      Перечитал топик и возникли сомнения об одном и том же ли мы говорим)
      Вы пишете про «сделать заказ», но приводите чанк для добавления в корзину. Об оформлении заказа или добавлении в корзину идет речь?
      Если о добавлении в корзину, то добавить выше предложенный скрипт можно в основной js-скрипт сайта.
      А можно и в сам чанк обрамляя тегом script
      <script>
      $(function(){
          if (typeof miniShop2 !== "undefined"){
              miniShop2.Callbacks.add('Cart.add.response.success', 'restrict_cart', function() {
      		window.location = '/';
              });        
          }
      });
      </script>
      хотя это не очень хороший тон добавлять js в тело страницы.
        Максим
        18 октября 2016, 08:37
        0
        ой, извините, перепутал чанки, да я говорю про сделать заказ а не добавление в корзину совсем заработался(((

        <div class="col-md-12">
        <form class="form-horizontal ms2_form" id="msOrder" method="post">
            <div class="row">
                <div class="col-md-6">
                    <h4>{'ms2_frontend_credentials' | lexicon}:</h4>
                    {foreach ['email','receiver','phone'] as $field}
                        <div class="form-group input-parent">
                            <label class="col-md-4 control-label" for="{$field}">
                                <span class="required-star">*</span> {('ms2_frontend_' ~ $field) | lexicon}
                            </label>
                            <div class="col-sm-6">
                                <input type="text" id="{$field}" placeholder="{('ms2_frontend_' ~ $field) | lexicon}"
                                       name="{$field}" value="{$form[$field]}"
                                       class="form-control{($field in list $errors) ? ' error' : ''}">
                            </div>
                        </div>
                    {/foreach}
        
                    <div class="form-group input-parent">
                        <label class="col-md-4 control-label" for="comment">
                            <span class="required-star">*</span> {'ms2_frontend_comment' | lexicon}</label>
                        <div class="col-sm-6">
                            <textarea name="comment" id="comment" placeholder="{'ms2_frontend_comment' | lexicon}"
                                      class="form-control{('comment' in list $errors) ? ' error' : ''}">{$form.comment}</textarea>
                        </div>
                    </div>
                </div>
        
        
        
            <button type="button" name="ms2_action" value="order/clean" class="btn btn-default ms2_link">
                <i class="glyphicon glyphicon-remove"></i> {'ms2_frontend_order_cancel' | lexicon}
            </button>
        
            <hr/>
            <div class="well">
                <div class="col-md-offset-2">
                    <h3>{'ms2_frontend_order_cost' | lexicon}:
                        <span id="ms2_order_cost">{$order.cost ?: 0}</span>
                        {'ms2_frontend_currency' | lexicon}
                    </h3>
                    <button type="submit" name="ms2_action" value="order/submit" class="btn btn-default btn-primary ms2_link">
                        {'ms2_frontend_order_submit' | lexicon}
                    </button>
                </div>
            </div>
        </form>
        </div>
          Дмитрий Меркурьев
          18 октября 2016, 13:20
          0
          Вы удалили поля с доставкой и оплатой, нужно хотя бы скрытые добавить payment и delivery и записать туда значения по умолчанию. Скорее всего из за этого страница просто не проходит валидацию.
            Максим
            18 октября 2016, 16:07
            0
            <div class="col-md-12">
            <form class="form-horizontal ms2_form" id="msOrder" method="post">
                <div class="row">
                    <div class="col-md-6">
                        <h4>{'ms2_frontend_credentials' | lexicon}:</h4>
                        {foreach ['email','receiver','phone'] as $field}
                            <div class="form-group input-parent">
                                <label class="col-md-4 control-label" for="{$field}">
                                    <span class="required-star">*</span> {('ms2_frontend_' ~ $field) | lexicon}
                                </label>
                                <div class="col-sm-6">
                                    <input type="text" id="{$field}" placeholder="{('ms2_frontend_' ~ $field) | lexicon}"
                                           name="{$field}" value="{$form[$field]}"
                                           class="form-control{($field in list $errors) ? ' error' : ''}">
                                </div>
                            </div>
                        {/foreach}
            
                        <div class="form-group input-parent">
                            <label class="col-md-4 control-label" for="comment">
                                <span class="required-star">*</span> {'ms2_frontend_comment' | lexicon}</label>
                            <div class="col-sm-6">
                                <textarea name="comment" id="comment" placeholder="{'ms2_frontend_comment' | lexicon}"
                                          class="form-control{('comment' in list $errors) ? ' error' : ''}">{$form.comment}</textarea>
                            </div>
                        </div>
                    </div>
            
                    <div class="col-md-6" id="payments">
                        <h4>{'ms2_frontend_payments' | lexicon}:</h4>
                        <div class="form-group">
                            <label class="col-md-4 control-label"><span class="required-star">*</span>
                                {'ms2_frontend_payment_select' | lexicon}</label>
                            <div class="col-sm-6">
                                {foreach $payments as $payment}
                                    <div class="checkbox">
                                        <label class="payment input-parent">
                                            <input type="radio" name="payment" value="{$payment.id}" id="payment_{$payment.id}"
                                                    {$payment.id == $order.payment ? 'checked' : ''}>
                                            {if $payment.logo?}
                                                <img src="{$payment.logo}" alt="{$payment.name}" title="{$payment.name}"/>
                                            {else}
                                                {$payment.name}
                                            {/if}
                                            {if $payment.description?}
                                                <p class="small">
                                                    {$payment.description}
                                                </p>
                                            {/if}
                                        </label>
                                    </div>
                                {/foreach}
                            </div>
                        </div>
                    </div>
                </div>
            
                <div class="row">
                    <div class="col-md-6" id="deliveries">
                        <h4>{'ms2_frontend_deliveries' | lexicon}:</h4>
                        <div class="form-group">
                            <label class="col-md-4 control-label">
                                <span class="required-star">*</span> {'ms2_frontend_delivery_select' | lexicon}
                            </label>
                            <div class="col-sm-6">
                                {var $i = 0}
                                {foreach $deliveries as $idx => $delivery}
                                    {var $checked = !$order.delivery && $i == 0 || $delivery.id == $order.delivery}
                                    {var $i += 1}
                                    <div class="checkbox">
                                        <label class="delivery input-parent">
                                            <input type="radio" name="delivery" value="{$delivery.id}" id="delivery_{$delivery.id}"
                                                   data-payments="{$delivery.payments | json_encode}"
                                                    {$checked ? 'checked' : ''}>
                                            {if $delivery.logo?}
                                                <img src="{$delivery.logo}" alt="{$delivery.name}" title="{$delivery.name}"/>
                                            {else}
                                                {$delivery.name}
                                            {/if}
                                            {if $delivery.description?}
                                                <p class="small">
                                                    {$delivery.description}
                                                </p>
                                            {/if}
                                        </label>
                                    </div>
                                {/foreach}
                            </div>
                        </div>
                    </div>
              Максим
              18 октября 2016, 16:07
              0
              <div class="col-md-6">
                          <h4>{'ms2_frontend_address' | lexicon}:</h4>
                          {foreach ['index','region','city'] as $field}
                              <div class="form-group input-parent">
                                  <label class="col-md-4 control-label" for="{$field}">
                                      <span class="required-star">*</span> {('ms2_frontend_' ~ $field) | lexicon}
                                  </label>
                                  <div class="col-sm-6">
                                      <input type="text" id="{$field}" placeholder="{('ms2_frontend_' ~ $field) | lexicon}"
                                             name="{$field}" value="{$form[$field]}"
                                             class="form-control{($field in list $errors) ? ' error' : ''}">
                                  </div>
                              </div>
                          {/foreach}
                          <div class="form-group input-parent">
                              <label class="col-md-4 control-label" for="street">
                                  <span class="required-star">*</span> {'ms2_frontend_street' | lexicon}</label>
                              <div class="col-md-6 row">
                                  {foreach ['street','building','room'] as $field}
                                      <div class="col-md-4">
                                          <input type="text" id="{$field}" placeholder="{('ms2_frontend_' ~ $field) | lexicon}"
                                                 name="{$field}" value="{$form[$field]}"
                                                 class="form-control{($field in list $errors) ? ' error' : ''}">
                                      </div>
                                  {/foreach}
                              </div>
                          </div>
                      </div>
              
                  </div>
              
                  <button type="button" name="ms2_action" value="order/clean" class="btn btn-default ms2_link">
                      <i class="glyphicon glyphicon-remove"></i> {'ms2_frontend_order_cancel' | lexicon}
                  </button>
              
                  <hr/>
                  <div class="well">
                      <div class="col-md-offset-2">
                          <h3>{'ms2_frontend_order_cost' | lexicon}:
                              <span id="ms2_order_cost">{$order.cost ?: 0}</span>
                              {'ms2_frontend_currency' | lexicon}
                          </h3>
                          <button type="submit" name="ms2_action" value="order/submit" class="btn btn-default btn-primary ms2_link">
                              {'ms2_frontend_order_submit' | lexicon}
                          </button>
                      </div>
                  </div>
              </form>
              </div>
                Максим
                18 октября 2016, 16:08
                0
                все есть вроде как, но все ровно не переходит
        Михаил
        07 апреля 2017, 10:55
        -4
        Ды не очень если честно этот miniShop2 такое ощущение что автор делал его чисто для себя. Для пользователей он крайне не удобен((
          Михаил
          07 апреля 2017, 11:16
          0
          А можно список неудобств. Просто по слову он не удобен ничего не поправить.
            mkas
            11 августа 2021, 12:15
            -1
            Дополнение должно давать инструмент взаимодействия, а возможность этот инструмент создать.
            Я не хочу изучать реализацию minishop2, я хочу его использовать.

            Например сейчас, нужно сформировать заказ. Почему не сделать условный триггер-событие, по которому начнется валидация, а после, оформление? То же самое с добавлением товара, очисткой корзины. Честно, работаю с minishop2 три недели, задачи по работе. Основная задача разработчика — сделать жизнь других людей проще, а не наоборот.
              Михаил
              11 августа 2021, 12:23
              +1
              Ну вроде все события для работы есть. Есть возможность расширить класс корзины/заказа, и там сделать то, что нужно. Куда еще проще, не понятно. Что подразумевается, под словом «проще». Сам по себе ИМ это явно не к слову «проще»
                mkas
                11 августа 2021, 12:34
                0
                Это от уровня понимания задачи зависит, кому то написать ИМ — кара небесная, кому то нет. Из того, что хорошо запомнилось: добавлял я новые поля в карточку заказа, можно было сделать это еще сложнее?
                Andrew
                11 августа 2021, 12:30
                0
                Думаю есть смысл почитать документацию
                  mkas
                  11 августа 2021, 12:32
                  0
                  Приятно строить из себя капитана очевидность?
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            15