簡體   English   中英

joomla組件菜單itemID

[英]joomla component menu itemID

如果我的組件列在菜單下,並且如果鏈接不包含例如itemID = 63而不是模塊未顯示,則將模塊分配給該菜單。

有沒有辦法自動將ItemId添加到每個鏈接並在組件內重定向?

在生成組件中鏈接的代碼中,您需要將ItemId附加到URL。 您可以使用以下方式獲取ItemId:

$itemid = JRequest::getint( 'Itemid' );

所以你會以這種方式使用它(例如):

$link = JRoute::_('index.php?option=com_component&task=list&Itemid='.$itemid);

單擊菜單項后,將存在此var。 如果視圖以分層方式放置,其中一個視圖鏈接到下一個視圖,則需要通過組件中的每個視圖進行傳遞。

[編輯]

您可以創建一個輔助函數,對於上面的示例,自動將ItemId添加到您生成的每個鏈接,例如

function genLink($link) {
    return JRoute::_($link.'&Itemid='.JRequest::getint( 'Itemid' ));
}

我的經驗這個問題出現在你將某個模塊(例如,virtmart產品列表)放在某個地方而不是鏈接應該帶到的部分的情況下。 假設您在菜單中使用Itemid === 731設置了VM(com_virtuemart),並在主頁(com_content)中插入了產品列表模塊。 當您點擊產品進入產品頁面時,您希望模塊設置鏈接,使得您的VM Itemid包含在鏈接中([linkl]&Itemid = 731) - 但在大多數情況下如果沒有發生,您的Itemid不會添加到網址中。

此外,您不能總是期望(例如在這種情況下)在您的網址參數中使用正確的Itemid。 所以JRequest::getint( 'Itemid' )東西不會按預期工作。

我不知道為什么JRoute :: _方法(它可以通過額外的參數“$ searchForItemid”輕松完成)不會在菜單表中搜索你的Itemid,而你不在組件中! 這就是說,如果您在VM首頁(com_virtuemart)中顯示相同的產品列表模塊,您將看到Itemid出現在您的鏈接上。 但在大多數情況下,該模塊需要在其他地方。

這仍然是w \\ J!2.5的情況。

我沒有你的解決方案,但我可以告訴你我是如何克服這個問題的。

顯然,您可以打開模塊並對Itemid進行硬編碼。 這在意大利被稱為“PORCATA”(翻譯:豬式編碼),我真的建議反對它,原因很明顯

我所做的是使用語言覆蓋(J!2.5 - 語言管理器:語言覆蓋),注冊一個像VM_ITEMID === 731的覆蓋,然后在模塊中我創建一個自定義模板並更改鏈接:

JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id...')

至:

JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id...'.'&Itemid='.JText::_("VM_ITEMID"))

我再說一遍,這不是問題的解決方案,恕我直言,這應該由核心處理,但它有效,這樣你就有可能改變綁定到組件的Itemid。 希望這可以幫助

當您需要在Joomla中獲取活動菜單項ID以僅顯示該菜單項的某些特定內容或僅顯示菜單項的ID時,請在要顯示活動菜單項ID的位置插入以下代碼:

<?php 
$currentMenuId = JSite::getMenu()->getActive()->id ;
echo "Your menu item ID is: $currentMenuId"; 
?>

這是舊的,但如果有人需要它在這里是答案。 從參數中檢索itemid:

<!--ITEMID FROM MENU-->
<?
$params =JComponentHelper::getParams( 'com_lobotoradio' );
$itemid = $params->get('itemid');
?>
<!--END ITEMID FROM MENU-->

然后在任何需要的地方打印:

<?php echo $itemid; ?>

最糟糕的情況,使用這個黑客:

<?php 
$itemid = X;
echo $itemid;
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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