【发布时间】:2013-09-24 07:53:04
【问题描述】:
我正在开发扩展,使用原生 Joomla 类别。我想在类别编辑器中添加一个额外的参数,该参数仅在编辑我的扩展程序类别时使用。
问题: 是否可以不覆盖 Joomla 核心文件?
【问题讨论】:
标签: joomla joomla2.5 joomla3.0
我正在开发扩展,使用原生 Joomla 类别。我想在类别编辑器中添加一个额外的参数,该参数仅在编辑我的扩展程序类别时使用。
问题: 是否可以不覆盖 Joomla 核心文件?
【问题讨论】:
标签: joomla joomla2.5 joomla3.0
之前的答案(新的 XML 文件)非常接近,但在 Joomla 3.x 中不太适用。为了使它工作,我必须将字段元素的 name 属性更改为“params”,如下所示:
<?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>
这样,自定义选项会显示在类别编辑屏幕的选项选项卡中。
另外,如果您的组件中有多个类型的类别(例如,“com_mycomponent.mycategorytype”),您需要将 XML 文件的名称设为“category.mytype.xml”。
【讨论】:
实际上,经过一夜无眠,我找到了一个优雅的本地解决方案。 不幸的是,Joomla 开发人员没有记录它,但似乎在您的扩展中您创建了文件: /administrator/components/com_YourName/models/forms/category.xml 并在那里添加一个字段集“attribs”,它会自动出现在您的扩展程序的类别管理器中。 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>
【讨论】:
更新
是的,这也可以在不破解核心文件的情况下完成。
您可以为管理员 com_categories 组件创建模板覆盖。
复制此文件:
administrator/components/com_categories/views/category/tmpl/edit.php
在这个路径下(需要创建对应的目录):
administrator/templates/bluestork/html/com_categories/category/edit.php
在这个新文件中,您可以施展所有魔法。
如果您需要更高级的东西,您可以使用允许您覆盖模型和组件的任何其他部分的插件:Plugin Override
【讨论】: