У меня проблема при добавлении настраиваемых полей в представление com_menus — item.
Руководство:
(увидеть: http://docs.joomla.org/Adding_custom_fields_to_core_components_using_a_plugin)
Учебник отлично работает (com_contact), но когда я хочу охватить представление пункта меню: Параметры не сохраняются !!!
Ниже приведен код, который я использую для определения компонента и представления для добавления пользовательской формы.
class plgContentPluginName extends JPlugin {
function onContentPrepareForm($form, $data) {
$app = JFactory::getApplication();
$option = $app->input->get('option');
$view = $app->input->get('view');
switch($option) {
case 'com_menus': {
if ($app->isAdmin() && $view == 'item') {
JForm::addFormPath(__DIR__ . '/forms');
$form->loadFile('item', false);
}
return true;
}
}
return true;
}
}
Вот загружаемый item.xml (/forms/item.xml)
<?xml version="1.0" encoding="UTF-8"?>
<form>
<fields name="params">
<fieldset name="params" label="Custom Fields">
<field name="param1" type="text" label="lbltext"/>
<field name="param2" type="text" label="lblText2"/>
</fieldset>
</fields>
</form>
Форма отображается правильно, когда я создаю или редактирую элемент меню, но значения не сохраняются, когда я нажимаю «Сохранить».
Благодарю.
Я решил это, просто удалив условие $ view == ‘item’ в блоке If.
Наконец-то выглядит так:
class plgContentPluginName extends JPlugin {
function onContentPrepareForm($form, $data) {
$app = JFactory::getApplication();
$option = $app->input->get('option');
switch($option) {
case 'com_menus': {
if ($app->isAdmin()) {
JForm::addFormPath(__DIR__ . '/forms');
$form->loadFile('item', false);
}
return true;
}
}
return true;
}
Item.xml остается прежним.
Кстати: я использую Joomla версии 3.4.1 сейчас.
Других решений пока нет …