我正在尝试为每个#__content项目添加一个简单字段,并且我非常仔细地遵循了“向核心组件添加自定义字段”中的教程,用“ content”代替“ contact”。我现在有一个可安装的插件,该插件成功包含了“管理员内容项”编辑表单上的选项卡/字段,并且工作出色,除了令人讨厌的“保存”功能之外。
关于保存的唯一参考是(再次,内容而不是联系):
其他字段是从插件目录中的forms / contact.xml文件加载的。重要的是,这些字段位于一个具有name属性设置为“ params”的字段元素中。如果您未设置此属性名称,则这些字段将显示在管理站点中,但不会保存这些值。
该警告说明存在的事实向我暗示Joomla应该知道其中的字段,并且核心代码会处理它,但是由于它没有保存,我想知道是否应该添加另一个事件。
这是我需要的简单字段-用户不可见,但仍然很关键,并且几乎不需要CCK来存储它。
是什么错误/遗漏导致无法保存自定义字段?
更新:希望超出了自定义字段存储在数据库中的希望,我在#__content表中添加了一个具有相同名称的列,并尝试过-祝您好运。
gdp.php
class plgContentGdp extends JPlugin {
protected $autoloadLanguage = true;
function onContentPrepareForm($form, $data) {
$app = JFactory::getApplication();
$option = $app->input->get('option');
switch($option) {
case 'com_content':
if ($app->isAdmin()) {
JForm::addFormPath(__DIR__ . '/forms');
$form->loadFile('content', false);
}
return true;
}
return true;
}
}
/forms/content.xml
<?xml version="1.0" encoding="UTF-8"?>
<form>
<fields name="params" >
<fieldset name="params" >
<field
name="content_myfield"
type="text"
label="PLG_CONTENT_GDP_MYFIELD"
/>
</fieldset>
</fields>
</form>
呈现的HTML(无标签)
<div class="tab-pane active" id="attrib-params">
<div class="control-group ">
<div class="controls">
<input
type="text"
value=""
id="jform_params_content_myfield"
name="jform[params][content_myfield]"
class=""
aria-invalid="false"
>
</div>
</div>
</div>
我记得在使用字段名NOT设置为params和多余的字段时看到了这一点;但这有点丑陋,每次升级后都需要维护。我很喜欢让这种事情起作用,以便获得结果,您是否考虑过改用用户个人资料插件方法?
—
Riccardo Zorn 2014年
我的数据用于内容,而不是用户...仅本教程用于联系人
—
GDP
抱歉,我不清楚,只需挂接onContentAfterSave事件并处理保存部分
—
Riccardo Zorn
非常感谢你做的这些。我一直试图在一天的大部分时间里解决这个问题。我对Joomla插件开发非常陌生,因此我依靠这些示例来帮助我前进。我能确定一下语言字符串文件吗?这些文件是否与插件文件一起使用或在现有的语言文件夹中?还是没关系?
我总是将文件放在与Joomla扩展程序相同的位置,即在这种情况下为/ languages文件夹。
—
GDP