Clientcontext in detail client-context-in-detail
De context van de Cliënt vertegenwoordigt een dynamisch geassembleerde inzameling van gebruikersgegevens. Met de gegevens kunt u bepalen welke inhoud in een bepaalde situatie op een webpagina moet worden weergegeven (inhoud is gericht). De gegevens zijn ook beschikbaar voor analyses op websites en voor alle javascript-functies op de pagina.
Clientcontext bestaat hoofdzakelijk uit de volgende aspecten:
- De zittingsopslag, die de gebruikersgegevens bevat.
- De interface die de gebruikersgegevens weergeeft en tools biedt om de gebruikerservaring te simuleren.
- A javascript-API voor interactie met sessiewinkels.
Om een standalone zittingsopslag tot stand te brengen en het toe te voegen aan de Context van de Cliënt, of een zittingsopslag te creëren die aan een component van de Opslag van de Context gebonden is. AEM installeert diverse Context Store-componenten die u direct kunt gebruiken. U kunt deze componenten als basis voor uw componenten gebruiken.
Voor informatie over het openen van de Context van de Cliënt, het vormen van de informatie die het toont, en het simuleren van de gebruikerservaring, zie Clientcontext.
Sessiewinkels session-stores
De context van de Cliënt omvat diverse zittingsopslag die gebruikersgegevens bevatten. De gegevens van de opslag komen uit de volgende bronnen:
- De clientwebbrowser.
- De server (zie JSONP Store voor het opslaan van informatie uit bronnen van derden)
Het clientcontextframework biedt een javascript-API die u kunt gebruiken om met zittingsopslag in wisselwerking te staan om gebruikersgegevens te lezen en te schrijven, en te luisteren en te reageren om gebeurtenissen op te slaan. U kunt ook sessiewinkels maken voor gebruikersgegevens die u gebruikt voor inhoud die zich richt op of voor andere doeleinden.
Sessieopslaggegevens blijven op de client staan. De context van de Cliënt schrijft geen gegevens terug naar de server. Als u gegevens naar de server wilt verzenden, gebruikt u een formulier of ontwikkelt u aangepaste javascript.
Elke zittingsopslag is een inzameling van bezit-waarde paren. De zittingsopslag vertegenwoordigt een inzameling van gegevens (van om het even welke soort), waarvan de conceptuele betekenis door de ontwerper en/of de ontwikkelaar kan worden beslist. In het volgende voorbeeld wordt een object gedefinieerd dat de profielgegevens vertegenwoordigt die in de sessieopslag kunnen worden opgeslagen:
{
age: 20,
authorizableId: "aparker@geometrixx.info",
birthday: "27 Feb 1992",
email: "aparker@geometrixx.info",
formattedName: "Alison Parker",
gender: "female",
path: "/home/users/geometrixx/aparker@geometrixx.info/profile"
}
Een zittingsopslag kan over browser zittingen worden voortgeduurd, of kan slechts voor de browser zitting duren waarin het wordt gecreeerd.
SessionPersistence
cookie). Browseropslag komt vaker voor.Context Store-componenten context-store-components
Een component van de contextopslag is een AEM component die aan de Context van de Cliënt kan worden toegevoegd. Typisch, tonen de componenten van de contextopslag gegevens van een zittingsopslag waaraan zij worden geassocieerd. Nochtans, is de informatie die de componentenvertoning van de contextopslag niet beperkt tot zittingsopslaggegevens.
Contextarchiefcomponenten kunnen de volgende items bevatten:
- JSP manuscripten die de verschijning in de Context van de Cliënt bepalen.
- Eigenschappen voor het weergeven van de component in Sidetrap.
- Dialoogvensters bewerken voor het configureren van componentinstanties.
- Javascript dat de zittingsopslag initialiseert.
Voor een beschrijving van de geïnstalleerde componenten van de Opslag van de Context die u aan de Opslag van de Context kunt toevoegen, zie Beschikbare clientcontextcomponenten.
pagedata
.Doelgerichte levering van inhoud targeted-content-delivery
Profielgegevens worden ook gebruikt voor levering doelinhoud.
Clientcontext aan een pagina toevoegen adding-client-context-to-a-page
Neem de component Client Context op in de hoofdsectie van uw webpagina's om Client Context in te schakelen. Het pad van het knooppunt Client Context component is /libs/cq/personalization/components/clientcontext
. Als u de component wilt opnemen, voegt u de volgende code toe aan het JSP-bestand van uw paginacomponent, dat zich net onder de component body
element van uw pagina:
<cq:include path="clientcontext" resourceType="cq/personalization/components/clientcontext"/>
De component ClientContext veroorzaakt de pagina om de cliëntbibliotheken te laden die de Context van de Cliënt uitvoeren.
- De JavaScript-API voor de clientcontext.
- Het clientcontextframework dat sessiewinkels, gebeurtenisbeheer, enzovoort ondersteunt.
- Segmenten die zijn gedefinieerd.
- De manuscripten init.js die voor elke component van de contextopslag worden geproduceerd die aan de Context van de Cliënt is toegevoegd.
- (Alleen instantie Auteur) De gebruikersinterface van de clientcontext.
De gebruikersinterface van de clientcontext is alleen beschikbaar voor de instantie van de auteur.
Clientcontext uitbreiden extending-client-context
Om de Context van de Cliënt uit te breiden, creeer een zittingsopslag en naar keuze toon de opslaggegevens:
- Maak een sessiewinkel voor de gebruikersgegevens die u nodig hebt voor het aangeven van inhoud en webanalyse.
- Creeer een component van de contextopslag om beheerders toe te laten om de bijbehorende zittingsopslag te vormen, en opslaggegevens in de Context van de Cliënt voor testende doeleinden te tonen.
JSONP
de dienst die de gegevens kan verstrekken, kunt u eenvoudig gebruiken JSONP
contextstore component en map het aan de dienst JSONP. Dit zal de zittingsopslag behandelen.Een Sessiewinkel maken creating-a-session-store
Creeer een zittingsopslag voor de gegevens die u aan moet toevoegen en van de Context van de Cliënt terugwinnen. Over het algemeen, gebruikt u de volgende procedure om een zittingsopslag tot stand te brengen:
-
Een clientbibliotheekmap maken met een
categories
eigenschapswaarde vanpersonalization.stores.kernel
. Clientcontext laadt automatisch de clientbibliotheken van deze categorie. -
Configureer de clientbibliotheekmap zodat deze afhankelijk is van de map
personalization.core.kernel
clientbibliotheekmap. Depersonalization.core.kernel
De clientbibliotheek bevat de JavaScript-API voor de clientcontext. -
Voeg de javascript toe die tot de zittingsopslag leidt en initialiseert.
Het opnemen van javascript in de de cliëntbibliotheek personalization.stores.kernel veroorzaakt de opslag dat wordt gecreeerd wanneer het kader van de Context van de Cliënt wordt geladen.
Typen sessiewinkels types-of-session-stores
Sessiewinkels worden gemaakt en beschikbaar tijdens een browsersessie, of blijven aanwezig in browseropslag of cookies. De JavaScript-API voor clientcontext definieert verschillende klassen die beide typen gegevensopslag vertegenwoordigen:
CQ_Analytics.SessionStore
: Deze objecten bevinden zich alleen in het pagina-DOM. De gegevens worden gemaakt en geduurd tijdens de levensduur van de pagina.CQ_Analytics.PerstistedSessionStore
: Deze objecten bevinden zich in het pagina-DOM en worden in de browseropslag of in cookies voortgezet. De gegevens zijn beschikbaar op pagina's en in gebruikerssessies.
API verstrekt ook uitbreidingen van deze klassen die voor het opslaan van JSON- gegevens of JSONP- gegevens worden gespecialiseerd:
-
Alleen sessieobjecten:
CQ_Analytics.JSONStore
enCQ-Analytics.JSONPStore
. -
Blijvende objecten:
CQ_Analytics.PersistedJSONStore
enCQ-Analytics.PersistedJSONPStore
.
Sessiewinkelobject maken creating-the-session-store-object
Het javascript van uw omslag van de cliëntbibliotheek leidt tot en initialiseert de zittingsopslag. De zittingsopslag moet dan worden geregistreerd gebruikend de Manager van de Opslag van de Context. In het volgende voorbeeld wordt een CQ_Analytics.SessionStore object.
//Create the session store
if (!CQ_Analytics.MyStore) {
CQ_Analytics.MyStore = new CQ_Analytics.SessionStore();
CQ_Analytics.MyStore.STOREKEY = "MYSTORE";
CQ_Analytics.MyStore.STORENAME = "mystore";
CQ_Analytics.MyStore.data={};
}
//register the session store
if (CQ_Analytics.ClientContextMgr){
CQ_Analytics.ClientContextMgr.register(CQ_Analytics.MyStore)
}
Voor het opslaan van JSON-gegevens wordt in het volgende voorbeeld een CQ_Analytics.JSONStore object.
if (!CQ_Analytics.myJSONStore) {
CQ_Analytics.myJSONStore = CQ_Analytics.JSONStore.registerNewInstance("myjsonstore",{});
}
Een Context Store-component maken creating-a-context-store-component
Creeer een component van de contextopslag om zittingsopslaggegevens in de Context van de Cliënt terug te geven. Zodra gecreeerd, kunt u uw component van de contextopslag op de Context van de Cliënt slepen om gegevens van een zittingsopslag terug te geven. Contextarchiefcomponenten bestaan uit de volgende items:
- JSP-script voor het renderen van de gegevens.
- Een bewerkingsdialoogvenster.
- Een JSP script voor het initialiseren van de sessieopslag.
- (Optioneel) Een clientbibliotheekmap waarmee de sessieopslag wordt gemaakt. U hoeft de map met de clientbibliotheek niet op te nemen als de component een bestaande sessieopslag gebruikt.
De geleverde Context Store-componenten uitbreiden extending-the-provided-context-store-components
AEM verstrekt de genericstore en de genericstoreproperties contextstore componenten die u kunt uitbreiden. De structuur van uw opslaggegevens bepaalt de component die u uitbreidt:
-
Eigenschap-waardeparen: Breid uit
GenericStoreProperties
component. Deze component geeft automatisch opslagruimten van eigenschap-waarde paren terug. Er zijn verschillende interactiepunten beschikbaar:prolog.jsp
enepilog.jsp
: componentinteractie waarmee u logica aan de serverzijde kunt toevoegen voor- of nadat de component is gerenderd.
-
Complexe gegevens: Breid uit
GenericStore
component. Uw zittingsopslag zal dan een "renderer"methode nodig hebben die zal worden geroepen telkens als de component moet worden teruggegeven. De renderfunctie wordt aangeroepen met twee parameters:-
@param {String} store
De winkel die moet worden gerenderd
-
@param {String} divId
Id van de div waarin de opslag moet worden teruggegeven.
-
/libs/cq/personalization/components/contextstores
map.De weergave in Sidetrap configureren configuring-the-appearance-in-sidekick
Wanneer het uitgeven van de Context van de Cliënt, verschijnen de componenten van de contextopslag in Sidetrap. Zoals bij alle componenten, componentGroup
en jcr:title
eigenschappen van de component van de cliëntcontext bepalen de groep en de naam van de component.
Alle componenten met een componentGroup
eigenschapswaarde van Client Context
standaard in Sidetrap worden weergegeven. Als u een andere waarde gebruikt voor de componentGroup
eigenschap, moet u de component handmatig aan Sidetrap toevoegen met de ontwerpmodus.
Context Store-componentinstanties context-store-component-instances
Wanneer u een component van de contextopslag aan de Context van de Cliënt toevoegt, wordt een knoop die de componenteninstantie vertegenwoordigt hieronder gecreeerd /etc/clientcontext/default/content/jcr:content/stores
. Dit knooppunt bevat de eigenschapwaarden die zijn geconfigureerd via het dialoogvenster voor bewerken van de component.
Wanneer de Context van de Cliënt wordt geïnitialiseerd, worden deze knopen verwerkt.
De bijbehorende Sessiewinkel initialiseren initializing-the-associated-session-store
Voeg een init.js.jsp- dossier aan uw component toe om code te produceren javascript die de zittingsopslag initialiseert die uw component van de contextopslag gebruikt. Gebruik bijvoorbeeld het initialisatiescript om configuratie-eigenschappen voor de component op te halen en deze te gebruiken om de sessieopslag te vullen.
Het gegenereerde JavaScript wordt aan de pagina toegevoegd wanneer de clientcontext wordt geïnitialiseerd bij het laden van de pagina op zowel de auteur- als de publicatieinstantie. Dit JSP wordt uitgevoerd alvorens de instantie van de component van de contextstore wordt geladen en teruggegeven.
De code moet het mime-type van het bestand instellen op text/javascript
, of wordt niet uitgevoerd.
De volgende procedure leidt tot het init.js.jsp manuscriptdossier en voegt de code toe die het correcte mime type plaatst. De code die de opslaginitialisatie uitvoert zou volgen.
-
Klik met de rechtermuisknop op het knooppunt van de contextstore-component en klik op Maken > Bestand maken.
-
Typ in het veld Naam
init.js.jsp
en klik vervolgens op OK. -
Voeg boven aan de pagina de volgende code toe en klik op Alles opslaan.
code language-java <%@page contentType="text/javascript" %>
Sessieopslaggegevens voor generieke opslageigenschappen renderen rendering-session-store-data-for-genericstoreproperties-components
Gegevens van sessieopslagbestanden weergeven in Client Context met een consistente indeling.
Eigenschapsgegevens weergeven displaying-property-data
De personalisatietag verstrekt personalization:storePropertyTag
-tag die de waarde van een eigenschap uit een sessiewinkel weergeeft. Als u de tag wilt gebruiken, neemt u de volgende coderegel op in uw JSP-bestand:
<%@taglib prefix="personalization" uri="https://www.day.com/taglibs/cq/personalization/1.0" %>
De tag heeft de volgende indeling:
<personalization:storePropertyTag propertyName="property_name" store="session_store_name"/>
De propertyName
Dit kenmerk is de naam van de eigenschap store die moet worden weergegeven. De store
Dit kenmerk is de naam van de geregistreerde winkel. In de volgende voorbeeldtag wordt de waarde van de tag authorizableId
eigendom van de profile
opslag:
<personalization:storePropertyTag propertyName="authorizableId" store="profile"/>
HTML-structuur html-structure
De map personalization.ui met clientbibliotheken (https://experienceleague.adobe.com/etc/clientlibs/foundation/personalization/ui/themes/default?lang=nl) biedt de CSS-stijlen die door Client Context worden gebruikt om de HTML-code op te maken. De volgende code illustreert de voorgestelde structuur die moet worden gebruikt voor de weergave van opslaggegevens:
<div class="cq-cc-store">
<div class="cq-cc-thumbnail">
<div class="cq-cc-store-property">
<!-- personalization:storePropertyTag for the store thumbnail image goes here -->
</div>
</div>
<div class="cq-cc-content">
<div class="cq-cc-store-property cq-cc-store-property-level0">
<!-- personalization:storePropertyTag for a store property goes here -->
</div>
<div class="cq-cc-store-property cq-cc-store-property-level1">
<!-- personalization:storePropertyTag for a store property goes here -->
</div>
<div class="cq-cc-store-property cq-cc-store-property-level2">
<!-- personalization:storePropertyTag for a store property goes here -->
</div>
<div class="cq-cc-store-property cq-cc-store-property-level3">
<!-- personalization:storePropertyTag for a store property goes here -->
</div>
</div>
<div class="cq-cc-clear"></div>
</div>
De /libs/cq/personalization/components/contextstores/profiledata
context store component gebruikt deze structuur om gegevens van de opslag van de profielzitting te tonen. De cq-cc-thumbnail
-klasse plaatst de miniatuurafbeelding. De cq-cc-store-property-level*x*
de klassen formatteren de alfanumerieke gegevens:
- level0, level1, en level2 worden verticaal verdeeld, en gebruiken een witte doopvont.
- niveau3 en eventuele extra niveaus worden horizontaal verdeeld en gebruiken een wit lettertype met een donkerdere achtergrond.
Sessieopslaggegevens renderen voor componenten van het energieopslagsysteem rendering-session-store-data-for-genericstore-components
Om opslaggegevens terug te geven die een component van de algemeen opslag gebruiken, moet u:
- Voeg de personalization:storeRendererTag-tag toe aan het JSP-script van de component om de naam van de sessieopslag te identificeren.
- Voer een rendermethode op de klasse van de zittingsopslag uit.
De SAP-winkel identificeren identifying-the-genericstore-session-store
De personalisatietag verstrekt personalization:storePropertyTag
-tag die de waarde van een eigenschap uit een sessiewinkel weergeeft. Als u de tag wilt gebruiken, neemt u de volgende coderegel op in uw JSP-bestand:
<%@taglib prefix="personalization" uri="https://www.day.com/taglibs/cq/personalization/1.0" %>
De tag heeft de volgende indeling:
<personalization:storeRendererTag store="store_name"/>
De rendermethode Sessiearchief implementeren implementing-the-session-store-renderer-method
Uw zittingsopslag zal dan een "renderer"methode nodig hebben die zal worden geroepen telkens als de component moet worden teruggegeven. De renderfunctie wordt aangeroepen met twee parameters:
-
@param {String} store
De winkel die moet worden gerenderd
-
@param {String} divId
Id van de div waarin de opslag moet worden teruggegeven.
Interactie met Sessiewinkels interacting-with-session-stores
Gebruik javascript om met zittingsopslag in wisselwerking te staan.
Sessiewinkels openen accessing-session-stores
Vraag een voorwerp van de zittingsopslag om gegevens aan de opslag te lezen of te schrijven. CQ_Analytics.ClientContextMgr
biedt toegang tot opslagruimten op basis van de naam van de winkel. Gebruik na het verkrijgen de methoden van de CQ-Analytics.SessionStore
of CQ-Analytics.PersistedSessionStore
om met opslaggegevens in wisselwerking te staan.
In het volgende voorbeeld wordt het profile
opslaan en vervolgens de formattedName
eigenschap uit de winkel.
function getName(){
var profilestore = CQ_Analytics.ClientContextMgr.getRegisteredStore("profile");
if(profilestore){
return profilestore.getProperty("formattedName", false);
} else {
return null;
}
}
Listener maken om te reageren op een update voor een sessiewinkel creating-a-listener-to-react-to-a-session-store-update
Sessie slaat brandgebeurtenissen op, zodat het mogelijk is om listeners toe te voegen en gebeurtenissen te activeren die op deze gebeurtenissen zijn gebaseerd.
De sessiewinkels zijn gebaseerd op de Observable
patroon. Zij worden uitgebreid CQ_Analytics.Observable
die de addListener
methode.
In het volgende voorbeeld wordt een listener toegevoegd aan de update
de profile
de zittingsopslag.
var profileStore = ClientContextMgr.getRegisteredStore("profile");
if( profileStore ) {
//callback execution context
var executionContext = this;
//add "update" event listener to store
profileStore.addListener("update",function(store, property) {
//do something on store update
},executionContext);
}
Controleren of een Sessiewinkel is gedefinieerd en geïnitialiseerd checking-that-a-session-store-is-defined-and-initialized
Sessiewinkels zijn pas beschikbaar als ze zijn geladen en geïnitialiseerd met gegevens. De volgende factoren kunnen de timing van de beschikbaarheid van de zittingsopslag beïnvloeden:
- Pagina laden
- JavaScript laden
- Uitvoeringstijd van JavaScript
- Responstijden voor XHR-verzoeken
- Dynamische wijzigingen in de sessiewinkel
Gebruik de CQ_Analytics.ClientContextUtils
object onStoreRegistered
en onStoreInitialized
methoden om sessiewinkels te openen alleen wanneer deze beschikbaar zijn. Met deze methoden kunt u gebeurtenislisteners registreren die reageren op sessieregistratie- en initialisatiegebeurtenissen.
In het volgende voorbeeld wordt het onStoreRegistered
de profile
de zittingsopslag. Wanneer de winkel is geregistreerd, wordt een listener toegevoegd aan de update
gebeurtenis van de zittingsopslag. Wanneer de opslag wordt bijgewerkt, de inhoud van <div class="welcome">
-element op de pagina wordt bijgewerkt met de naam van het profile
opslaan.
//listen for the store registration
CQ_Analytics.ClientContextUtils.onStoreRegistered("profile", listen);
//listen for the store's update event
function listen(){
var profilestore = CQ_Analytics.ClientContextMgr.getRegisteredStore("profile");
profilestore.addListener("update",insertName);
}
//insert the welcome message
function insertName(){
$("div.welcome").text("Welcome "+getName());
}
//obtain the name from the profile store
function getName(){
var profilestore = CQ_Analytics.ClientContextMgr.getRegisteredStore("profile");
if(profilestore){
return profilestore.getProperty("formattedName", false);
} else {
return null;
}
}
Een eigenschap uitsluiten van de sessionpersistentie-cookie excluding-a-property-from-the-sessionpersistence-cookie
Een eigenschap van een PersistedSessionStore
van het voortbestaan van de sessionpersistence
cookie), voegt u de eigenschap toe aan de niet-voortgezette eigenschappenlijst van de voortgezette sessieopslag.
Zie CQ_Analytics.PersistedSessionStore.setNonPersisted(propertyName)
CQ_Analytics.ClientContextUtils.onStoreRegistered("surferinfo", function(store) {
//this will exclude the browser, OS and resolution properties of the surferinfo session store from the
store.setNonPersisted("browser");
store.setNonPersisted("OS");
store.setNonPersisted("resolution");
});
De apparaatschuifregelaar configureren configuring-the-device-slider
Voorwaarden conditions
De huidige pagina moet een bijbehorende mobiele pagina hebben; dit wordt alleen bepaald als op de pagina een LiveCopy is geconfigureerd met een mobiele rollout-configuratie ( rolloutconfig.path.toLowerCase
contains mobile
).
Configuratie configuration
Bij het schakelen van de desktoppagina naar het bijbehorende mobiele equivalent:
-
De DOM van de mobiele pagina wordt geladen.
-
De belangrijkste
div
(vereist) die de inhoud bevat, wordt uitgepakt en in de huidige desktoppagina geïnjecteerd. -
De CSS- en body-klassen die moeten worden geladen, moeten handmatig worden geconfigureerd.
Bijvoorbeeld:
window.CQMobileSlider["geometrixx-outdoors"] = {
//CSS used by desktop that need to be removed when mobile
DESKTOP_CSS: [
"/etc/designs/${app}/clientlibs_desktop_v1.css"
],
//CSS used by mobile that need to be removed when desktop
MOBILE_CSS: [
"/etc/designs/${app}/clientlibs_mobile_v1.css"
],
//id of the content that needs to be removed when mobile
DESKTOP_MAIN_ID: "main",
//id of the content that needs to be removed when desktop
MOBILE_MAIN_ID: "main",
//body classes used by desktop that need to be removed when mobile
DESKTOP_BODY_CLASS: [
"page"
],
//body classes used by mobile that need to be removed when desktop
MOBILE_BODY_CLASS: [
"page-mobile"
]
};
Voorbeeld: Een aangepaste Context Store-component maken example-creating-a-custom-context-store-component
In dit voorbeeld maakt u een contextopslagcomponent die gegevens van een externe service ophaalt en deze in de sessieopslag opslaat:
- Breidt de genericstoreproperties-component uit.
- Initialiseert een winkel met een
CQ_Analytics.JSONPStore
javascript-object. - Roept de dienst JSONP om gegevens terug te winnen en het toe te voegen aan de opslag.
- Geeft de gegevens in de Context van de Cliënt terug.
De geoloc-component toevoegen add-the-geoloc-component
Maak een CQ-toepassing en voeg de geoloc-component toe.
-
CRXDE Lite openen in uw webbrowser (http://localhost:4502/crx/de).
-
Klik met de rechtermuisknop op de knop
/apps
en klik op Maken > Map maken. Geef een naam op voormyapp
en klik vervolgens op OK. -
Op dezelfde manier verderop
myapp
, maakt u een map met de naamcontextstores
. " -
Klik met de rechtermuisknop op de knop
/apps/myapp/contextstores
en klik op Maken > Component maken. Geef de volgende eigenschapswaarden op en klik op Volgende:- Label: geoloc
- Titel: Locatiewinkel
- Supertype:
cq/personalization/components/contextstores/genericstoreproperties
- Groep: Clientcontext
-
Klik in het dialoogvenster Component maken op Volgende op elke pagina totdat de knop OK is ingeschakeld. Klik vervolgens op OK.
-
Klik op Alles opslaan.
Het dialoogvenster Bewerken geoloc maken create-the-geoloc-edit-dialog
Voor de component Context Store is een dialoogvenster voor bewerken vereist. Het dialoogvenster voor geoloc-bewerking bevat een statisch bericht dat aangeeft dat er geen eigenschappen zijn die kunnen worden geconfigureerd.
-
Klik met de rechtermuisknop op de knop
/libs/cq/personalization/components/contextstores/genericstoreproperties/dialog
en klik op Kopiëren. -
Klik met de rechtermuisknop op de knop
/apps/myapp/contextstores/geoloc
en klik op Plakken. -
Verwijder alle onderliggende knooppunten onder het knooppunt /apps/myapp/contextstores/geoloc/dialog/items/items/tab1/items:
- winkel
- eigenschappen
- miniatuur
-
Klik met de rechtermuisknop op de knop
/apps/myapp/contextstores/geoloc/dialog/items/items/tab1/items
en klik op Maken > Knop maken. Geef de volgende eigenschapswaarden op en klik op OK:- Naam: static
- Type: cq:Widget
-
Voeg de volgende eigenschappen toe aan het knooppunt:
table 0-row-3 1-row-3 2-row-3 3-row-3 Naam Type Waarde cls String x-form-field-set-description text String Voor de geoloc-component is geen configuratie vereist. xtype String static -
Klik op Alles opslaan.
Het initialisatiescript maken create-the-initialization-script
Voeg een init.js.jsp-bestand toe aan de geoloc-component en gebruik dit bestand om de sessieopslag te maken, de locatiegegevens op te halen en toe te voegen aan de winkel.
Het bestand init.js.jsp wordt uitgevoerd wanneer de clientcontext door de pagina wordt geladen. Tegen deze tijd wordt de JavaScript-API voor clientcontext geladen en beschikbaar voor uw script.
-
Klik met de rechtermuisknop op de knop
/apps/myapp/contextstores/geoloc
knoop en klik Maken -> Bestand maken. Geef een naam op voor init.js.jsp en klik op OK. -
Voeg de volgende code toe boven aan de pagina en klik op Alles opslaan.
code language-java <%@page contentType="text/javascript;charset=utf-8" %><% %><%@include file="/libs/foundation/global.jsp"%><% log.info("***** initializing geolocstore ****"); String store = "locstore"; String jsonpurl = "https://api.wipmania.com/jsonp?callback=${callback}"; %> var locstore = CQ_Analytics.StoreRegistry.getStore("<%= store %>"); if(!locstore){ locstore = CQ_Analytics.JSONPStore.registerNewInstance("<%= store %>", "<%= jsonpurl %>",{}); } <% log.info(" ***** done initializing geoloc ************"); %>
De gegevens van de geoloc Session Store renderen render-the-geoloc-session-store-data
Voeg de code aan het JSP dossier van de geologische component toe om de opslaggegevens in de Context van de Cliënt terug te geven.
-
Open in CRXDE Lite de
/apps/myapp/contextstores/geoloc/geoloc.jsp
bestand. -
Voeg de volgende HTML code onder de sectie toe:
code language-xml <%@taglib prefix="personalization" uri="https://www.day.com/taglibs/cq/personalization/1.0" %> <div class="cq-cc-store"> <div class="cq-cc-content"> <div class="cq-cc-store-property cq-cc-store-property-level0"> Continent: <personalization:storePropertyTag propertyName="address/continent" store="locstore"/> </div> <div class="cq-cc-store-property cq-cc-store-property-level1"> Country: <personalization:storePropertyTag propertyName="address/country" store="locstore"/> </div> <div class="cq-cc-store-property cq-cc-store-property-level2"> City: <personalization:storePropertyTag propertyName="address/city" store="locstore"/> </div> <div class="cq-cc-store-property cq-cc-store-property-level3"> Latitude: <personalization:storePropertyTag propertyName="latitude" store="locstore"/> </div> <div class="cq-cc-store-property cq-cc-store-property-level4"> Longitude: <personalization:storePropertyTag propertyName="longitude" store="locstore"/> </div> </div> <div class="cq-cc-clear"></div> </div>
-
Klik op Alles opslaan.
Component toevoegen aan clientcontext add-the-component-to-client-context
Voeg de component van de Opslag van de Plaats aan de Context van de Cliënt toe zodat het wordt geïnitialiseerd wanneer de pagina laadt.
-
Open de startpagina Geometrixx Outdoors op de auteurinstantie (http://localhost:4502/content/geometrixx-outdoors/en.html).
-
Klik op Ctrl-Alt-c (vensters) of Control-option-c (Mac) om Client Context te openen.
-
Klik op het bewerkingspictogram boven aan Client Context om Client Context Designer te openen.
-
Sleep de component van de Opslag van de Plaats aan de Context van de Cliënt.
Zie Locatie-informatie in clientcontext see-the-location-information-in-client-context
Open de homepage van Geometrixx Outdoors in geef wijze uit en open dan de Context van de Cliënt om de gegevens van de component van de Opslag van de Plaats te zien.
- Open de Engelse pagina van de site Geometrixx Outdoors. (http://localhost:4502/content/geometrixx-outdoors/en.html)
- Druk op Ctrl+Alt+c (vensters) of Control+Option+c (Mac) om de clientcontext te openen.
Een aangepaste clientcontext maken creating-a-customized-client-context
Als u een tweede clientcontext wilt maken, moet u de vertakking dupliceren:
/etc/clientcontext/default
-
De submap:
/content
bevat de inhoud van de aangepaste clientcontext.
-
De map:
/contextstores
staat u toe om verschillende configuraties voor de contextopslag te bepalen.
Als u de aangepaste clientcontext wilt gebruiken, bewerkt u de eigenschappath
in de ontwerpstijl van de component van de cliëntcontext, zoals inbegrepen in het paginamalplaatje. Bijvoorbeeld als de standaardlocatie van:/libs/cq/personalization/components/clientcontext/design_dialog/items/path