因为没有提供规范 URL 的 Joomla 2.5 工作插件(除了 SEF404),我将尝试“破解”我的模板并在需要时包含规范 URL。
因为每个菜单项都可以通过不同的 URL 和 GET 参数访问,所以我想在需要时包含规范的 URL。
我认为最简单的解决方案是获取活动菜单项的 URL,如果访问的 url 与此不同,则将 canonical-tag 包含在标题中(模板的 index.php 的)。
我有基本的 PHP 知识,但我不知道如何获取活动菜单项的 URL 和访问的 URL。谁能告诉我如何获取这些信息?如果我有这个,那么我可以简单地比较它,如果它不同,请添加标签。
请发布一些示例代码如何获取此信息。
编辑:这是一些基本信息(仅与“主页”有关),但对我来说,这段代码不起作用。http://writenowdesign.com/joomla-tutorials/joomla-trips-and-tricks/add-canonical-url-link-to-joomla-home-page/
EDIT2:例如:
<?php
// Source: http://www.php.de/php-einsteiger/91123-erledigt-aktuelle-browser-url-ausgeben-funktion-zweckdienlich-2.html
function getUrl($arrAddParam = false, $xhtmlValid = false, $anchor = false, $dropCalledArgs = false) {
$url = !empty($_SERVER['HTTPS']) ? 'https://' : 'http://';
$url .= $_SERVER['SERVER_NAME'];
$url .= $_SERVER['SCRIPT_NAME'];
// merge input and user param arrays
$arrParam = is_array($arrAddParam) ? $arrAddParam : array();
if ($dropCalledArgs === false) $arrParam = array_merge($_GET,$arrParam);
if (!empty($arrParam)) {
$arg_separator = $xhtmlValid ? '&' : '&';
$url .= "?". http_build_query($arrParam, '', $arg_separator);
}
// anchor
if ($anchor !== false) {
$url .= '#'.$anchor;
}
return $url;
}
// Get the application object
$app = JFactory::getApplication();
// Get's the menu object
$menu = $app->getMenu();
// Current URL
$activeUrl = getUrl();
// SHOULD get the active menu target as string, but it's an object
// THIS is my question how to get the URL of the current active menu item
$menuUrl = $menu->getActive();
?>
编辑3:这是获取此网址的可能性。但我需要 SEO 网址而不是“普通网址”。