我正在创建一个小插件来修改Joomla中的类别表单(在添加/编辑类别视图中)。
我能够使用tutorial on Joomla's site修改用户个人资料,文章和菜单上的表单;但是,类别似乎无法正常工作。
这是我正在使用的代码:
defined('JPATH_BASE') or die;
class plgContentCategoryType extends JPlugin {
function onContentPrepareForm($form, $data) {
// Load plugin language
$lang = JFactory::getLanguage();
$lang->load('plg_content_categorytype', JPATH_ADMINISTRATOR);
if (!($form instanceof JForm)) {
$this->_subject->setError('JERROR_NOT_A_FORM');
return false;
}
// Check we are manipulating a valid form.
if (!in_array($form->getName(), array('com_categories.category'))) {
return true;
}
if ($form->getName()=='com_categories.category') {
// Add the fields to the form.
JForm::addFormPath(dirname(__FILE__).'/forms');
$form->loadFile('categorytype', false);
}
}
}
这就是XML表单的样子:
<form>
<fields name="params">
<fieldset name="categorytype" label="PLG_CONTENT_CATEOGRYTYPE_FIELDSET_LABEL">
<field name="category_type" type="list" label="PLG_CONTENT_CATEGORYTYPE_LABEL" description="PLG_CONTENT_CATEGORYTYPE_DESC">
<option value=""></option>
<option value="features">PLG_CONTENT_CATEGORYTYPE_FEATURES</option>
<option value="columns">PLG_CONTENT_CATEGORYTYPE_COLUMNS</option>
<option value="spotlights">PLG_CONTENT_CATEGORYTYPE_SPOTLIGHTS</option>
<option value="slices">PLG_CONTENT_CATEGORYTYPE_SLICES</option>
<option value="news">PLG_CONTENT_CATEGORYTYPE_NEWS</option>
</field>
</fieldset>
</fields>
</form>
对我所做错的任何帮助都将不胜感激!就像我说的,它可以用于任何其他类型的内容,例如,它可以在菜单上工作,只需要更改代码中的“名称”。
谢谢!
答案 0 :(得分:5)
实际上Joomla 2.5中存在一个Bug,因为表单字段不会在“编辑类别”页面上呈现。我们最近在我们的网站上添加了一个博客,其中有一个解决方案..您可以在此处阅读http://techjoomla.com/joomla-development/adding-custom-fields-to-joomla-categories-in-joomla-25.html
已向Joomla提交补丁
答案 1 :(得分:2)
我设置了一个测试平台并创建了一个类似的插件。 我回应了$ form-&gt; getName()的价值,它出现为'com_categories.categorycom_content'
最好的猜测是,因为类别可以在多个上下文中使用,所以组件最后会被附加。
所以,在你有'com_categories.category'的两行中,用'com_categories.categorycom_content'代替,它就可以了。