Joomla 3.6中的编辑插件的onsave方法



我尝试创建一个插件,该插件将在编辑器中创建文章后显示一些文本。

/editors/materialwords/materialwords.xml:

<?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="editors">
    <name>Editor Material Words Count Plugin</name>
    <creationDate>December 2016</creationDate>
    <author>Aleksandr Lapenko</author>
    <authorEmail>lapenkoak@gmail.com</authorEmail>
    <authorUrl>vk.com/web_rider</authorUrl>
    <copyright>Copyright</copyright>
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <version>1.0.0</version>
    <description>Calculate articles words count</description>
    <files>
        <filename plugin="materialwords">materialwords.php</filename>
    </files>
    <config>
        <fields name="params">
            <fieldset name="basic">
                <field name="displayCount" type="text"
                       label="Display Count"
                       description="Words display count"
                       required="true"
                       size="10"
                       class="inputbox" />
            </fieldset>
        </fields>
    </config>
</extension>

/editors/materialwords/materialwords.php:

<?php
defined('_JEXEC') or die;
class PlgEditorMaterialwords extends JPlugin
{
    public function onSave($id)
    {
        return 'alert("' . $id . '");';
    }
}

我安装插件并启用它。但是有问题(当我将文章保存在编辑器中时什么都没有)。请帮忙。最好的问候,Aleksandr。

如果要保存之前或保存事件后要插件

  1. OnextensionBeforesave

  2. Onextensionaftersave

实际上编辑插件是可以在Joomla Back Office中使用的编辑插件的类型是一个编辑插件。

如果要在保存文章后执行一些操作,则必须使用Method Oncontentaftersave()编写内容插件。此方法需要3个参数:

  1. $上下文,在您的情况下应该是com_content.ticle,因此请在其他任何东西之前对其进行测试
  2. $文章,您保存的文章的实例
  3. $ isnew,布尔值,如果是新文章,则为false,如果是udpate

插件代码

class PlgContentMaterialwords extends JPlugin {
    public function onContentAfterSave($context, $article, $isNew){
        if ($context != 'com_content.content'){
            return true;
        }
        // do stuff
    }
}

插件声明

<?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="content">
    <name>Editor Material Words Count Plugin</name>
    <creationDate>December 2016</creationDate>
    <author>Aleksandr Lapenko</author>
    <authorEmail>lapenkoak@gmail.com</authorEmail>
    <authorUrl>vk.com/web_rider</authorUrl>
    <copyright>Copyright</copyright>
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <version>1.0.0</version>
    <description>Calculate articles words count</description>
    <files>
        <filename plugin="materialwords">materialwords.php</filename>
    </files>
    <config>
        <fields name="params">
            <fieldset name="basic">
                <field name="displayCount" type="text"
                       label="Display Count"
                       description="Words display count"
                       required="true"
                       size="10"
                       class="inputbox" />
            </fieldset>
        </fields>
    </config>
</extension>

替代插件保存在JavaScript

使用以前的方法,您无法在此页面中添加JavaScript。如果您想这样做,则必须添加一个beforerender方法。单击管理按钮时,javascript方法joomla.submitbutton被调用,因此您可以覆盖它(请在保存之前先保存它,以便您可以在过程后调用)。

class PlgContentMaterialwords extends JPlugin
{
    public function onBeforeRender()
    {
        if ( JFactory::getApplication()->isAdmin() ){
            $document = JFactory::getDocument();
            $document->addScriptDeclaration('
                var Myvar = {};
                Myvar.submitbutton = Joomla.submitbutton;
                Joomla.submitbutton = function(task) {
                    if ( task == "article.save" || task == "article.apply" || task == "article.save2new" ){
                        alert("foo");
                    }
                    Myvar.submitbutton(task);
                }
            ');
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新