Я пытаюсь создать плагин, который будет отображать текст после создания статьи в редакторе.
/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>[email protected]</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 . '");';
}
}
Я устанавливаю плагин и включаю его. Но что-то не так (ничего, когда я сохраняю статью в редакторе).
Пожалуйста помоги.
С уважением, Александр.
если вы хотите плагин до сохранения или после события сохранения
onExtensionBeforeSave
onExtensionAfterSave
На самом деле плагины для редакторов — это тип редакторов, которые вы можете использовать в бэк-офисе 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>[email protected]</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);
}
');
}
}
}