我尝试创建一个插件,在编辑器中创建文章后会显示一些文本。
/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 . '");';
}
}
我安装插件并启用它。但是有些错误(当我在编辑器中保存文章时没有任何内容) 请帮忙。 最好的问候,亚历山大。
答案 0 :(得分:0)
实际上编辑插件是你可以在joomla后台使用的编辑器类型,如果你进入后台的系统配置,对于默认编辑器,你可以选择你的插件,因为它是一个编辑器插件。
如果要在保存文章后执行某些操作,则必须使用onContentAfterSave()方法编写内容插件。这个方法有3个参数:
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。如果你想这样做,你必须添加一个onBeforeRender方法。单击管理按钮时,会调用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);
}
');
}
}
}
答案 1 :(得分:0)
如果您想在保存之前或保存事件之后插入插件
onExtensionBeforeSave
onExtensionAfterSave