本文我们将演示创建一个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