如何在核心组件中保存自定义字段


22

我正在尝试为每个#__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

Answers:


19

AHA!此刻-#__content不再具有该params列,因此必须进行以下调整才能使该插件与组件/表一起使用(attribs而不是params(从v3.2开始仅显示为#__content)):

  1. fields名称更改为“ attribs”
  2. fieldset名称更改为唯一的名称(我使用了插件名称)
  3. 在内容编辑页面上为选项卡添加语言字符串

/forms/content.xml

<form>
    <fields name="attribs" >
        <fieldset name="gdp" >
            <field
                name="myfield"
                type="text"
                label="PLG_CONTENT_GDP_MYFIELD"
                />
        </fieldset>
    </fields>
</form>

zh-CN.plg_content_pass.ini

COM_CONTENT_GDP_FIELDSET_LABEL="My Custom Fields"

我可以在这里问一个问题吗?还是我应该提出一个新问题?它与此有关?基本上,我需要知道如何在文章编辑视图中添加多个标签。似乎forms / extra.xml仅允许您创建一个选项卡。我尝试了几种将xml文件拆分为字段集的方法,但是没有运气。只有一个标签。
Jonnypixel

您应该为此创建一个新问题,并添加与此问题/答案相关的链接。
Bogowoe
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.