0

因为没有提供规范 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 ? '&amp;' : '&'; 
        $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 网址而不是“普通网址”。

4

3 回答 3

1

与此同时,我找到了解决方案。也许这可以帮助其他人在我的情况下:

<?php

// Get SEO Page URL
$pageUrl = JURI::current();
// Get URI Object
$uri = & JFactory::getURI();
// Get URI String
$pageUri = $uri->toString();

// Check if there is a difference
if ($pageUrl != $pageUri){
    // Insert canonical tag when needed
    echo '<link rel="canonical" href="'.$pageUrl.'" />';
}

?>
于 2013-01-05T20:38:23.910 回答
0

你的意思是这样,还是我错过了什么?

var loc = window.location.href;
$("ul.nav li a").each(function() {
  if(this.href == loc) {
     // If the current URL is the same as the active menu url
     // Do something
  }
});
于 2013-01-05T12:24:33.063 回答
0

这是官方书籍记录的获取当前网址的方法

JURI::getInstance();

我将测试你的代码似乎是一个很好的开始。

于 2013-01-24T15:26:39.277 回答