我试图在joomla前端的新文章中添加新字段,如下所述:component
但是这些字段没有显示在表单上。有人能解释一下原因吗?
下面是我用插件文件编写的代码:
function onContentPrepareForm($form, $data)
{
if (!($form instanceof JForm))
{
$this->_subject->setError('JERROR_NOT_A_FORM');
return false;
}
// Add the extra fields to the form.
// need a seperate directory for the installer not to consider the XML a package when "discovering"
JForm::addFormPath(dirname(__FILE__) . '/rating');
$form->loadFile('rating', false);
return true;
}我观察到的一件事是,在组件中的com_content文件夹中,编写了固定的代码,这就是为什么我的字段不可见的原因。如果我更改文件:\components\com_content\views\form\tmpl可以吗?
发布于 2013-11-20 11:43:03
我发现教程中还有另一个bug,至少我的Joomla版本是2.5.14。
在您/Rateing.xml(表单描述,而不是清单)中,您需要更改“
<fields name="rating">
至
<fields name="attribs">
为了让插件工作,使用"attribs“名称有一些特殊之处。
发布于 2013-09-11 06:52:04
基于以上评论中的对话,我认为您的教程构建得很差。好的,文档从来没有说明过这一点,实际上您必须将这个函数包装在一个类中,这样CMS才能正确地调用该函数。
即使没有类包装器,文件也将被加载到CMS中,因此,如果将die或exit语句放在函数之外,则应该看到它工作正常。如果将其放入函数中,则不会调用它,因为您的函数将永远不会被调用。
您可以从教程中下载完整的插件,您可以在教程的底部引用该插件,或者在这里下载:rating-2.5.0.zip。如果你看这个,你会看到额外的部分,这是需要的,以实际发挥作用。我把它也包括在下面。
任何其他函数也必须在类中运行。此外,如果您已经更改了插件的名称,类名也需要更新。这可能非常棘手,因为命名约定非常严格,并且要求插件名(rating)和插件组(content)都是正确的。
代码:
class plgContentRating extends JPlugin
{
function onContentPrepareForm($form, $data)
{
if (!($form instanceof JForm))
{
$this->_subject->setError('JERROR_NOT_A_FORM');
return false;
}
// Add the extra fields to the form.
// need a seperate directory for the installer not to consider the XML a package when "discovering"
JForm::addFormPath(dirname(__FILE__) . '/rating');
if (!$form->loadFile('rating', false)) {
die('No Form');
}
return true;
}
}更新:好的,这不仅仅是因为缺了一堂课,但我要离开这个,以防它对别人有帮助。
我更新了上面的代码,以检查loadFile是否正常工作。
https://stackoverflow.com/questions/18698985
复制相似问题