2

Joomla 2.5 を使用しており、ヘッダーの正規リンクを変更したいと考えています。これはカテゴリ ビュー (components/com_content/category/tmpl/default.php) で行います。

$url        = JURI::root();
$sch        = parse_url($url, PHP_URL_SCHEME);
$server     = parse_url($url, PHP_URL_HOST);
$canonical  = $this->escape($_SERVER['REQUEST_URI']);    
$document->addCustomTag('<link rel="canonical" href="'.$sch.'://'.$server.$canonical.'"/>');

正しい標準を出力しますが、ヘッダーに2つの標準リンクがあるように、古い標準リンクもそこに残します。

古い正規リンクを変更または削除するにはどうすればよいですか?

4

2 に答える 2

2

おそらく代わりにやりたいことは、次のようなものです。

$doc_data = $document->getHeadData();
$url        = JURI::root();
$sch        = parse_url($url, PHP_URL_SCHEME);
$server     = parse_url($url, PHP_URL_HOST);
$canonical  = $this->escape($_SERVER['REQUEST_URI']); 
$newtag     = '<link rel="canonical" href="'.$sch.'://'.$server.$canonical.'"/>'

$replaced = false;
foreach ($doc_data['custom'] as $key=>$c) {
    if (strpos($c, 'rel="canonical"')!==FALSE) {
        $doc_data['custom'][$key] = $newtag;
        $replaced = true;
    }
}
if (!$replaced) {
    $doc_data['custom'][] = $newtag;
}

$document->setHeadData($doc_data);

これにより、置換する正規リンクを含む、ドキュメントから現在の head データがすべて取得されます。カスタム セットを検索し (ここにあると推測しています)、見つかった場合は、それを自分のものに置き換えます。見つからない場合は、最後に追加します。念のため。

私がすぐに見ることができるこれに関する潜在的な問題:

  1. タグにrel='canonical'一重引用符が含まれている場合は見つからないため、調整する必要がある場合があります。
  2. タグは、私が呼んだものの別のセクションに配置された可能性があります$doc_datavar_dump($doc_data};この配列内の変数の位置を確認するためにを実行することができます。
于 2013-02-08T16:01:14.430 に答える