当浏览k2文章时,激活k2的分类菜单项
讨论环境:
- joomla 1.5
- k2 2.41
k2的工具模块(k2 tools)具有分类菜单的功能,这个功能是比较常用的。
当我们浏览某个分类页面,对应的菜单项就会被“激活”,为其添加对应的激活css样式;但当我们浏览此分类下的某篇文章时,对应的菜单项并不会被激活。
因此我们需要修改k2 tools模块下的helper.php
文件 位置:modules/mod_k2_tools/helper.php
在大约258行添加以下代码
//Joomkit active highlight tweak
//only perform if item is being viewed
if ($view == 'item'){
//get article id
$K2itemid = JRequest::getInt('id');
$query = "SELECT catid FROM #__k2_items WHERE id = {$K2itemid} AND published=1 AND trash=0 AND access<={$aid} ";
$db->setQuery($query);
//return items category id
$ItemCatid = $db->loadResult();
if ($db->getErrorNum()) {
echo $db->stderr();
return false;
}
}
代码上下位置关系
static $output;
if ($begin) {
$output = '';
}
$root_id = (int) $params->get('root_id');
$end_level = $params->get('end_level', NULL);
$id = (int) $id;
$catid = JRequest::getInt('id');
$option = JRequest::getCmd('option');
$view = JRequest::getCmd('view');
$user = &JFactory::getUser();
$aid = (int) $user->get('aid');
$db = &JFactory::getDBO();
//Joomkit active highlight tweak
//only perform if item is being viewed
if ($view == 'item'){
//get article id
$K2itemid = JRequest::getInt('id');
$query = "SELECT catid FROM #__k2_items WHERE id = {$K2itemid} AND published=1 AND trash=0 AND access<={$aid} ";
$db->setQuery($query);
//return items category id
$ItemCatid = $db->loadResult();
if ($db->getErrorNum()) {
echo $db->stderr();
return false;
}
}
switch ($params->get('categoriesListOrdering')) {
case 'alpha':
$orderby = 'name';
break;
case 'ralpha':
$orderby = 'name DESC';
break;
case 'order':
$orderby = 'ordering';
break;
case 'reversedefault':
$orderby = 'id DESC';
break;
default:
$orderby = 'id ASC';
break;
}
if (($root_id != 0) && ($level == 0)) {
$query = "SELECT * FROM #__k2_categories WHERE parent={$root_id} AND published=1 AND trash=0 AND access<={$aid} ORDER BY {$orderby}";
} else {
$query = "SELECT * FROM #__k2_categories WHERE parent={$id} AND published=1 AND trash=0 AND access<={$aid} ORDER BY {$orderby}";
}
然后修改位置大概在325行(添加了上面代码的后的行数)
把原来的:
if (($option == 'com_k2') && ($view == 'itemlist') && ($catid == $row->id)){
替换成
if ( (($option == 'com_k2') && ($view == 'itemlist') && ($catid == $row->id)) || (($option == 'com_k2') && ($view == 'item') && ($row->id == $ItemCatid)) ){
然后添加对应的css规划就行了,这里就不写了,有兴趣的朋友可以看原文:
http://community.getk2.org/profiles/blogs/active-menu-items-part-two