Дополнительные поля к заказу в minishop2
На просторах интернета было найдено решение по добавления полей к Заказу в miniShop2.
Решение простое. Один минус, данные нельзя подредактировать из Админки MODX
Для создания дополнительных полей к minishop2 полей в заказ необходимо создать плагин, например msExtraFields
<?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; }
Включаем события msOnBeforeCreateOrder и msOnManagerCustomCssJs
Теперь можно прописывать необходимые поля в неограниченном количестве в Заказе товаров, указав им префикс exlfld_ например
<label class="small" for="call_phone"><input id="call_phone" name="extfld_call" type="checkbox" value="Позвонить" />Позвонить</label>
Не забываем указать лексиконы и прописать отображение поле properties в системных настройках miniShop2 ключ ms2_order_address_fields.
В письме указываем как {$address.properties.extfld_call}
Комментарии ()