Автор дополнения
Андрей Степаненко
Пакетов
12
Закачек
793
Обычно отвечает в течение суток
Автор дополнения
Пакетов
12
Закачек
793
Обычно отвечает в течение суток
Версия 1.2.14-pl
Дата выпуска 15.08.2018
Загрузки 279
Просмотры 3 719
Внимание, этот компонент требует версию PHP 5.4 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.3 !
Внимание!!! Для тех кто обновляется с версии 1.1.0 обязательно измените [[+selector]] в чанке tpl.msOneClick.btn из id на class
<a href="[[~[[+id]]]]#" class="[[+selector]] btn_one_click" data-hash="[[+hash]]" data-product="[[+id]]">[[%msoc_btn_one_click]]</a>

Возможности добавления своего способа оплаты и доставки в компоненте нету! По умолчанию при создании заказа способ оплаты и доставки выбран быстрый заказ.

Приложение создает заказ в интернет-магазине minishop2, а также может отправлять заказ в виде письма на указанный e-mail адрес.
На данный момент приложение не передает не каких параметров из msOptions и других модификаций. Так как есть различие между добавлением в корзину и модификацией на стороне клиента.
Для работы необходимо вставить сниппет на страницу с товаром [[!msOneClick]], и у вас появится кнопка «купить в 1 клик».
Работает начиная с версии MODX Revolution 2.2.

Демо сайта




В miniShop2 добавляются метод доставки и метод оплаты «Быстры заказа» и назначаются для создания заказов через модельное окно. В настройках приложения можно изменить эти способы.

Возможности



  • Быстрая отправка заказа через модельное окно.
  • Передача выбранных опций и количества со страницы и вывод в модельном окне с последующим добавлением к заказу
    • Префикс для выбранных опций options_

    • Вывод опций в форме с передачей параметров: [[+options_color]]
      [[!msOptions? &product=`[[+product_id]]` &name=`color` &selected=`[[+options_color]]`]]
    • Для работы в списках необходимо добавить класс msOnclick_form_id_[[+id]] для формы добавления товара.
      Иначе значения будут браться из ближайшей формы.
  • Возможность генерации email адреса если убрать email из обязательных полей.
  • Поддержка msOptionsPrice2 (автоматически подключается если есть подключена библиотека на странице и у формы есть класс msoptionsprice-product).
  • Готовый шаблон модельного окна с формой на bootstrap.
  • Внедрение в любую часть сайта:
    • на странице с товаром
      [[!msOneClick]]

    • В категориях и на других страницах
      [[!msOneClick? &id=`[[+id]]`]]
  • Вывод заголовка, цены и превью изображения товара в модельном окне.
  • Два режима работы:
    • MS — создание заказа в minishop2

    • MAIL — отправка на email менеджера без создания заказа в minishop2
  • Красивый вывод ошибок для обязательных полей.
  • Возможность добавления своих сниппетов в модельное окно
  • Добавление в форму своих полей с проверкой на обязательность заполнения.
  • По умолчанию маска телефонного номера +_ (___) ___-____, можно задать свою маску в настройка
  • Проверка обязательных полей (по-умолчанию receiver,phone,email) можно указать еще дополнительные поля в настройках.
  • Неограниченное количество вызовов сниппета msOneClick с разными настройками на одной странице странице.


Отправка заказа


  • Вывод номера заказа после отправки формы и создания заказа в minishop2
  • Отправка сообщения о новом заказе на e-mail
  • Редактирование шаблонов сообщений

Плейсхолдеры для сниппета msOneClick


create_order
MS
Метод отправки заказа: MS — отправить заказ в minishop2; MAIL — отправить заказ на e-mail, указанный в miniShop2 для менеджера, или по умолчанию (ms2_email_manager или emailsender)
default_images
/assets/components/
minishop2/img/web
/ms2_small.png

Изображение по умолчанию для товара. В случае когда изображение отсутствует
field_required_class
msoc_field__required
Класс css для обязательного поля для заполнения
email_method_mail

E-mail, куда будет уходить письмо, если использовать метод MAIL. Если оставить пустым, то будут использоватся настройки ms2_email_manager или emailsender
tplBtn
tpl.msOneClick.btn
Чанк оформления кнопки «быстрый заказ»
tplModal
tpl.msOneClick.modal
Чанк оформления модельного окна
tplForm
tpl.msOneClick.form
Чанк оформления формы заказа
tplSendSuccessMS
tpl.msOneClick.MS.send
Чанк оформления сообщения успешной отправки формы
tplSendSuccessMAIL
tpl.msoneclick.MAIL.send
Чанк оформления сообщения после отправки формы при методе MAIL
tplMAILmessage
tpl.msoneclick.email.message
Чанк оформления сообщения для метода MAIL, отправляемый на почту


