任何人都可以帮助我了解Joomla Itemid
参数最终成为突出显示的菜单项的流程吗?
我在Joomla中嵌入了第三方应用程序,暂时更改了应用程序中的php环境。
我可以通过替换令牌来获取joomla html并插入第三方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中正确地突出显示但是不确定。
我想找到流程如何流动(这是设置的),这样我就可以看到我需要进行哪些调整。
删除错误信息
答案 0 :(得分:1)
谢谢 Dayo !你用这个来救我的一天:
// force highlight the external url menu item
$Itemid = JRequest::getVar('Itemid');
$menu = JSite::getMenu();
$menu->setActive($Itemid);
答案 1 :(得分:0)
我不完全理解breadcrumb部分,但我设法通过编辑我的组件的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
{
}
答案 2 :(得分:-1)
查看以下文件
检查
/modules/mod_menu/mod_menu.php
文件,您将看到两个函数被称为“getActive”和“getDefault” 哪个可以在以下文件中找到
/libraries/joomla/application/menu.php
我认为现在可以轻松定制