1

我正在尝试在 joomla 前端的新文章中添加新字段,如下所述:http: //docs.joomla.org/Adding_custom_fields_to_the_article_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

4

2 回答 2

2

我发现教程中还有另一个错误,至少与我的 Joomla 版本有关,即 2.5.14。

在您的 /rating/rating.xml (表单描述,而不是清单)中,您需要更改“

<fields name="rating">

<fields name="attribs">

为了使插件工作,使用“attribs”名称有一些特别之处。

于 2013-11-20T11:43:03.513 回答
0

根据上面评论中的对话,我认为您的教程构建得很差。好吧,文档从来没有说明这一点,您实际上必须将此函数包装在一个类中,以便 CMS 正确调用该函数。

即使没有类包装器,文件也会被加载到 CMS 中,所以如果你在函数之外放置一个dieor语句,你应该会看到它工作。exit如果你把它放在函数中,它就不会被调用,因为你的函数永远不会被调用。

您可以从教程底部或此处参考的教程下载完整插件:http: //joomlacode.org/gf/download/trackeritem/28771/75013/plg_content_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 以查看它是否正常工作。

于 2013-09-11T06:52:04.467 回答