Вызов модельного окна

Для создания заказа в miniShop2:
[[!msOneClick?
    &id=`5`
    &create_order=`MS`
]]

Для отправки сообщения на e-mail:
[[!msOneClick?
    &id=`5`
    &create_order=`MAIL`
    &email_method_mail=`mail@mail.ru`
]]


для msOptionsPrice2


Внимание!!! Если вы используют msOptionsPrice2 в компоненте msOneClick, пожалуйста, обращайтесь с вопросами к автору компонента где возникла эта проблема.

Лучший способ проверить работает ли msOptionsPrice2 это вставить его в обычную страницу с товаром (то есть в чанк msProduct.content). Если ваш код не будет работать на обычно странице, то и в компоненте msOneClick он не будет работать.

код чанка tpl.msoneclick.form

<form class="ms2_form msoptionsprice-product" id="[[+formid]]" method="post" >
    <input type="hidden" name="method" value="[[+method]]">
    <input type="hidden" name="pageId" value="[[+pageId]]">
    <input type="hidden" name="ctx" value="[[+ctx]]">
    <input type="hidden" name="hash" value="[[+hash]]">
    <input type="hidden" name="payment" value="[[+payment]]">
    <input type="hidden" name="delivery" value="[[+delivery]]">
    <input type="hidden" name="id" value="[[+product.id]]"/>
    <input type="hidden" name="mssetincart_set" value="[[+product.id]]">
    <input type="hidden" name="key" class="key-product" value="">
    <input type="hidden" name="options" value="[]">

    <div class="forder-popup__goods clearfix" >
        <div class="row-fluid" id="msCart">
            <div class="col-xs-12" id="dynamicmodal">
                <div class="row msoc_product_line" id="[[+product.key]]">
                    <div class="col-xs-3 text-center msoc_product_line_image">
                        <img src="[[+product.thumb]]" />
                    </div>
                    <div class="col-xs-5 msoc_product_line_pagetitle">
                        <h4 class="product-name">[[+product.pagetitle]]</h4>
                    </div>
                    <div class="col-xs-4 msoc_product_line_count">
                        <div class="product__add-cart ">
                            <div class="text-right">
                                <span class="forder-popup__price">
                                    <span id="[[+selector]]_price" class="msoptionsprice-cost msoptionsprice-[[+product.id]]">[[+product.price]]</span> руб.

                                    [[+product.old_price:is=`0`:then=``:else=`<span  id="[[+selector]]_price_old" class="old_price msoptionsprice-old-cost msoptionsprice-[[+product.id]]">[[+product.old_price]]  руб.</span>`]]
                                </span>
                            </div>
                            <div class="text-right control-counter">
                                <input type="hidden" name="price" value="[[+product.price]]">
                                <input type="hidden" name="product_id" value="[[+product.id]]">


                                <div class="count-field input-group input-prepend col-md-6">
                                    <span class="count-field-control count-field-control-down" onselectstart="return false" onmousedown="return false">+</span>
                                    <input value="[[+product.count]]" placeholder="0" type="text" autocomplete="off" name="count" class="count-field-input input-sm form-control">
                                    <span class="count-field-control count-field-control-up" onselectstart="return false" onmousedown="return false">-</span>
                                </div>

                            </div>

                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class="modal-options msoptionsprice-[[+product.id]]">
            {'msOptionsPrice.option' | snippet : [
                'product' => $product.id,
                'options' => 'color,size',
                'processColors' => 1,
                'constraintOptions' => [
                'phytomodule_color' => ['sizes'],
                'equipment' => ['sizes','phytomodule_color'],
                'frame_color' => ['sizes','phytomodule_color','equipment']
                ]
            ]}
        </div>
    </div>

    <div class="form-horizontal msoneclick_form" >
        <div class="forder-popup__block forder-popup__block--grey">
            <div class="form-group">
                <label for="msoc_city" class="col-sm-2 control-label [[+city_required]]">[[%msoc_field_city]]</label>
                <div class="col-sm-10">
                    <input type="text" value="[[!+order.city]]" name="city" class="forder-popup__input form-control" id="msoc_city" placeholder="[[%msoc_field_city_ple]]">
                </div>
            </div>
            <div class="form-group">
                <label for="msoc_addr_country" class="col-sm-2 control-label [[+addr_country_required]]">Страна</label>
                <div class="col-sm-10">
                    <input type="text" value="[[!+order.addr_country]]" name="addr_country" class="forder-popup__input form-control" id="msoc_addr_country" placeholder="Россия">
                </div>
            </div>
        </div>
        <div class="forder-popup__block forder-popup__block--grey">
            <div class="form-group">
                <label for="msoc_receiver" class="col-sm-2 control-label [[+receiver_required]]">[[%msoc_field_receiver]]</label>
                <div class="col-sm-10">
                    <input type="text" value="[[!+order.receiver]]" name="receiver" class="forder-popup__input form-control" id="msoc_receiver" placeholder="[[%msoc_field_receiver_ple]]">
                </div>
            </div>
            <div class="form-group">
                <label for="msoc_phone" class="col-sm-2 control-label [[+phone_required]]">[[%msoc_field_phone]]</label>
                <div class="col-sm-10">
                    <input type="text" name="phone" value="[[!+order.phone]]" autocomplete="off" class="forder-popup__input form-control" id="msoc_phone" placeholder="[[%msoc_field_phone_ple]]">
                </div>
            </div>

            <div class="form-group">
                <label for="msoc_email" class="col-sm-2 control-label [[+email_required]]">[[%msoc_field_email]]</label>
                <div class="col-sm-10">
                    <input type="email" name="email" value="[[!+order.email]]" class="forder-popup__input form-control" id="msoc_email" placeholder="[[%msoc_field_email_ple]]">
                </div>
            </div>
        </div>

        <div class="forder-popup__block forder-popup__block--grey">
            <div class="form-group">
                <label for="msoc_comment" class="col-sm-2 control-label">[[%msoc_field_comment]]</label>
                <div class="col-sm-10">
                    <textarea autocomplete="off" placeholder="[[%msoc_field_comment_ple]]" id="msoc_comment" name="comment" class="forder-popup__textarea form-control" title="">[[!+order.comment:default=``]]</textarea>
                </div>
            </div>
        </div>

        <div class="modal-footer">
            <button type="submit"  name="msoc_send_from" class="btn btn-success btn-lg">[[%msoc.button]]</button>
            

            <p class="text-muted">
                [[%msoc_form_footer_text]]
            </p>
        </div>
    </div>
