1

1ページのMagentoチェックアウトの余白に、SSL署名機関によって提供された一連のjavscriptコードを追加しようとしています. Magento の何かが、チェックアウトの最初のステップの後に JavaScript コードを削除しているようですが、問題のあるコードが見つかりません。他の誰かがこの問題または解決策に注意していますか?

\app\design\frontend\default\myTheme\template\checkout\onepage\progress.phtml の下部に JS コードを追加しました。

コードは次のようになります。

 <span id="siteseal"><script type="text/javascript" src="https://seal.godaddy.com/getSeal?sealID=xxx"></script></span>

最初は隠れていると思っていましたが、ロゴは最初のステップで表示され、その後のステップで消えましたが、「サイトシール」スパンはまだそこにありました - 空

4

1 に答える 1

1

進行状況セクションの最初の出力は PHP ベースですが、Magento は、ステップからステップへと移動するにつれて、AJAX を介してページの進行状況セクションを更新します。これは、次のコードによって処理されます

#File: skin/frontend/base/default/js/opcheckout.js
reloadProgressBlock: function(toStep) {
    var updater = new Ajax.Updater('checkout-progress-wrapper', this.progressUrl, {
        method: 'get',
        onFailure: this.ajaxFailure.bind(this),
        parameters: toStep ? {toStep: toStep} : null
    });
},

Ajax.Updaterのドキュメントを確認すると、Magento が渡さない追加のオプションがあることがわかります。

evalScripts (ブール値、デフォルトは false): 応答テキスト内の要素を評価する必要があるかどうか。

これは、Magento が Ajax を介してページのそのセクションを更新するときにスクリプトが評価されないことを意味し、説明した動作が見られる最も可能性の高い理由です。

あなたの問題を解決するために、このコードをprogress.phtmlテンプレートに追加することをスキップし、代わりに次のレイアウトの更新を使用します (local.xmlまたは、それがあなたのスタイルである場合は別の場所で)

<layouts>
    <checkout_onepage_index>
        <reference name="right">
            <block type="core/text" name="my_extra_stuff" before="checkout.progress.wrapper">
                <action method="setText"><text><![CDATA[
                <span id="siteseal"><script type="text/javascript" src="https://seal.godaddy.com/getSeal?sealID=xxx"></script></span>
                ]]></text></action>
            </block>
        </reference>
    </checkout_onepage_index>
</layouts>  

進行状況の下にコードが必要な場合はbefore="checkout.progress.wrapper"、レイアウト更新 xml から削除するだけです。

于 2013-01-12T04:13:37.370 に答える