1

拡張機能によって生成される正規のメタ タグをいくつかのサイトに挿入したいと考えています。そこで、拡張機能の layout.xml に次のコードを挿入しました。

    <reference name="head">
        <action method="addLinkRel">
            <rel>canonical</rel>
            <href><url helper="core/url/getCurrentUrl"/></href>
        </action>
    </reference>

しかし、私は常にURLの代わりに「配列」を取得します。私は何を間違っていますか?

私がそれを機能させる場合、私www.mystore.com/productxy.htmlwww.mystore.com/productxy.html?page=3. パラメータなしで最初のものだけが必要だからです。

4

2 に答える 2

1

あなたのコードはほぼ正しかった。helperただし、タグの直下のタグのレイアウト xml でのみ属性を使用できます<action>。幸いなことに、余分なタグを誤って追加した<url>ので、これでうまくいくはずです:

<reference name="head">
    <action method="addLinkRel">
        <rel>canonical</rel>
        <href helper="core/url/getCurrentUrl"/>
    </action>
</reference>

Mage_Core_Helper_Url::getCurrentUrl()変数REQUEST_URIから を返します。$_SERVERその変数にはクエリが含まれているため、残念ながら、おそらく思ったほど使用できません。

于 2013-09-24T20:09:49.523 に答える
0

私はあなたがそれをすることができないと確信しています。XML ノードを にArray解釈しているため、 を取得しています。このアクションは代わりに関数を処理し、ヘルパーはまったく処理しません (決して)。<url helper="core/url/getCurrentUrl"/>ArrayaddLinkRel<url />

これを行うより良い (そしてもっと楽しい) 方法は、レンダリングする新しいブロック タイプを定義できるモジュールを作成することです<link rel='canonical' href='{$currentUrl}' />

これが私がそれを行う方法であり、約4つのファイルが必要です:

アプリ/コード/コミュニティ/Electricjesus/Canonical/etc/config.xml

<?xml version="1.0"?>
<config>
  <modules>
    <Electricjesus_Canonical>
      <version>0.1.0</version>
    </Electricjesus_Canonical>
  </modules>
  <global>
    <blocks>
      <canonical>
          <class>Electricjesus_Canonical_Block</class>
      </canonical>
    </blocks>    
  </global>
</config> 

アプリ/コード/コミュニティ/Electricjesus/Canonical/Block/Link.php

<?php
class Electricjesus_Canonical_Block_Link extends Mage_Core_Block_Template {

}

アプリ/デザイン/フロントエンド/ベース/デフォルト/テンプレート/正規/link.phtml

<?php $currentUrl = Mage::helper('core/url')->getCurrentUrl(); ?>
<link rel="canonical" href="<?php echo $currentUrl ?>" />

app/etc/modules/Electricjesus_Canonical.xml

<?xml version="1.0"?>
<config>
  <modules>
    <Electricjesus_Canonical>
      <active>true</active>
      <codePool>community</codePool>
      <version>0.1.0</version>
    </Electricjesus_Canonical>
  </modules>
</config>

したがって、ここでそれを行う方法は次のとおりです(あなたのlocal.xml):

<reference name="head">
    <block type="canonical/link" name="canonical_link" template="canonical/link.phtml" />
</reference>

したがって、これは基本的に、私が数分で作り上げた大まかなドラフトにすぎません。別の種類の問題 (ただし、同様のスコープ) に対して同じソリューションを使用しました。ですから、必要に応じてスピンしてください。

于 2013-08-22T07:57:01.860 に答える