呈现不带选择器的HTML选件
当您的建议包含HTML内容时,请使用此模式,但您必须提供应用它的位置(选择器)以及如何应用它(操作类型)。 为此,您可以调用带有按范围键值的applyPropositions对象的metadata。 支持的actionType值为setHtml、replaceHtml和appendHtml。
1.管理闪烁(可选)
如果在渲染时隐藏内容,则您负责在渲染完成后显示内容。 有关详细信息,请参阅管理闪烁。
2.请求您打算呈现的范围的建议
alloy("sendEvent", {
personalization: {
decisionScopes: ["discount", "salutation"]
},
xdm: { }
}).then(({ propositions = [] }) => {
// Render in the next step
});
有关详细信息,请参阅personalization.decisionScopes。
3.渲染带有applyPropositions元数据的选件
alloy("sendEvent", {
personalization: {
decisionScopes: ["discount", "salutation"]
},
xdm: { }
}).then(({ propositions = [] }) => {
return alloy("applyPropositions", {
propositions,
metadata: {
salutation: {
selector: "#salutation",
actionType: "setHtml"
},
discount: {
selector: "#daily-special",
actionType: "replaceHtml"
}
}
}).then(({ propositions: renderedPropositions = [] }) => {
return { renderedPropositions };
});
});
4.记录呈现的建议的显示事件
在调用applyPropositions时,显示事件不会自动发送。 渲染完成后,使用引用渲染建议的sendEvent调用:
function toDisplayPayload(propositions) {
return propositions.map((p) => ({
id: p.id,
scope: p.scope,
scopeDetails: p.scopeDetails
}));
}
alloy("sendEvent", {
personalization: {
decisionScopes: ["discount", "salutation"]
},
xdm: { }
}).then(({ propositions = [] }) => {
return alloy("applyPropositions", {
propositions,
metadata: {
salutation: { selector: "#salutation", actionType: "setHtml" },
discount: { selector: "#daily-special", actionType: "replaceHtml" }
}
}).then(({ propositions: renderedPropositions = [] }) => {
return alloy("sendEvent", {
xdm: {
_experience: {
decisioning: {
propositions: toDisplayPayload(renderedPropositions),
propositionEventType: { display: 1 }
}
}
}
});
});
});
有关详细信息,请参阅管理显示事件。
TIP
如果您使用Top和bottom page事件,则此“记录显示”调用通常在后
sendEvent调用中实现。5.重新呈现
如果您的实施需要稍后重新呈现(例如在单页应用程序中),请使用相同的建议和元数据再次调用applyPropositions:
alloy("applyPropositions", {
propositions,
metadata: {
discount: { selector: "#daily-special", actionType: "replaceHtml" }
}
});
如果需要为重新渲染录制显示事件,请参阅管理显示事件。
recommendation-more-help
1ae86b30-e55e-49c1-ab11-9d0356a5f3e1