Ondersteuning voor inhoudskaarten configureren in Web SDK content-card-configuration-sdk
In dit voorbeeld ziet u hoe u inhoudskaarten kunt ophalen van Adobe Journey Optimizer (AJO) met Adobe Experience Platform. Door het Web SDK van Adobe Experience Platform leveraging, wordt de verpersoonlijkingsinhoud opgehaald en volledig op de cliëntkant teruggegeven.
Als de pagina voor het eerst wordt geladen, wordt de standaardstatus van de pagina weergegeven. Nochtans, als u met de Fondsen van de Aanhouding of Aandeel op sociale media knopen in wisselwerking staat, zullen de extra inhoudskaarten verschijnen. Deze kaarten worden geactiveerd door omstandigheden aan de clientzijde, zodat ze alleen worden weergegeven wanneer specifieke handelingen worden uitgevoerd.
Het voorbeeld uitvoeren run-sample
-
Stel lokale SSL-certificaten in voor HTTPS. Voor deze voorbeelden zijn lokaal ondertekende SSL-certificaten vereist om inhoud via HTTPS te kunnen leveren:
-
Installeer
mkcertop de computer. -
Voer na de installatie
mkcert -installuit om hetmkcert root-certificaat te installeren.
-
-
Kloont de opslagplaats naar uw lokale computer.
-
Open een terminal en navigeer naar de map van het voorbeeld.
-
Installeer de vereiste afhankelijkheden door
npm installuit te voeren. -
Start de toepassing door
npm startuit te voeren. -
Open uw webbrowser en ga naar
https://localhost.
Werking setup
-
Omvat en vorm SDK van het Web op de pagina gebruikend montages van het
.envdossier in de steekproefomslag.code language-none <script src="https://cdn1.adoberesources.net/alloy/2.18.0/alloy.min.js" async></script> alloy("configure", { defaultConsent: "in", edgeDomain: "{{edgeDomain}}", edgeConfigId: "{{edgeConfigId}}", orgId:"{{orgId}}", debugEnabled: false, personalizationStorageEnabled: true, thirdPartyCookiesEnabled: false }); -
Gebruik de opdracht
sendEventom persoonlijke inhoud op te halen.code language-none alloy("sendEvent", { renderDecisions: true, personalization: { surfaces: ["web://alloy-samples.adobe.com/#content-cards-sample"], }, }); -
Abonneren op inhoudskaarten voor een specifiek oppervlak met de opdracht
subscribeRulesetItems. Telkens wanneer linialen worden geëvalueerd, handelt u het resultaatobject in de callback af. Deze bevatpropositionsmet inhoudskaartgegevens.code language-none const contentCardManager = createContentCardManager("content-cards"); alloy("subscribeRulesetItems", { surfaces: ["web://alloy-samples.adobe.com/#content-cards-sample"], schemas: ["https://ns.adobe.com/personalization/message/content-card"], callback: (result, collectEvent) => { const { propositions = [] } = result; contentCardManager.refresh(propositions, collectEvent); }, }); -
Het renderen van inhoudskaarten beheren en
interact- endisplay-gebeurtenissen verzenden met behulp van hetcontentCardsManager-object inscript.js. Extraheer, sorteer en verwerkt inhoudskaarten van de ontvangen voorstellen.code language-none const createContentCard = (proposition, item) => { const { data = {}, id } = item; const { content = {}, meta = {}, publishedDate, qualifiedDate, displayedDate, } = data; return { id, ...content, meta, qualifiedDate, displayedDate, publishedDate, getProposition: () => proposition, }; }; const extractContentCards = (propositions) => propositions .reduce((allItems, proposition) => { const { items = [] } = proposition; return [ ...allItems, ...items.map((item) => createContentCard(proposition, item)), ]; }, []) .sort( (a, b) => b.qualifiedDate - a.qualifiedDate || b.publishedDate - a.publishedDate ); const contentCards = extractContentCards(propositions); -
Render de inhoudskaarten op de details worden gebaseerd die voor elke campagne worden bepaald. Elke kaart bevat een
title,body,imageUrlen andere aangepaste gegevenswaarden.code language-none const renderContentCards = () => { const contentCardsContainer = document.getElementById(containerElementId); contentCardsContainer.addEventListener("click", handleContentCardClick); let contents = ""; contentCards.forEach((card) => { const { id, title, body, imageUrl, meta = {} } = card; const { buttonLabel = "" } = meta; contents += ` <div class="col"> <div data-id="${id}" class="card h-100"> <img src="${imageUrl}" class="card-img-top" alt="..."> <div class="card-body d-flex flex-column"> <h5 class="card-title">${title}</h5> <p class="card-text">${body}</p> <a href="#" class="mt-auto btn btn-primary">${buttonLabel}</a> </div> </div> </div> `; }); contentCardsContainer.innerHTML = contents; collectEvent( "display", contentCards.map((card) => card.getProposition()) ); }; -
Wanneer de callback van
subscribeRulesetItemswordt aangeroepen, wordt ook een gebruiksfunctie met de naamcollectEventopgegeven. Deze functie wordt gebruikt om Experience Edge-gebeurtenissen te verzenden om interacties, weergaven en andere gebruikersacties bij te houden. In dit voorbeeld volgt collectEvent wanneer op een inhoudskaart wordt geklikt. Als u bovendien op de knop op de inhoudskaart klikt, wordt de browser omgeleid naar deactionUrldie door de campagne is opgegeven.code language-none const handleContentCardClick = (evt) => { const cardEl = evt.target.closest(".card"); if (!cardEl) { return; } const isAnchor = evt.target.nodeName === "A"; const card = contentCards.find((card) => card.id === cardEl.dataset.id); if (!card) { return; } collectEvent("interact", [card.getProposition()]); if (isAnchor) { evt.preventDefault(); evt.stopImmediatePropagation(); const { actionUrl } = card; if (actionUrl && actionUrl.length > 0) { window.location.href = actionUrl; } } };
Belangrijke opmerkingen key-observations
personalizationStorageEnabled
De optie personalizationStorageEnabled wordt ingesteld op true in de opdracht configure . Dit zorgt ervoor dat eerder gekwalificeerde inhoudskaarten worden opgeslagen en over gebruikerszittingen blijven worden getoond.
Triggers
Inhoudskaarten ondersteunen aangepaste triggers die aan de clientzijde worden geëvalueerd. Wanneer aan een triggerregel wordt voldaan, worden extra inhoudskaarten weergegeven. In dit voorbeeld worden vier verschillende campagnes gebruikt, één voor elke inhoudskaart, die allemaal hetzelfde oppervlak delen: web://alloy-samples.adobe.com/#content-cards-sample . In de onderstaande tabel staan de triggerregels voor elke campagne en de manier waarop u hieraan kunt voldoen.
De opdracht evaluateRulesets wordt geactiveerd wanneer u op de knoppen "Stortingsfondsen" en "Delen op sociale media" klikt. Elke knop geeft de relevante decisionContext aan om te voldoen aan de regels die voor de respectievelijke campagnes zijn gedefinieerd.
document.getElementById("action-button-1").addEventListener("click", () => {
alloy("evaluateRulesets", {
renderDecisions: true,
personalization: {
decisionContext: {
action: "deposit-funds",
},
},
});
});
document.getElementById("action-button-2").addEventListener("click", () => {
alloy("evaluateRulesets", {
renderDecisions: true,
personalization: {
decisionContext: {
action: "social-media",
},
},
});
});