有没有办法从我的 Joomla 组件中以编程方式添加菜单项?

Posted

技术标签:

【中文标题】有没有办法从我的 Joomla 组件中以编程方式添加菜单项?【英文标题】:Is there a way to add menu items programmatically from my component in Joomla? 【发布时间】:2012-05-07 21:49:26 【问题描述】:

我想通过与组件相关的编程方式添加标准的 joomla 菜单项。是否有一种 api 方式来添加菜单项或只是 SQL 方式。我可以通过 SQL 方式添加菜单项,但之后会出现一些问题。 我们可以从 joomla 管理员创建一个菜单并将菜单项链接到我的 Joomla 组件项。但是我想以编程方式将菜单和菜单项添加到我的组件中,而不是手动添加。例如,我将在我的组件编辑中创建一个按钮。当我们按下它时,菜单项会自动创建。

【问题讨论】:

看起来这个线程解决了它:***.com/questions/12651075/… 【参考方案1】:

如果你想为你的组件创建一个菜单项,它是从组件 XML 配置文件中自动创建的,如果你想添加额外的项目作为子菜单,那么 JSubMenuHelper 可能就是你要找的。​​p >

他们在this section of the tutorial on creating components 中讨论。

【讨论】:

我并不是要在管理面板上创建组件菜单。我的意思是前端的标准菜单。我想创建与我们从管理面板添加的组件项相关的菜单项。【参考方案2】:

joomla 中有一个 JMenu api 可用于获取菜单项

http://docs.joomla.org/API15:JMenu/getItems

你可以阅读这个来参考。

【讨论】:

【参考方案3】:
        $menuTable = JTable::getInstance('Menu', 'JTable', array());

        $menuData = array(
        'menutype' => 'client-pages',
        'title' => $data[name],
        'type' => 'component',
        'component_id' => 22,                  
        'link' => 'index.php?option=com_content&view=article&id='.$resultID,
        'language' => '*',
        'published' => 1,
        'parent_id' => '1',
        'level' => 1,
    );

    // Bind data
    if (!$menuTable->bind($menuData))
    
        $this->setError($menuTable->getError());
        return false;
    

    // Check the data.
    if (!$menuTable->check())
    
        $this->setError($menuTable->getError());
        return false;
    

    // Store the data.
    if (!$menuTable->store())
    
        $this->setError($menuTable->getError());
        return false;
    

    $db   = $this->getDbo();
    $qry = "UPDATE `#__menu` SET `parent_id` = 1 , `level` = 1 WHERE `id` = ".$menuTable->id;
    $db->setQuery($qry);
    $db->query();

【讨论】:

以上是关于有没有办法从我的 Joomla 组件中以编程方式添加菜单项?的主要内容,如果未能解决你的问题,请参考以下文章

Joomla 3以编程方式为组件设置默认模板

有没有办法在 Windows 上的 C++ 中以编程方式设置环境路径?

如何更新 Joomla 自定义组件?

有没有办法在 JooQ 中以编程方式回滚事务?

有没有办法在Swift中以编程方式设置NSCollectionView?

如何在 iPhone 应用程序中以编程方式传真文档? [关闭]