Joomla 2.5.6 中 Itemid 在哪里用于标记活动菜单项?

问题描述 投票:0回答:3

任何人都可以帮我完成 Joomla

Itemid
参数最终成为突出显示的菜单项的流程吗?

我在 Joomla 中嵌入了第 3 方应用程序,并临时更改了应用程序中的 php 环境。

我能够获取 joomla html 并通过替换令牌插入第 3 方 html。

简化代码:

if ($_SERVER['REQUEST_METHOD'] == 'GET' ) {
    $_SERVER['REQUEST_METHOD'] = '';
}
$_SERVER['REQUEST_URI'] = '/joomla/index.php?view=mycom&option=com_mycom&Itemid=103';
$_SERVER['SCRIPT_NAME'] = $_SERVER['PHP_SELF'] = '/joomla/index.php';
$_SERVER['QUERY_STRING'] = 'view=mycom&option=com_mycom&Itemid=103';

ob_start();
require_once '/joomla/index.php';
$joomlaHTML = ob_get_clean();
echo str_replace($replacementToken, $thirdPartyHTML, $joomlaHTML);

在 v1.5.x 中,ID 为 103 的菜单项会正确突出显示,但在 v2.5.6 中则不会,并且

Home
项始终突出显示。我认为它曾经在 v1.6.x 和 2.5.x 的早期版本中正确突出显示,但不确定。

我想找到流程的流程(在哪里设置),这样我就可以看到需要进行哪些调整。

删除错误信息

php joomla joomla2.5
3个回答
1
投票

谢谢Dayo!你用这个拯救了我的一天:

// force highlight the external url menu item
$Itemid = JRequest::getVar('Itemid');
$menu = JSite::getMenu();
$menu->setActive($Itemid);

0
投票

我不完全理解面包屑部分,但我设法通过编辑组件的controller.php来使其工作:

// No direct access to this file
defined('_JEXEC') or die('Restricted access');

// force highlight the external url menu item
$Itemid = JRequest::getVar('Itemid');
$menu = JSite::getMenu();
$menu->setActive($Itemid);

// force fix the breadcrumb
$app = JFactory::getApplication('site');    
$pathway =& $app->getPathway();
$bcrumbs = &JPathway::getInstance('site');

// import Joomla controller library
jimport('joomla.application.component.controller');

/**
 * MyCom Component Controller
 */
class MyComController extends JController
{
}

-1
投票

查看以下文件

检查

/modules/mod_menu/mod_menu.php

文件,您将看到两个函数被称为“getActive”和“getDefault” 可以在以下文件中找到

/libraries/joomla/application/menu.php

我认为现在可以轻松定制了

© www.soinside.com 2019 - 2024. All rights reserved.