0

jQueryをロードするためのヘッダーにブロックを追加するmagentoの拡張機能があります。

<reference name="head">            
     <block type="page/html" 
            template="csdev/embedjquery/embed_jquery.phtml" 
            output="toHtml" 
            name="csdev_embedjquery" />
</reference>

ブロックの内容は次のとおりです。

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js" />

<script type="text/javascript">    
    $.noConflict();
    alert(jQuery);
</script>

問題は、プロトタイプの後、jQuery が追加されるのが遅すぎることです。プロトタイプの前に追加する必要があるため、noConflict()関数を実行できます。

また、magento head-template または magento head-block を上書きしたくないため、次を追加しました。

output="toHtml"

しかし、それでは遅すぎます:(...

のような解決策はあり"add this block on top of the reference (head) with output='toHtml'"ますか?

私は試した:

before="-"

しかし、私が書いたので、うまくいかないようです:

output="toHtml"

私のMagentoのバージョンは1.7です。

4

2 に答える 2

2

これは、ファイル内の以下のスニペットを使用して実現でき/app/design/frontend/default/yourtheme/layout/local.xmlます。このレイアウト オーバーライドを使用する場合、コア ファイルを編集する必要はありません。

<layout version="0.1.0">
    <default>
        <reference name="root">
            <block type="core/text" name="external.cdn.jquery" before="-">
                <action method="setText">
                    <text><![CDATA[<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script><script type="text/javascript">jQuery.noConflict();</script>]]></text>
                </action>
            </block>        
        </reference>
    </default>
</layout>

ご覧のとおり、外部 CDN から jQuery をロードしています。これはすべてのページにロードされます。ただし、特定のページに限定したい場合は、<default>タグの代わりにページ ハンドルを使用します (例: for home page ) <cms_index_index>

于 2012-09-12T20:34:42.783 に答える
2

問題は、JS ファイルではなく、phtml ファイルとして追加していることです。代わりにこれを page.xml の default -> root -> head 内に追加してみてください (37 行目から 61 行目あたり):

<action method="addJs"><script>jquery/jquery.js</script></action>

次に、/js 内に jquery というフォルダーを作成し、jquery.js をそのファイルにアップロードします。jquery.js ファイルの最後に、noConflict メソッド呼び出しを追加します。これで問題が解決するはずです。

于 2012-09-12T20:12:51.650 に答える