创建简单的简码插件 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 指出的那样,您需要有一个内容插件而不是搜索插件,因为您将要替换内容。