【问题标题】:Joomla : how to get the url of a specific Menu itemID?Joomla:如何获取特定菜单项 ID 的 url?
【发布时间】:2011-05-30 14:20:00
【问题描述】:

朋友一个新手问题.........我需要帮助来获取特定菜单项 ID 的 URL。情况是这样的:

我正在运行 Joomla 并要求用户输入菜单 ID 并为该菜单 ID 选择布局。

我想用这个菜单项 ID 的 URL 做其他事情。

如何获取用户提供的这个 Menu itemID 的 URL?

例如,如果用户输入是liek $this->get ('menulayoutid'>;,并且他输入了54 的ID,那么我如何获取菜单ID 54 的URL。

请注意:我想从我的 PHP 文件中而不是在浏览器中获取此 URL,以便我可以将该 URL 的值用于其他目的。

请帮忙。

【问题讨论】:

    标签: php url menu joomla


    【解决方案1】:
    $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

    【讨论】:

    • 非常感谢。这真的很有帮助。
    【解决方案2】:

    我只想补充一点,如果您需要针对特定​​菜单,您可以将菜单名称作为参数传递给 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);
    

    【讨论】:

      【解决方案3】:

      我不确定 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 3 的公认答案。无论如何,在模板覆盖中使用 sn-p 时,不需要预先添加域。
      【解决方案4】:

      但是,我们从任何地方获取 Itemid(用户输入,来自我们自己开发的模块,使用 xml 文件中的“菜单项”字段类型,如 in the Joomla Docs - Standard form field types 所述)

      // 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

      【讨论】:

        【解决方案5】:

        当您需要在 Joomla 中获取活动菜单项 ID 以仅显示该菜单项的某些特定内容或仅显示菜单项的 ID 时,请在您希望显示活动菜单项 ID 的位置插入以下代码:

        <?php 
        $currentMenuId = JSite::getMenu()->getActive()->id;
        echo $currentMenuId; 
        ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-12
          • 2013-10-01
          • 2019-10-27
          • 2012-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多