Php Joomla从组件创建菜单项
这是我当前的组件设置。我有一个非常动态的页面生成组件,它与外部API的数据同步,为产品创建页面,而无需额外的数据输入 现在,它只需单击一个简单的按钮即可填充所有内容并更新任何更改,或者只更新单个字段。这将导致从joomla中的api生成静态“页面”,并能够从api进行更新 问题在于,它被用作“主”菜单项,因此组件本身采用根目录。我需要的是每个“页面”自动获取home的子菜单,尽管仅仅将主菜单项设置为home似乎不起作用,但这会导致JRoute类变得混乱,并使用component/,到目前为止,我阅读的所有内容都假定它不是默认菜单项,因此我正在失去home,使其完全自动 所以我的问题是,有没有一个函数类可以从joomla中的组件创建菜单项?为每个页面向joomla菜单表添加另一行在我更新它们时“应该”解决了这个问题,我知道我可以自己尝试找出joomla如何将它们添加到数据库中,但是如果可能的话,我更喜欢使用joomla类/函数,有什么想法吗 这是我当前的router.php,可以直接链接到页面,但在使用JRoute时不行。有一些非必需的部分,这是因为我已经做了一些广泛的测试虽然Php Joomla从组件创建菜单项,php,joomla,joomla2.5,joomla-component,Php,Joomla,Joomla2.5,Joomla Component,这是我当前的组件设置。我有一个非常动态的页面生成组件,它与外部API的数据同步,为产品创建页面,而无需额外的数据输入 现在,它只需单击一个简单的按钮即可填充所有内容并更新任何更改,或者只更新单个字段。这将导致从joomla中的api生成静态“页面”,并能够从api进行更新 问题在于,它被用作“主”菜单项,因此组件本身采用根目录。我需要的是每个“页面”自动获取home的子菜单,尽管仅仅将主菜单项设置为home似乎不起作用,但这会导致JRoute类变得混乱,并使用component/,到目前为止,我
<?php
defined('_JEXEC') or die;
function GoFormsBuildRoute($query){
$segments = array();
$app = JFactory::getApplication();
$menu = $app->getMenu();
$params = JComponentHelper::getParams('com_goforms');
$db = JFactory::getDBO();
if (empty($query['Itemid'])) {
$menuItem = $menu->getActive();
$menuItemGiven = false;
}
else {
$menuItem = $menu->getItem($query['Itemid']);
$menuItemGiven = true;
}
//print_r($menuItem);
if(isset($query['option'])){
unset($query['option']);
}
if(isset($query['view'])){
$view = $query['view'];
}else{
return $segments;
}
unset($query['view']);
if(isset($query['id'])){
if ($menuItemGiven && isset($menuItem->query['id'])) {
$mCatid = $menuItem->query['id'];
} else {
$mCatid = 0;
}
//echo 'hi';
if(strpos($query['id'], ':') === false) {
$db = JFactory::getDbo();
$aquery = $db->setQuery($db->getQuery(true)
->select('alias')
->from('#__goforms_list')
->where('id='.(int)$query['id'])
);
$alias = $db->loadResult();
$query['id'] = $alias;
}
$segments[] = $query['id'];
unset($query['id']);
}
print_r($segments);
return $segments;
}
function GoFormsParseRoute($segments){
$vars = array();
$app = JFactory::getApplication();
$menu = $app->getMenu();
$item = $menu->getActive();
$params = JComponentHelper::getParams('com_goforms');
$db = JFactory::getDBO();
print_r($item);
$count = count($segments);
if($count == 1){
if(isset($segments[0])){
$vars['view'] = 'region';
$alias = str_replace(':','-',$segments[0]);
//print_r($alias);
//echo '<br>';
$query = 'SELECT alias, id FROM #__goforms_list WHERE alias = "'.$alias.'"';
$db->setQuery($query);
$page = $db->loadObject();
if($page){
$vars['view'] = 'region';
$vars['id'] = (int)$page->id;
return $vars;
}else{
$vars['view'] = 'goforms';
}
}else{
$vars['view'] = 'goforms';
}
}
return $vars;
}
?>
审查中:
- 约姆拉2.5
- 组件位于站点的根菜单项(主页)
- 组件中的项目需要在主菜单后位于第一级菜单下
- 链接可以工作,但是joomla中的JRoute类不能正确创建链接