我想在 Joomla 5 WYSIWYG 文章编辑器中添加一个按钮。功能比较简单。我想将 Pinterest Feed 添加到文章来源,而不是在光标位置的编辑器的普通文本内,如下所示... 单击按钮后,将显示输入板 URL 的提示,如上例所示。
我还想将来自官方 Pinterest 的以下 JS 添加到源中以显示提要。我还想检查它是否仅添加一次,以便在插入多个板时不会在代码中一次又一次重复。
说实话,我是 Joomla CMS 的新手,因此我尝试为此目的在线访问示例。没有一个对我有用。我尝试用 ChatGPT 创建一个。它甚至没有添加按钮。在网上进行了一些查找后,我发现了一个工作示例,它添加了一个按钮并要求提示,但在代码插入部分失败。下面是我正在使用的代码。
plg_editor_test.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" method="upgrade" group="editors-xtd">
<name>Editor XTD Button Test</name>
<author>Ghost</author>
<creationDate>April 2024</creationDate>
<copyright>Ghost. All rights reserved.</copyright>
<license>CC0</license>
<authorEmail>[email protected]</authorEmail>
<authorUrl>none.com</authorUrl>
<version>1.0.0</version>
<description>
"Adds a test button to the Editor"
</description>
<files>
<filename plugin="test">test.php</filename>
</files>
</extension>
测试.php
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport( 'joomla.plugin.plugin' );
class plgButtonTest extends JPlugin {
function plgButtonTest(& $subject, $config)
{
parent::__construct($subject, $config);
}
function onDisplay($name)
{
$js = "
function buttonTestClick(editor) {
txt = prompt('Please enter something', '123');
if (!txt) return;
jInsertEditorText('{test '+txt+'}', editor);
}";
$css = ".button2-left .testButton {
font-weight: bold;
}";
$doc = JFactory::getDocument();
$doc->addScriptDeclaration($js);
$doc->addStyleDeclaration($css);
$button = new JObject();
$button->set('modal', false);
$button->set('onclick', 'buttonTestClick(\''.$name.'\');return false;');
$button->set('text', JText::_('Test'));
$button->set('name', 'testButton');
$button->set('link', '#');
return $button;
}
}
?>
当我单击按钮时,会显示提示。单击“确定”不会执行任何操作,我在控制台中看到以下内容。
未捕获的引用错误:jInsertEditorText 未定义
Joomla 的帮助页面真的让我难以理解,因为我找不到任何与此相关的初学者友好文档。
我认为自定义字段解决方案更好:创建一个自定义字段,您将在其中放置供稿所需使用的 URL。然后,在对文章视图的覆盖中,如果文章存在此自定义字段,则加载所需的脚本。很容易。
您可以遵循以下文档:
注意: 当前版本的 CMS 已弃用您上传的代码示例。所以你不能继续这样。如果您想进一步了解此实现,您需要查看 editors-xtd 插件实现,例如 Image editor-xtd 按钮