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

时间:2012-04-27 06:18:04

标签: joomla menu custom-component

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

3 个答案:

答案 0 :(得分:0)

如果要为组件创建菜单项,这是从组件XML配置文件自动创建的,如果要将其他项添加为子菜单,那么JSubMenuHelper可能就是您正在寻找的。< / p>

this section of the tutorial on creating components中讨论了它们。

答案 1 :(得分:0)

joomla中有一个JMenu api用于获取menuitems

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

你可以阅读这篇文章来引用它。

答案 2 :(得分:0)

        $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();