ecshopはAJAXイベントとJSON解析モジュールをcommon / transport.jsに配置します。これには、実際には正常な独自のツールセットもあると言えます。
しかし正確には、jQueryと競合するJSONのさまざまなメソッドをカプセル化しながら、オブジェクトモデルが書き直されます。ご存知のとおり、jQueryはさまざまなJavaScriptオブジェクトを拡張します。
これらはすべて実際には非常に理解しやすく、それぞれに独自の理由があります。それは非常に自然なことですが、私たちのユーザーにとっては頭痛と無力感になります。上
ECShopフォーラム
、多くの友人が、もともとこの質問を提起し、様々な方法を提案した。私はいくつかを試してみましたが、私はそれを自分自身をしなければならなかったので、それは、良いかさえ役に立ちませんでした。
ソリューションは、他の関数を使用する代わりに、おそらくecshoptoJSONString拡張メソッドをシールドし
ました
。
おかずのお手入れは、詳細を書き留めてください。
1つは、デフォルトのjsファイルを変更する
1.最初にtransport.jsのコピーをコピーし、バックエンドで使用するために名前をtransport.org.jsに変更します
2. transport.jsのtoJSON関数行の数は、おそらく497〜737行です。
if(!Object.prototype.toJSONString){で始まるコード。
352の動作を変更します。
legalParams =“ JSON =” + $ .toJSON(params);
408の動作を変更します。
結果= $ .evalJSON(result);
global.jsで次のコードをブロックします(10〜13行目)。
Object.prototype.extend = function(object)
{{
Object.extend.apply(this、[this、object]);を返します。
}
3.index.jsファイルの44行目を次のように変更します。
var res = $ .evalJSON(結果);
4.common.jsファイルを変更します
34行目を次のように変更します。
Ajax.call( 'flow.php?step = add_to_cart'、 'goods =' + $ .toJSON(goods)、addToCartResponse、 'POST'、 'JSON');
行850を次のように変更します。
Ajax.call( 'flow.php?step = add_package_to_cart'、 'package_info =' + $ .toJSON(package_info)、addPackageToCartResponse、 'POST'、 'JSON');
行1056を次のように変更します。
Ajax.call( 'flow.php?step = add_to_cart'、 'goods =' + $ .toJSON(goods)、addToCartResponse、 'POST'、 'JSON');
5.compare.jsファイルを変更します
49行目を次のように変更します。
this.data = $ .evalJSON(cookieValue);
67行目を次のように変更します。
var obj = $ .evalJSON(cookieValue);
133行目を次のように変更します。
document.setCookie(“ compareItems”、$ .toJSON(this.data));
6.global.jsファイルを変更します
16行目の関数名を変更します。function$ e()
114行目と126行目は両方とも次のように変更されています。varelement= $ e(element);
次に、バックグラウンドコール部分を変更します
7、
バックグラウンドヘッダーを変更して、transport.jsパスadmin / templates / pageheader.htmを導入します。9行目は次のように変更されます:{insert_scripts files =” ../ js / transport.org.js、common.js”}
admin / templates / menu.htm
151行目を{insert_scriptsfiles = "../ js / global.js、.. / js / utils.js、.. / js /transport.org.js"}に変更します。
第三に、フロントエンドテンプレート部分を変更します
8. themes / default / library / page_header.lbiファイルを変更し、{insert_scripts files = 'transport.js、utils.js'}の上に次のコードを追加します。
{insert_scripts files = 'jquery.js、jquery.json.js'}
9、
library / comment_list.lbi
188行目:
Ajax.call( 'comment.php'、 'cmt =' + $ .toJSON(cmt)、commentResponse、 'POST'、 'JSON');
10、compare.dwt
20行目:
var obj = $ .evalJSON(document.getCookie( "compareItems"));
24行目:
document.setCookie(“ compareItems”、$ .toJSON(obj));
11、flow.dwt
138行目:
Ajax.call( 'flow.php?step = add_to_cart'、 'goods =' + $ .toJSON(goods)、collect_to_flow_response、 'POST'、 'JSON');
199行目:
Ajax.call( 'flow.php?step = add_to_cart'、 'goods =' + $ .toJSON(goods)、fittings_to_flow_response、 'POST'、 'JSON');
12、
brand.dwt
brand_list.dwt
category.dwt
exchange_list.dwt
search.dwt
といった:
{*スクリプトファイルを含む*}
{insert_scripts files = 'jquery.js、jquery.json.js'}
{insert_scripts files = 'common.js、global.js、compare.js'}
最近、ecshopモールシステムのテンプレートを入手しました。ホームページにjqueryのスライドと呼ばれていましたが、表示できませんでした。インターネットで検索したところ、jqueryとecshopのjson定義が矛盾していることがわかりました。これも難しいので、ECShopとjQueryの間の競合を解決する方法はどうですか?
jqueryプラグインを部分的に呼び出す
ホームページにjQueryを追加するだけの場合は、次の方法を使用することをお勧めします。ホームページテンプレートindex.dwtの下部にある本文の前にjqueryファイルと次のコードを導入します。
<script type = "text / javascript"> $(function(){ window .__ Object_toJSONString = Object.prototype.toJSONString; delete Object.prototype.toJSONString; }); </ script>
サイト全体のjQuery互換の変更
1.ファイルを変更します:/js/transport.js
ファイルの最後にコードを追加します。
if(Object.prototype.toJSONString){ var oldToJSONString = Object.toJSONString; Object.prototype.toJSONString = function(){ if(arguments.length&amp; gt; 0){ return false; } else { return oldToJSONString.apply(this、arguments); } } }
2.ファイルを変更します:/js/compare.js
this.timer = window.setInterval(this.relocation.bind(this)、50);
着替える:
this.timer = window.setInterval(this.bind(this.relocation、this)、50);
コードを見つける:
lastScrollY:0
コードの上の行にコードを追加します。
bind:function(obj1、obj2){ return function(){ obj1.apply(obj2、arguments); } }
3.次のテンプレートファイルで、global.jsファイルを埋め込むコードを見つけ、埋め込まれているglobal.jsを削除します。
brand.dwt
brand_list.dwt
category.dwt
exchange_list.dwt
search.dwt
4.最新バージョンのjqueryライブラリファイルをテンプレートディレクトリにダウンロードします
/themes/temlatename/images/js/jquery.1.5.2.js
テンプレートに対応するディレクトリがない場合は、新しいディレクトリを作成してjqueryファイルにコピーするだけです。
5.ファイルを変更します。
/themes/temlatename/library/page_header.lbi
上部にコードを追加します。
<script src = "images / js / jquery.1.5.2.min.js" type = "text / javascript"> </ script> <script type = "text / javascript"> var $$ = jQuery.noConflict() ; </ script>
将来、JQUERYオブジェクトを呼び出すには2つのドル記号$$を使用する必要があることに注意してください。$は同じ名前のECSHOPの元の関数との互換性の問題があるため、$は使用しないでください。