Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Joomla:如何获取关联菜单项的URL(多语言/来自当前页面)_Php_Joomla_Menu_Multilingual - Fatal编程技术网

Php Joomla:如何获取关联菜单项的URL(多语言/来自当前页面)

Php Joomla:如何获取关联菜单项的URL(多语言/来自当前页面),php,joomla,menu,multilingual,Php,Joomla,Menu,Multilingual,我想手动将hreflang属性添加到页面的HTML头部 我正在使用Joomla3.4.8+SEBLOD组件来创建一个多语言站点。如果我关联不同语言的菜单项,通常会在头部添加一个“link tag”和一个“hreflang属性”,以使菜单项之间的关系对搜索引擎可见 由于某些原因,如果我在Seblod组件的列表和搜索视图中,则不会添加此标记。这就是为什么我要手动将丢失的标记写入头部 我知道如何向头部添加元信息以及如何获取当前菜单项的ID,,但我不知道如何获取当前页面相关菜单项的ID(或SEO友好UR

我想手动将hreflang属性添加到页面的HTML头部

我正在使用Joomla3.4.8+SEBLOD组件来创建一个多语言站点。如果我关联不同语言的菜单项,通常会在头部添加一个“link tag”和一个“hreflang属性”,以使菜单项之间的关系对搜索引擎可见

由于某些原因,如果我在Seblod组件的列表和搜索视图中,则不会添加此标记。这就是为什么我要手动将丢失的标记写入头部

我知道如何向头部添加元信息以及如何获取当前菜单项的ID,,但我不知道如何获取当前页面相关菜单项的ID(或SEO友好URL)

有什么想法吗

我希望我描述得很好。。。 提前谢谢

例如:
当前页面的菜单项为德语。它与英语菜单项(显示当前页面的英语版本)关联/连接。我需要的是英文菜单项的SEF-URL。

最简单的解决方案是查询活动菜单,以便获得菜单的所有变量。以下代码应返回菜单的当前活动路线:

$app = JFactory::getApplication();
$menu   = $app->getMenu()->getActive();

$sefUrl = $menu->route;

echo '<pre>';
print_r($menu);
echo '</pre>';

echo $sefUrl;

//HERE IS THE PHP TO SET A META DYNAMICALLY IF YOU NEED IT AS WELL
$doc =& JFactory::getDocument();
$doc->setMetaData( 'tag-name', 'tag-content', true );

希望这对你有用。

你好,特里,谢谢你的回复。您描述了如何获取当前菜单项的SEF-URL,但我需要的是所有菜单项的SEF友好URL,这些菜单项链接/关联到当前菜单项,用于多语言目的。示例:当前菜单项是德语,它与另一个英语菜单项关联。我搞不懂的是如何获取英文菜单项的SEF-URL。它们是如何关联的?是否共享一个共同的文章名称?如果你知道这些文章是如何相关的,你应该能够查询该特定文章的菜单项的Itemid,然后以与我在这里相同的方式获取sef url。如果您能告诉我如何链接它们,我可能会给您一个代码示例。如果您在后端为每种语言设置了多个菜单,并且每个菜单中都有相同的文章标题,例如:英语菜单->第1篇德语菜单->数据库中的第1篇文章,那么您可以查询链接和项目ID,然后使用菜单类型和标题作为where子句过滤器。我尝试用以下示例描述我的设置。我希望这是有道理的。我有两份菜单:*一份“德国菜单”,菜单项是“Kontakte”。菜单项与“联系人”关联*带有菜单项“Contacts”的“English菜单”。菜单项与“联系人”关联。这两个项目都链接到Seblod列表和搜索视图,而不是标准文章。关联在菜单项选项中配置。如果我查看menuitem对象的值($menu在代码中),我看不到对关联menuitem的任何引用。据我所见,连接保存在数据库的“_关联”-表中,但我不知道如何处理保存的数据。好的,过了一会儿,我在这里找到了问题的答案:
if(strpos($menu-Link,'index.php?') !== false){
    $sefUrl = JRoute::_($menu->link.'&Itemid='.$menu->id);
}