MS2: доп. поле товара (плагин) типа «checkbox»
Друзья, всем привет!
Уже несколько часов не могу найти ответа на простой, казалось бы, вопрос. Нужно добавить товару кастомное поле типа checkbox, в нашем случае оно имеет имя «outofstock». Все делаю по инструкции (текстовые поля добавлял неоднократно). Поле добавилось и работает на странице товара. Но если добавить это поле в грид категории и пытаться его отредактировать из грида, получается следующее:
Вот так выглядит плагин:
Файл msproductdata.js:
Файл msproductdata.map.inc.php:
Поле: outofstock
Тип: TINYINT
Длина/значения: 1
По умолчанию: 0
Атрибуты: unsigned
Null: да
Нутром чую, что проблема в msproductdata.js, а именно в части getColumns, но знаний не хватает понять, где именно проблема.
Помогите, кто чем может :)
Уже несколько часов не могу найти ответа на простой, казалось бы, вопрос. Нужно добавить товару кастомное поле типа checkbox, в нашем случае оно имеет имя «outofstock». Все делаю по инструкции (текстовые поля добавлял неоднократно). Поле добавилось и работает на странице товара. Но если добавить это поле в грид категории и пытаться его отредактировать из грида, получается следующее:
- Отображается как 1/0, т.е. цифра (соответственно, checked/unchecked), а не как чекбокс;
- Если редактировать — появляется checkbox, можно поставить галку (он в момент редактирования пустой вне зависимости от имеющегося значения);
- После сохранения (перехода на другой товар) — сохраняется значение true или false, вот именно словами (в зависимости от того, была поставлена в чекбокс галка или нет);
- Если затем перезагрузить страницу, то все значения обратно становятся 0 или 1 (но при этом измененные значения сохраняются, т.е. если я на предыдущем шаге галку ставил, то показывает 1, а если нет, то 0).
Вот так выглядит плагин:
Файл msproductdata.js:
miniShop2.plugin.outofstock = {
getFields: function(config) {
return {
outofstock:{
xtype:'xcheckbox',
inputValue:1,
checked:parseInt(config.record.outofstock),
description: '<b></b>
' + _('ms2_product_outofstock_help')}
}
}
,getColumns: function() {
return {
outofstock:{width:50, sortable:false, editor:
{xtype:'xcheckbox', name: 'outofstock'}}
}
}
};
Файл msproductdata.map.inc.php:
<?php
return array(
'fields' => array(
'outofstock' => NULL
)
,'fieldMeta' => array(
'outofstock' => array(
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => true,
'default' => 0,
)
)
,'indexes' => array(
'outofstock' => array (
'alias' => 'outofstock',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'outofstock' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
)
)
);
В БД добавил поле с такими параметрами:Поле: outofstock
Тип: TINYINT
Длина/значения: 1
По умолчанию: 0
Атрибуты: unsigned
Null: да
Нутром чую, что проблема в msproductdata.js, а именно в части getColumns, но знаний не хватает понять, где именно проблема.
Помогите, кто чем может :)
Комментарии: 4
Владимир, спасибо, все работает! :)
Можете продублировать решение, если не сложно? :) Ссылка битая, а я что-то запутался в выводах
Для расширения полей удобно использовать — msFieldsManager
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.