创建简单的简码插件 Joomla
Create simple Shortcode Plugin Joomla
我使用 onContentPrepare 事件将此 [test] 更改为其他文本 o prinf html 就像 wordpress 简码一样,但没有任何变化。
怎么了?
这是shortcodejd.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="search">
<name>shortcodejd</name>
<author>Joomla! Project</author>
<creationDate>November 2005</creationDate>
<copyright>Copyright (C) 2005 - 2013 Open Source Matters. All rights reserved.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<authorEmail>admin@joomla.org</authorEmail>
<authorUrl>www.joomla.org</authorUrl>
<version>3.1.0</version>
<description>SHORTCODEJD</description>
<files>
<filename plugin="shortcodejd">shortcodejd.php</filename>
<filename>index.html</filename>
</files>
<languages>
<language tag="en-GB">en-GB.shortcodejd.ini</language>
<language tag="en-GB">en-GB.shortcodejd.sys.ini</language>
</languages>
<config>
</config>
</extension>
和这个shortcodejd.php
defined('_JEXEC') or die;
class PlgContentShortcodejd extends JPlugin
{
protected $autoloadLanguage = true;
public function onContentPrepare($context, &$article, &$params, $limitstart)
{
$article->text = str_replace("[test]","<h1>Hi</h1>",$row->article);
return true;
}
}
您的插件在群组搜索而不是内容中,更改
<extension version="3.1" type="plugin" group="search">
To
<extension version="3.1" type="plugin" group="content">
您确定您的插件已启用吗?
在这个函数中
public function onContentPrepare($context, &$article, &$params, $limitstart)
{
$article->text = str_replace("[test]","<h1>Hi</h1>",$row->article);
return true;
}
你从哪里得到这个 $row。而只是使用 $article->text。你的函数应该看起来像
public function onContentPrepare($context, &$article, &$params, $limitstart)
{
$article->text = str_replace("[test]","<h1>Hi</h1>",$article->text);
return true;
}
正如@Yoleth 指出的那样,您需要有一个内容插件而不是搜索插件,因为您将要替换内容。
我使用 onContentPrepare 事件将此 [test] 更改为其他文本 o prinf html 就像 wordpress 简码一样,但没有任何变化。
怎么了?
这是shortcodejd.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="search">
<name>shortcodejd</name>
<author>Joomla! Project</author>
<creationDate>November 2005</creationDate>
<copyright>Copyright (C) 2005 - 2013 Open Source Matters. All rights reserved.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<authorEmail>admin@joomla.org</authorEmail>
<authorUrl>www.joomla.org</authorUrl>
<version>3.1.0</version>
<description>SHORTCODEJD</description>
<files>
<filename plugin="shortcodejd">shortcodejd.php</filename>
<filename>index.html</filename>
</files>
<languages>
<language tag="en-GB">en-GB.shortcodejd.ini</language>
<language tag="en-GB">en-GB.shortcodejd.sys.ini</language>
</languages>
<config>
</config>
</extension>
和这个shortcodejd.php
defined('_JEXEC') or die;
class PlgContentShortcodejd extends JPlugin
{
protected $autoloadLanguage = true;
public function onContentPrepare($context, &$article, &$params, $limitstart)
{
$article->text = str_replace("[test]","<h1>Hi</h1>",$row->article);
return true;
}
}
您的插件在群组搜索而不是内容中,更改
<extension version="3.1" type="plugin" group="search">
To
<extension version="3.1" type="plugin" group="content">
您确定您的插件已启用吗?
在这个函数中
public function onContentPrepare($context, &$article, &$params, $limitstart)
{
$article->text = str_replace("[test]","<h1>Hi</h1>",$row->article);
return true;
}
你从哪里得到这个 $row。而只是使用 $article->text。你的函数应该看起来像
public function onContentPrepare($context, &$article, &$params, $limitstart)
{
$article->text = str_replace("[test]","<h1>Hi</h1>",$article->text);
return true;
}
正如@Yoleth 指出的那样,您需要有一个内容插件而不是搜索插件,因为您将要替换内容。