[英]Joomla : how to get the url of a specific Menu itemID?
朋友一個新手問題.........我需要幫助來獲取特定菜單itemID的URL。 情況是這樣的:
我正在運行Joomla,並要求用戶輸入菜單ID並選擇該菜單ID的布局。
我想使用菜單itemID的此URL做其他事情。
如何獲得用戶提供的此菜單itemID的URL?
例如,如果用戶輸入是liek $this->get ('menulayoutid'>;
並且他輸入ID為54
那么我如何獲得菜單ID 54的URL。
請注意:我想從我的PHP文件而不是瀏覽器中獲取此URL,以便可以將該URL的值用於其他目的。
請幫助。
$itemid = JRequest::getVar('Itemid');
$application = JFactory::getApplication();
$menu = $application->getMenu();
$item = $menu->getItem($itemid);
$link = new JURI($item->link);
$link->setVar('ItemId', $itemid);
但是,我們可以從任何地方獲取Itemid(用戶輸入,使用Joomla Docs-標准表單字段類型中所述的xml文件中的“菜單項”字段類型,從我們自己開發的模塊中獲取)
// get the menuItemId from wherever...
// as described above or as in other posts here and do whatever with that!
$menuItemId = 'fromWherever'; // as an example "107";
// build the link to the menuItemId is just easy and simple
$url = JRoute::_('index.php?Itemid=' . $menuItemId);
我認為,如果我們只需要一個指向特定菜單ID的鏈接,那將是最好的解決方案,因為我們的請求絕對少而且代碼干凈
在Joomla 3.0、3.1中也可以使用
我只想補充一點,如果您需要定位特定菜單,則可以將菜單名稱作為參數傳遞給getMenu()。
$itemid = JRequest::getVar('Itemid');
$application = JFactory::getApplication();
$menu = $application->getMenu( 'menu-name' );
$item = $menu->getItem($itemid);
$link = new JURI($item->link);
$link->setVar('ItemId', $itemid);
我不確定Joomla是否從2.5甚至1.7開始就改變了它的工作方式,但是我花了2個小時中的更差的一半來尋找它。
希望它可以幫助某人。
$menuID = $params->get('menuItem'); // from module field menu ex. '105'
$js = new JSite;
$menu = $js->getMenu();
$link = $menu->getItem($menuID)->route;
//Returns URL Friendly Link -> menu/article
//Then format it ->
$link = 'http://www.yoursite.com/index.php/'.$link;
echo '<a href="'.$link.'">Borrowed Menu Link Path</a>";
當您需要在Joomla中獲取活動菜單項ID以便僅顯示該菜單項的某些特定內容或僅顯示菜單項的ID時,在希望顯示活動菜單項ID的位置插入以下代碼:
<?php
$currentMenuId = JSite::getMenu()->getActive()->id;
echo $currentMenuId;
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.