KlenOfSky WEB Agency - создание и тех. поддержка сайтов. Продвижение в Яндекс и Google

Создание сайтов, поисковое продвижение в Google. Сопровождение, тех.поддержка


Звонить: +7 (999)96-88-777
Писать: web@klenovsky.ru


Дополнительные поля в форме заказа в minishop2 для MODX

Дополнительные поля в форме заказа в minishop2 для MODX

Новые поля в форме заказа в minishop2 для MODX. Их отображение в админке во вкладке "Адрес" заказа

Результат

Дополнительные поля в форме заказа minishop2 в MODX

1. В форму оформления заказа добавляем нужные поля:

Все поля с префиксом extfld_ попадут в заказ.

<label><input type="radio" name="extfld_type" value="Юридическое лицо">Юридическое лицо</label>
<label><input type="radio" name="extfld_type" value="Физическое лицо">Физическое лицо</label>
<label><input type="text" name="extfld_org">Название организации</label>
<label><input type="text" name="extfld_inn">ИНН</label>

2. Создаем плагин (msExtraAddressFields) и вешаем его на события msOnBeforeCreateOrder и msOnManagerCustomCssJs:

Плагин сохраняет нужные поля при оформлении заказа в json в поле properties таблицы modx_ms2_order_addresses, а так же подключает нужный js в админке.

<?php
switch ($modx->event->name) {
    case 'msOnBeforeCreateOrder':
        $address = $msOrder->getOne('Address');
        $properties = array();
        foreach ($_POST as $key => $value){
            if (strpos($key,'extfld_') !== false){
                $properties[$key] = htmlentities($value,ENT_COMPAT | ENT_HTML401,'UTF-8');
            }
        }
        if (count($properties) > 0){
            $address->set('properties', json_encode($properties));    
        }
    break;
    
    case 'msOnManagerCustomCssJs':
        if ($page != 'orders') return;
    $modx->controller->addHtml("
            <script type='text/javascript'>
                Ext.ComponentMgr.onAvailable('minishop2-window-order-update', function(){
                    if (miniShop2.config['order_address_fields'].in_array('properties')){
                        if (this.record.addr_properties){
                            var key;
                            for (key in this.record.addr_properties) {
                                this.fields.items[2].items.push(
                                    {
                                        xtype: 'displayfield',
                                        name: 'addr_properties_'+key,
                                        fieldLabel: _('ms2_properties_'+key),
                                        anchor: '100%',
                                        style: 'border:1px solid #efefef;width:95%;padding:5px;',
                                        html: this.record.addr_properties[key]
                                    }
                                );
                            }
                        }       
                    }
                });                
            </script>");
    break;
}

3. Добавляем вывод поля properties:

Заходим в системные настройки, там выбираем minishop2, блок Заказы. Добавляем к значению «Поля адреса доставки» properties. Дополнительные поля в форме заказа minishop2 в MODX

4. Добавляем записи словарей:

Заходим в Управление словарями, выбираем пространство имен minishop2, тема — manager, язык — ru. Создаем новые записи с именами вида: ms2_properties_имя_вашего_поля (в данном случае ms2_properties_extfld_type, ms2_properties_extfld_org, ms2_properties_extfld_inn), значения — названия полей, которые будут отображаться в админке.

Поля не редактируемые, только выводят отправленные покупателем данные

Большая Семеновская, 42 10509 Россия, город Москва, +7 (999)96-88-777
Рассказать друзьям:

comments powered by Disqus