gpt4 book ai didi

php - 以编程方式在 Joomla 中创建菜单项

转载 作者:可可西里 更新时间:2023-10-31 22:45:32 25 4
gpt4 key购买 nike

我在 joomla 2.5 中创建了一个组件,它创建了一篇新文章并将该文章添加到菜单项中。

创建文章工作正常,但我在创建菜单项时遇到了一些问题。

我有以下代码:

                //add the article to a menu item
$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;
}

错误似乎与设置 parent_id 和级别有关。在调试 libraries/joomla/database/tablenested.php 时将 parent_id 和 level 设置为 0。这导致我的管理员页面出现以下错误:

Warning: str_repeat() [function.str-repeat]: Second argument has to be greater than or equal to 0 in /Applications/MAMP/htdocs/joomla_2_5/administrator/components/com_menus/views/items/tmpl/default.php on line 129

最佳答案

尝试使用 JTableNested::setLocation($referenceId, $position = 'after'):

$table->setLocation($parent_id, 'last-child');

我还认为你需要重建路径:

// Rebuild the tree path.
if (!$table->rebuildPath($table->id)) {
$this->setError($table->getError());
return false;
}

如果还是不行,试着找出是什么 MenusModelItem::save 做你不做的事。

关于php - 以编程方式在 Joomla 中创建菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12651075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com