簡體   English   中英

Joomla:如何獲取特定菜單itemID的網址?

[英]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);

資料來源: http//forum.joomla.org/viewtopic.php?p = 1836005

但是,我們可以從任何地方獲取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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM