標準 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 ? '&' : '&';
$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 が必要です。