Как добавить поле галочку в заказ любой, а потом изменять её плагином?
Нужно добавить в каждый заказ, чекбокс, и потом допустим при заказе если это более 5 заказ, в текущем и каждом последующем заказе указывать данный чекбокс как активный для этого пользователя.
Пытался так:
Так же создал само поле в базе данных в этой таблице "
Но когда перехожу в заказы в админке, там не вижу моего поля.
Само поле создавал так через sql "
Пытался так:
<?php
switch ($modx->event->name) {
case 'OnMODXInit':
$modx->loadClass('msOrder');
$modx->map['msOrder']['fields']['regular_customer'] = 0;
$modx->map['msOrder']['fieldMeta']['regular_customer'] = array(
'dbtype' => 'tinyint',
'precision' => 1,
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
);
break;
}
П.С ставил на событие «OnMODXInit»Так же создал само поле в базе данных в этой таблице "
modx_ms2_orders
".Но когда перехожу в заказы в админке, там не вижу моего поля.
Само поле создавал так через sql "
ALTER TABLE `modx_ms2_orders` ADD `regular_customer` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' ;
" Комментарии: 3
А почему нельзя просто проверять есть ли у этого пользователя 5 или более заказов и делать, то что нужно?
Потому что задача стоит такая, чтобы если больше 5тя сделанных заказов, то должна галочка стоят в каждом заказе от этого пользователя. Нет какого-то функционала если больше 5ти заказов, это галочка чисто для менеджеров будет
Решил с помощью данной статьи. modx.pro/solutions/22595
Теперь плагин такой.
Теперь плагин такой.
<?php
switch($modx->event->name){
case 'OnMODXInit':
$map = array(
'msOrder' => array(
'fields' => array(
'regular_customer' => 0
),
'fieldMeta' => array(
'regular_customer' => array(
'dbtype' => 'tinyint',
'precision' => 1,
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
),
),
),
);
foreach ($map as $class => $data) {
$modx->loadClass($class);
foreach ($data as $tmp => $fields) {
if ($tmp == 'fields') {
foreach ($fields as $field => $value) {
foreach (array('fields', 'fieldMeta', 'indexes') as $key) {
if (isset($data[$key][$field])) {
$modx->map[$class][$key][$field] = $data[$key][$field];
}
}
}
} elseif ($tmp == 'composites' || $tmp == 'aggregates') {
foreach ($fields as $alias => $relation) {
if (!isset($modx->map[$class][$tmp][$alias])) {
$modx->map[$class][$tmp][$alias] = $relation;
}
}
}
}
}
break;
case 'msOnManagerCustomCssJs':
if ($page != 'orders') return;
$modx->controller->addHtml("
<script>
Ext.ComponentMgr.onAvailable('minishop2-window-order-update', function(){
let orderTab = this.fields.items[0].items;
let obj = {
layout: 'column',
defaults: {
msgTarget: 'under',
border: false
},
anchor: '100%',
items: [
{
columnWidth: 1,
layout: 'form',
items:[
{
title: 'Регулярный пользователь',
xtype: 'xcheckbox',
id: 'minishop2-regular-customer',
labelAlign: 'top',
name: 'regular_customer',
fieldLabel: 'Регулярный пользователь',
autoHeight: true,
inputValue: 1,
border: false,
anchor: '100%',
value: this.record.regular_customer
}
]
}
]
}
orderTab.push(obj);
});
</script>");
break;
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.