首页 Ethan博客 Joomla建站 Joomla任意设置每个页面的meta标签

Joomla任意设置每个页面的meta标签

作者:梁波   
最后更新:2010-04-02

网页的meta标签对seo比较重要,特别是title标签,是seo网页优化里最重要的地方。Joomla系统默认能够对每篇文章设定keywords和description标签,title自动调用文章的标题,对seo支持已经比较好,但能否针对每一个页面的URL,任意设置其title标签、keywords标签和description标签?Ethan改造了joomla的一个组件,实现了这个功能,不难,思路如下:

1,后台界面(以首页为例,假想域名为www.abc.com)

2,数据库

增加一个表,表结构如下:

3,前台显示

利用Joomla的插件机制,引入一个系统插件,在onAfterDispatch触发,首先利用函数ethan_GetPageUrl计算出当前页面的真实的URL,函数代码如下:

	//获取当前页面的url包含参数
function ethan_GetPageUrl(){
$tempurl=explode("/",$_SERVER['PHP_SELF']);
$tempurl=$tempurl[count($tempurl)-1];
if(!empty($_GET)){
$pars="?";
foreach($_GET as $Gkey=>$Gvalue){
if (in_array($Gkey, array('format', 'limit'))) continue;
if($pars!="?"){$pars.="&";}
$pars.=$Gkey."=".$Gvalue;
}
$tempurl.=$pars;
}
return $tempurl;
}

然后匹配真实的URL和数据库中的记录,找到对应的title标签、keywords标签和description标签并替换当前页面已经有的title标签、keywords标签和description标签。

4,小技巧

Ethan发现在后台向数据库中输入真实的URL时,获取一个页面的真实的URL比较麻烦,想出了一个解决方法:在插件的onAfterDispatch函数里,再次利用上述ethan_GetPageUrl函数,把生成的真实的URL存储在该页面的一个没什么用的meta标签中(比如reply-to):

$document->setMetaData( "reply-to", $url_real );

在网页源代码里可以查看到(以首页为例):

<meta name="reply-to" content="index.php?option=com_content&view=frontpage&Itemid=1" />

在后台向数据库中输入一个页面的真实的URL时,查看该页面的reply-to标签(利用firefox的SearchStatus插件可快速查看)即可。Ethan自认为这个技巧很不错,其它非joomla的CMS系统也可以用这个思路。

 

会员登录


招聘、求职、学习、培训请登录