場合によって、モジュールがページ上に既に存在するコンテンツを表示する可能性があります。その場合、2つのユースケースがあります。
-
エディトリアルコンテンツが実装したモジュールの近くに配置されると、同じ記事が2回表示されるリスクがあります。これを避けるために、ウィジェットを呼び出すスクリプトに表示するべきでない記事IDを記述する必要があります。これは context で "neighbors" パラメータを使うことで対応できます。詳しくは /public/widget/data をご覧ください。サンプルコードは以下の通りです。
cX.CCE.run({ widgetId : '<widget id>', targetElementId : '<div id>'}, { context: { neighbors: ['articleid1', 'articleid2']}});
cX.CCE.callQueue.push(['run', { widgetId : '<widget id>', targetElementId : '<div id>'}, { context: { neighbors: ['articleid1', 'articleid2']}}]);
-
同じページに2つのモジュールを配置している場合、cX.CCE.runMulti 関数でサポートされています。各widgetオブジェクトは3つのフィールドを持つことができます。通常cX.CCE.runコールで渡すのと同じ3つの引数で、"widgetParams"、"widgetContext"、"widgetCallback" の3つです。サンプルコードは以下の通りです。
widgets = []; widgets.push({ widgetParams: { widgetId: '<widget id>', targetElementId: '<div id>' } }); widgets.push({ widgetParams: { widgetId: '<widget id>', targetElementId: '<div id>' } }); cX.CCE.callQueue.push(['runMulti', widgets, 'recs-articleid']);
-
1と2のユースケースを組み合わせて、同一ページに2つのかつ近くにモジュールを配置した場合、同じ関数 cX.CCE.runMulti を使用し、さらに1でneighbors として渡していた引数(記事ID)を追加で記述します。
widgets = []; widgets.push({ widgetParams: { widgetId: '<widget id>', targetElementId: '<div id>' } }); widgets.push({ widgetParams: { widgetId: '<widget id>', targetElementId: '<div id>' } }); cX.CCE.callQueue.push(['runMulti', widgets, 'recs-articleid', ['articleid1', 'articleid2']]);