</form>

Не обязательное поле email


Если сделать поле email не обязательным и при отправке поле оказывается пустым, то minishop не даст создать заказа.
Для этого была добавлена дополнительная возможность для автоматической генерации нового email адреса. Либо можно указать свой email адрес на который будут создаваться все заказа.

Вырезать код страны из номера телефона


Опциональная настройка.
Для этого необходимо в настройках компонента установить параметры

msoneclick_prefix_enabled Да — Параметр для включения вырезки кода страны из телефона
msoneclick_prefix_phone 7:11 — Где 7 это код страны а 11 это длина номера телефона.
msoneclick_mask_phone_format (999) 999-9999 — Маска телефона чтобы не вводить 7

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

B в чанке tpl.msoneclick.form с формой заменить:
<div class="msoneclick_form-field">

    <input type="text" name="phone" value="[[!+order.phone]]" tabindex="5" autocomplete="off" id="msoc_phone" placeholder="[[%msoc_field_phone_ple]]">

</div>
на
<div class="msoneclick_form-field msoneclick_phone_prefix">
    <div class="msoneclick_phone_select">
        <select class="msoneclick_form-field-select valid" name="phone_prefix" tabindex="4">
            [[!+prefix_options]]
        </select>
    </div>
    <div class="msoneclick_phone_input">
        <input type="text" name="phone" value="[[!+order.phone]]" tabindex="5" autocomplete="off" id="msoc_phone" placeholder="[[%msoc_field_phone_ple]]">
    </div>
</div>

Все прописанные коды стран автоматически появятся в плейсхолдере: prefix_options

Обсуждение компонента в сообществе MODX.PRO.

1.2.14

  • Исправлена передача опций в модельное окно
  • Добавлено событие срабатывающие после отправки формы msoneclick_after_sendorder

Последние обсуждения в сообществе MODX.pro