如何创建及使用joomla plugin

本文我们将演示创建一个plugin,用来修改网站的title,我们要做的是插入网站的"site name"到title最后面。
如下面所示:

假设站点名称是"Demo Joomla Site"

提示:不要修改jooma core
joomla 核心中用来操作显示title的文件是 libraries/joomla/document/html/renderer/head.php
但是直接修改内核并不是一个好的做法,可能会为你以后升级带来隐患。

正确的做法:创建一个plugin
为便于演示此处我们创建的plugin叫“SiteNameInTitle”
1.Plugin可以被放到以下任何一个plugin group中

此处,我们在system group中,创建了两个文件sitenameintitle.xml和sitenameintitle.php。

2.sitenameintitle.xml是plugin安装必须的,内容大概如下:

<?xml version="1.0" encoding="utf-8"?>
<install version="1.5" type="plugin" group="system">
    <name>System - SiteNameInTitle</name>
    <author>FangLin</author>
    <creationDate>2011-11-23</creationDate>
    <copyright>2010 - Fang Lin</copyright>
    <license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
    <authorEmail>mail@gmail.com</authorEmail>
    <authorUrl>anything-digital.com</authorUrl>
    <version>1.1.0.1017</version>
    <description>Appends site name to title tag</description>
    <files>
        <filename plugin="sitenameintitle">sitenameintitle.php</filename>
    </files>
</install>

需要注意的地方主要是上面加红显示的,主要是group="system"及plugin指向的文件sitenameintitle.php

3.第二个文件是sitenameintitle.php,内空如下:
  

<?php
defined('_JEXEC') or die('Restricted access');

jimport('joomla.plugin.plugin');

class plgSystemSiteNameInTitle extends JPlugin{
 
  function onAfterDispatch(){
    global $mainframe;
    $document = JFactory::getDocument();
    $document->setTitle($document->getTitle(). '-' . $mainframe->getCfg('sitename'));
    return true;
  }

}

我们创建的类别plgSystemSiteNameInTitle 并继承JPlugin,类别按惯例是以plg开头之后是plugin group和plugin name

4. 在class内部,有一个onAfterDispatch方法来处理事件,onAfterDispatch会被自动调用

5. 打包sitenameintitle.xml和sitenameintitle.php为sitenameintitle.zip

6.在后台扩展-->安装卸载-->选择sitenameintitle.zip上传并安装
   

7.安装成功后,你将看到“安装Plugin成功"提示,Joomla将解压sitenameintitle.xml 和sitenameintitle.php文件放到plugin/system下

8.在后台扩展-->插件管理中启用,如下图所示
  


9.在前台刷新你的浏览器,将看下title已改变
  


至此,plugin安装应用成功。本文在joomla 1.5+中测试成功。如果您使用中有任何疑问欢迎留言。

本文参考自:http://learnwebdesignonline.com/tutorial-joomla-plugin

 

原文地址:https://www.cnblogs.com/fanglin/p/2509665.html