0

ItemidJoomlaパラメータが強調表示されたメニュー項目になるプロセスフローについて誰かが私を助けてくれますか?

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でも正しく強調表示されていたと思いますが、確かではありません。

プロセスがどのように流れるか(これが設定されている場所)を見つけて、どのような調整が必要かを確認したかったのです。

間違った情報を削除しました

4

3 に答える 3

1

ありがとうダヨ!あなたはこれで私の日を救った:

// force highlight the external url menu item
$Itemid = JRequest::getVar('Itemid');
$menu = JSite::getMenu();
$menu->setActive($Itemid);
于 2012-11-15T01:12:16.410 に答える
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
{
}
于 2012-08-18T17:01:20.460 に答える
-1

次のファイルを見てください

チェックしてください

/modules/mod_menu/mod_menu.php

ファイルとあなたは2つの関数が「getActive」と「getDefault」と呼ばれているのを見るでしょう。これは次のファイルで見つけることができます

/libraries/joomla/application/menu.php

今では簡単にカスタマイズできると思います

于 2012-08-18T13:32:47.777 に答える