1

私が現在取り組んでいるサイトコア プロジェクトでは、ページ エディターが Vanilla インストールのページ エディターのように動作していないことに気付きました。すべてのプレースホルダーを 2 回クリックして、エディターがそのプレースホルダーにフォーカスするようにする必要があります。最初のクリックで、ツールバーのポップアップ フォーカスが変わり、クリックしたばかりのプレースホルダーまたはサブレイアウトを指すようになりますが、2 回目のクリックではその項目のみが強調表示されます。

この動作は、発生している JS エラーによるものだと思います。エラーは次のとおりです。

Uncaught TypeError: Cannot read property 'sc-renderMoreSection' of undefined 
renderTemplate 
Sitecore.PageModes.ChromeControls.Base.extend.renderMoreSection
Sitecore.PageModes.ChromeControls.Base.extend.updateCommands
Sitecore.PageModes.ChromeControls.Base.extend.show
Sitecore.PageModes.SelectionFrame.Sitecore.PageModes.ChromeFrame.extend.showSides
value
Sitecore.PageModes.ChromeFrame.Base.extend.show
Sitecore.PageModes.SelectionFrame.Sitecore.PageModes.ChromeFrame.extend.show     
value 
select
Sitecore.PageModes.Chrome.Base.extend._clickHandler
c jquery.noconflict.js:16
d.event.handle jquery.noconflict.js:16
k.handle.m

JS は、Sitecore のインストール全体でかなり標準的なように思われる、生成されたスクリプトにあります。このエラーが発生しているメソッドは

this.renderTemplate = function(templateName, template, data, options) {
   if (!$sc.template[templateName]) {
      $sc.template(templateName, template);
   }
  return $sc.tmpl(templateName, data, options);
};

!$sc.template[templateName]テンプレートが定義されていないため、ステートメントで。

誰かが以前に似たようなことに遭遇したことがありますか? 誰でもこの問題の原因を知っていますか?

Sitecore 6.5 と jQuery 1.7.2 を実行しています。

編集: この問題のトラブルシューティングを 1 日行った後、次のことがわかりました。

Sitecore のページ エディターは、非競合モードで実行するバージョンの jQuery 1.7.1 を、非競合モードで実行する独自のバージョン 1.5.1 で上書きしています。私たちのスクリプトは $$$ エイリアスと競合せず、サイトコアは $sc と競合しません。最後に、私たちの $ は jquery 1.5.1 です (no-conflict を正しく理解していれば、標準の $ に戻す必要があるため、これは私を困惑させます)。

ページ エディターに関する限り、これは問題ではありません。私が微調整をテストしているページは、1.7 に依存する jQuery を使用していません。この問題は、サイトコア ページ エディター スクリプトに含まれる「テンプレート」jquery プラグインに関連しています。特定できない理由により、このモジュールはページ エディターで機能しておらず、エラーの原因となっています。当社の他の Sitecore サイトは、このサイトに含まれているサイトを使用して引き続き機能します。テンプレート プラグインを削除すると、他のサイトが現在のサイトと同じように動作するようになります。

また、Sitecore はこのスクリプトにもプロトタイプを含めていますが、$ にはマッピングされていません。

4

2 に答える 2

1

jQuery は $ 記号を使用しますが、Sitecore も競合を引き起こす可能性があるため、NoConflict モードでコード内で jQuery を使用するようにしてください。

jQuery.noConflict();

これを行った後、jQuery スクリプトを呼び出すときに $ の代わりに jQuery を使用するか、以下のリンクで説明されているように jQuery スクリプトを埋め込む新しい関数を作成する必要があります。

このリンクも参照してください

于 2013-04-24T20:43:42.720 に答える
1

この問題は、Shared Source モジュール "Taxonomy" がインストールされているために発生しました。このモジュールは、Sitecore 6.5 のページ エディターではうまく機能しないようです。

jQuery のロードを強制し、競合を呼び出さずに $sc にエイリアスします。次に、ページ エディターのスクリプトが実際に読み込まれると、$sc は未定義ではないため、jQuery の新しいコピーで $sc が上書きされることはありません。これは、エディター スクリプトによってロードされたプラグインが $sc 変数にないことを意味し、システム全体が正常に機能しなくなります。

于 2013-05-10T13:02:40.237 に答える