0

標準 URL を提供する Joomla 2.5 用の有効なプラグイン (SEF404 以外) がないため、テンプレートを「ハック」して、必要に応じて標準 URL を含めるようにします。

すべてのメニュー項目は異なる URL と GET パラメータでアクセスできるため、必要に応じて正規の URL を含めたいと考えています。

最も簡単な解決策は、アクティブなメニュー項目の URL を取得し、アクセスされた URL がこれと異なる場合は、canonical-tag を (テンプレートの index.php の) ヘッダーに含めることだと思います。

PHP の基本的な知識はありますが、アクティブなメニュー項目の URL とアクセスした URL を取得する方法がわかりません。この情報を取得する方法を誰か教えてもらえますか? これがあれば、単純に比較して、違う場合はタグを追加できます。

この情報を取得する方法のサンプル コードを投稿してください。

EDIT:これはいくつかの基本的な情報です(「ホームページ」にのみ関連しています)が、私にとってはこのコードは機能しません。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:このURL を取得する可能性があります。しかし、「通常の URL」ではなく SEO の URL が必要です。

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

これは、現在の URL を取得するための公式書籍に記載された方法です。

ジュリ::getInstance();

私はあなたのコードが素晴らしいスタートと思われることをテストします。

于 2013-01-24T15:26:39.277 に答える
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 に答える