簡體   English   中英

如何獲取基於名稱的joomla菜單對象?

[英]how to get joomla menu object based on name?

這個問題只針對joomla。

我知道是否可以使用代碼$menu = &JSite::getMenu()獲得完整菜單的引用對象。 但是如何根據名稱獲取特定菜單?

我的場景:我的頁腳菜單包含以下項目:主頁| 關於我們| 規則| 隱私政策。

我需要在組件中顯示兩個菜單項“規則”和“隱私策略”的鏈接。 我不能對鏈接進行硬編碼,因為itemid在開發和生產環境中會有所不同。

我們是否有一些解決方法,例如$menu = &JSite::getMenu()->get('footer-menu')->getMenuItem('rules'); 這可以使我將對象指向特定菜單項,從中可以為該特定文章創建鏈接。

謝謝,坦美

方法1:

$menu = & JSite::getMenu();
$item = $menu->getItems('link', 'index.php?option=com_content&view=article&id=1', true);

方法2:

$menu = & JSite::getMenu();
$item = $menu->getItems('alias', 'rules', true);

據我所知,沒有內置的方法可以做到這一點。 但是我感到你的痛苦。

這是我之前構建的功能的改編。 它不是遞歸的,所以您只會在菜單層次結構中深入一層,但這對我來說已經足夠了。

function getMenuItems( $parentAlias ) {
    $db =& JFactory::getDBO();
    $sql = 'SELECT * FROM #__menu WHERE parent in ' .
           '(SELECT id FROM #__menu WHERE alias='.$db->Quote($parentAlias).') '.
           'AND published=1 ORDER BY ordering';
    $db->setQuery($sql);
    $results = $db->loadObjectList();
}

讓我知道這是否適合您。

暫無
暫無

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

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