1

我正在开发扩展,使用原生 Joomla 类别。我想在类别编辑器中添加一个附加参数,该参数仅在编辑我的扩展程序类别时使用。

问题:是否可以不覆盖 Joomla 核心文件?

4

3 回答 3

3

The previous answer (new XML file) is very close, but doesn't quite work in Joomla 3.x. To make it work I had to change the name attribute of the fields element to "params" as follows:

<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="params">
        <fieldset name="basic" label="Group settings">
            <field name="group_id" type="list" default="" label="Select group:">
                <option value=""></option>
                <option value="1">Group 1</option>
                <option value="2">Group 2</option>
                <option value="3">Group 3</option>
            </field>
        </fieldset>
    </fields>
</form>

This way, the custom options show in the options tab of the category edit screen.

Also, if you have more than one type of category in your component (for example, "com_mycomponent.mycategorytype"), you need to make the name of the XML file "category.mytype.xml".

于 2014-09-24T16:09:14.087 回答
2

好吧,实际上在不眠之夜之后,我找到了一个优雅的本地解决方案。不幸的是,Joomla 开发人员没有记录它,但似乎在您的扩展程序中创建文件:/administrator/components/com_YourName/models/forms/category.xml 并在那里添加一个字段集“属性”,它会自动出现在您的扩展程序的类别管理器中. category.xml 的示例代码在这里:

<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="attribs">
        <fieldset name="attribs" label="Group settings">
            <field name="group_id" type="list" default="" label="Select group:">
                <option value=""></option>
                <option value="1">Group 1</option>
                <option value="2">Group 2</option>
                <option value="3">Group 3</option>
            </field>
        </fieldset>
    </fields>
</form>
于 2013-09-25T08:46:14.273 回答
1

更新

是的,这也可以在不破解核心文件的情况下完成。

您可以为管理员com_categories组件创建模板覆盖。

复制此文件:

administrator/components/com_categories/views/category/tmpl/edit.php

在这个路径中(需要创建对应的目录):

administrator/templates/bluestork/html/com_categories/category/edit.php

在这个新文件中,您可以施展所有魔法。

如果您需要更高级的东西,您可以使用允许您覆盖模型和组件的任何其他部分的插件:Plugin Override

于 2013-09-24T10:10:06.290 回答