Joomla精选文章布局缓存出错的临时解决

在上一篇说了一Joomla1.7.0的精选文章布局终于可以选择分类了,如果不开缓存的话,是没有问题的,开了缓存的话,多个精选文章的页面就会显示某个首先缓存的页面。

这是由于Joomla的缓存是由参数id和view来命名的(md5),而参数ID是文章分类的ID,精选布局恰恰是那几个文章布局中不需要ID的唯一布局。该问题已经报告给官方,并得到了确认。在官方补丁出来之前,先来一个小补丸吧。

当然,如果你的Joomla没有使用多个精选文章布局页面,请不要使用下面的代码,因为我不知道这个代码会不会引起什么问题。

目标文件:/libraries/joomla/environment/request.php 第439行函数改为下面的,其时就是加了一个判断,如果视图为精选,且不存在id,则把id设置为itemid(菜单id)的负值(这是为了不和其它的冲突)。

更严谨的还要判断option=com_content。


public static function set($array, $hash = 'default', $overwrite = true)
{
foreach ($array as $key => $value) {
self::setVar($key, $value, $hash, $overwrite);
}
if ( array_key_exists( 'view' , $array ) && !array_key_exists( 'id' , $array ) && $array['view']=='featured' ) {
self::setVar('id', '-'.$array['Itemid'] , $hash, $overwrite);
}
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注