Создание плагина товара
Привет всем!
Я новичок в ModX. Делаю свой первый интернет-магазин на ModX Revo, решил использовать miniShop2. Первая трудность возникла при добавлении нового свойства товара с помощью плагина товара. С инструкцией ознакомился docs.modx.pro/components/minishop2/development/plug-ins-products.
Что я сделал? Я создал контроллер плагина, сохранил его в index.php и положил его в папку с названием своего плагина: core/components/minishop2/plugins/msplvolume
Содержание файла index.php:
Потом я добавил поле в таблицу:
Теперь я пытаюсь получить значение volume и вывести его на странице продукта.
Я по примеру вывода свойства weight, добавил в чанк msProduct.content следующий код:
Я новичок в ModX. Делаю свой первый интернет-магазин на ModX Revo, решил использовать miniShop2. Первая трудность возникла при добавлении нового свойства товара с помощью плагина товара. С инструкцией ознакомился docs.modx.pro/components/minishop2/development/plug-ins-products.
Что я сделал? Я создал контроллер плагина, сохранил его в index.php и положил его в папку с названием своего плагина: core/components/minishop2/plugins/msplvolume
Содержание файла index.php:
<?php
return array(
'map' => array(
'msProductData' => require_once 'msproductdata.inc.php',
),
'manager' => array(
'msProductData' => MODX_ASSETS_URL . 'components/msplvolume/msproductdata.js',
),
);Пока меня не интересует массив manager (расширение админки), поэтому, я создал только один файл msproductdata.inc.php. В нем я написал, что хочу расширить модель данных продукта, добавив одно целочисленное поле volume. Вот код:<?php
return array(
'fields' => array(
'volume' => 0,
),
'fieldMeta' => array(
'volume' => array(
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => true,
'default' => 0,
),
),
);Файл msproductdata.inc.php я сохранил в той же папке что и index.php.Потом я добавил поле в таблицу:
ALTER TABLE `modx_ms2_products` ADD `volume` INT NULL DEFAULT NULL;Как я понял на этом процесс закончен. Дальше miniShop2 и ModX все сделает сами.Теперь я пытаюсь получить значение volume и вывести его на странице продукта.
Я по примеру вывода свойства weight, добавил в чанк msProduct.content следующий код:
<div class="form-group">
<label class="col-sm-2 control-label">Объем: </label>
<div class="col-sm-3">
<label class="checkbox">[[+volume]] мл.</label>
</div>
</div>В итоге объем не выводится. Подскажите, пожалуйста, что я делаю не так? Комментарии: 18
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Вот моя таблица сейчас:
Раньше я пользовался старым методом, а теперь Василий не советует так поступать и советет регистрировать плагин через API и приводит для этого код
А куда нужно вставлять этот код? Создать од него в админке плагин на какое-то событие?
Создаешь плагин, например rukav. Код:
<?php
if ($miniShop2 = $modx->getService('miniShop2')) {
$miniShop2->addPlugin('rukav', '{core_path}components/rukav/index.php');
}
И СТАВИШЬ ЕГО НА СОБЫТИЕ: OnMODXInit (для его регистрации, необходимо только для регистрации плагина один раз).
Так я выше написал, как регистрировать плагин. Если не понятно пришлите адрес почты, я вышлю инструкцию с примером.
Не отправляются письма Вам. SMTP Error…
Просьба написать инструкцию по регистрации плагина.
Собственно, не понятна фраза «необходимо только для регистрации плагина один раз».
Так же не понятны различия между старым/новым способом.
В обоих случаях — контроллер кладем в папку, и 2 других файла — те же?
Спасибо
PS Поиском пользовался, в схожих темах обсуждение просто повторяется…
Осилить бы фразу про «1 раз!»
Подразумевается — указать событие OnMODXInit?
Спасибо
Да, поставить это событие, чтобы зарегистрировать плагин. Если надо, напишите почту, я пришлю инструкцию.