Дополнительные поля к заказу в 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}
Комментарии ()