AEM 6.4 heeft het einde van de uitgebreide ondersteuning bereikt en deze documentatie wordt niet meer bijgewerkt. Raadpleeg voor meer informatie onze technische ondersteuningsperioden. Ondersteunde versies zoeken hier.
Adobe Analytics gebruikt de s.pageName
om pagina's op unieke wijze te identificeren en de gegevens die voor de pagina's worden verzameld, te koppelen. Typisch, voert u de volgende taken in AEM uit om een waarde aan dit bezit toe te wijzen dat AEM naar Analytics verzendt:
Gebruik het Cloud Service Framework Analytics om een CQ-variabele toe te wijzen aan Analytics s.pageName
eigenschap. (Zie Componentgegevens toewijzen aan Adobe Analytics-eigenschappen.)
Ontwerp de paginacomponent zodanig dat deze de CQ-variabele bevat die u toewijst aan de s.pageName
eigenschap. (Zie Adobe Analytics-tracking voor aangepaste componenten implementeren.)
Om analysegegevens in de console van Plaatsen en in Inzicht van de Inhoud bloot te stellen, vereist AEM de waarde van s.pageName
eigenschap voor elke pagina. De Java API voor AEM Analytics definieert de AnalyticsPageNameProvider
interface die u implementeert om de Sites-console en Content Insights te voorzien van de waarde van de s.pageName
eigenschap. Uw AnaltyicsPageNameProvider
de dienst verhelpt het pageName bezit op de server voor rapporteringsdoeleinden, aangezien het dynamisch kan worden geplaatst gebruikend Javascript op de cliënt voor het volgen doeleinden.
De DefaultPageNameProvider
de dienst is de standaarddienst die de waarde van bepaalt s.pageName
eigenschap die moet worden gebruikt voor het ophalen van analysegegevens voor een pagina. De dienst werkt samen met de component van de AEM stichtingspagina ( /libs/foundation/components/page
). Deze paginacomponent definieert de volgende CQ-variabelen die aan de s.pageName
eigenschap:
pagedata.path
: De waarde wordt ingesteld op het paginapad.pagedata.title
: De waarde wordt ingesteld op de paginatitel.pagedata.navTitle
: De waarde wordt ingesteld op de titel van de paginanavigatie.De DefaultPageNameProvider
de dienst bepaalt welke van deze variabelen CQ aan in kaart wordt gebracht s.pageName
in het Cloud-serviceframework Analytics. De dienst bepaalt dan het aangewezen paginabezit voor het terugwinnen van analyserapportgegevens te gebruiken:
pagedata.path
: De service gebruikt page.getPath()
pagedata.title
: De service gebruikt page.getTitle()
pagedata.navTitle
: De service gebruikt page.getNavigationTitle()
De page
het object is com.day.cq.wcm.api.Page
Java-object voor de pagina.
Als u geen CQ-variabele toewijst aan de s.pageName
eigenschap in het framework, de waarde voor s.pageName
wordt gegenereerd op basis van het paginapad. De pagina met het pad /content/geometrixx/en
gebruikt de waarde content:geometrixx:en
for s.pageName
.
De service DefaultPageNameProvider gebruikt een servicerangschikking van 100.
Voor het bijhouden van een complete geschiedenis van analysegegevens voor een pagina moet de waarde van de eigenschap s.pageName die voor een pagina wordt gebruikt, nooit worden gewijzigd. Nochtans, kunnen de analtytische eigenschappen die de component van de stichtingspagina bepaalt gemakkelijk worden veranderd. Als u bijvoorbeeld een pagina verplaatst, wijzigt u de waarde van pagedata.path
en breekt de continuïteit van de rapportagegeschiedenis:
Om de continuïteit van de rapportage te waarborgen, moet de waarde van s.pageName
moeten de volgende kenmerken hebben:
Een aangepaste pagina-component kan bijvoorbeeld een pagina-eigenschap bevatten die auteurs gebruiken om een unieke id op te geven voor de pagina die wordt gebruikt als de waarde voor de component s.pageProperties
eigenschap:
s.pageProperties
in het Analytics-framework.Vraag uw consultant voor Analytics om hulp bij het ontwikkelen van een effectieve strategie voor uw s.pageName
waarde.
Implementeer de com.day.cq.analytics.sitecatalyst.AnalyticsPageNameProvider
interface als dienst OSGi om de logica aan te passen die terugwint s.pageName
eigenschapswaarde. De de paginaanalyses van Plaatsen en Inzicht van de Inhoud gebruiken de dienst om rapportgegevens van Analytics terug te winnen.
De interface AnalyticsPageNameProvider definieert twee methoden die u moet implementeren:
getPageName
: Retourneert een String
waarde die de waarde vertegenwoordigt die als de s.pageName
eigenschap.
getResource
: Retourneert een org.apache.sling.api.resource.Resource
object dat staat voor de pagina die is gekoppeld aan de s.pageName
eigenschap.
Beide methoden hebben een com.day.cq.analytics.sitecatalyst.AnalyticsPageNameContext
object als parameter. De AnalyticsPageNameContext
class geeft informatie over de context van de analytische aanroepen:
Framework
-object voor de cloudserviceconfiguratie Analytics.Resource
-object voor de pagina.ResourceResolver
-object voor de pagina.De klasse biedt ook een setter voor de paginanaam.
Het volgende voorbeeld AnalyticsPageNameProvider
de implementatie ondersteunt een aangepaste pagina-component:
s.pageName
eigenschap.jcr:content
knooppunt van de pagina-instanties.s.pageName
eigenschap wordt aangeroepen pagedata.pagename
. Deze eigenschap wordt toegewezen aan de s.pageName
in het Analytics-framework.De volgende uitvoering van de getPageName
De methode keert de waarde van het pageName knoopbezit terug als de kaderafbeelding correct wordt gevormd:
public String getPageName(AnalyticsPageNameContext context) {
String pageName = null;
Framework framework = context.getFramework();
Resource resource = context.getResource();
if (resource != null && framework != null && framework.mapsSCVariable(S_PAGE_NAME)) {
String cqVar = framework.getMapping(S_PAGE_NAME);
Page page = resource.adaptTo(Page.class);
if (cqVar.equals("pagedata.pagename")) {
pageName = page.getProperties().get("pageName",null);
}
}
return pageName;
}
De volgende implementatie van de methode getResource keert het voorwerp van het Middel voor de pagina terug:
public Resource getResource(AnalyticsPageNameContext context) {
Resource res = null;
Framework framework = context.getFramework();
ResourceResolver resolver = context.getResourceResolver();
String pageName = context.getPageName();
String basePath = context.getBasePath();
if (pageName != null && basePath != null && resolver != null
&& framework != null && framework.mapsSCVariable(S_PAGE_NAME)) {
String cqVar = framework.getMapping(S_PAGE_NAME);
if (cqVar.equals("pagedata.pagename")) {
Iterator<Resource>
hits = resolver.findResources(createQuery(pageName, basePath, "pagename"), Query.JCR_SQL2);
if (hits.hasNext()) {
res = hits.next();
res = res.getParent();
}
}
}
return res;
}
private String createQuery(String pageName, String basePath, String propName) {
return "SELECT * FROM [cq:PageContent] WHERE ISDESCENDANTNODE(["
+ basePath + "]) and [" + propName + "] = \"" + pageName + "\"";
}
De volgende code vertegenwoordigt de volledige klasse, met inbegrip van SCR annotaties die de dienst vormen. Merk op dat de de dienstrangschikking 200 is die de standaarddienst met voeten treedt.
/*************************************************************************
*
* ADOBE CONFIDENTIAL
* __________________
*
* Copyright 2019 Adobe Systems Incorporated
* All Rights Reserved.
*
* NOTICE: All information contained herein is, and remains
* the property of Adobe Systems Incorporated and its suppliers,
* if any. The intellectual and technical concepts contained
* herein are proprietary to Adobe Systems Incorporated and its
* suppliers and may be covered by U.S. and Foreign Patents,
* patents in process, and are protected by trade secret or copyright law.
* Dissemination of this information or reproduction of this material
* is strictly forbidden unless prior written permission is obtained
* from Adobe Systems Incorporated.
**************************************************************************/
package com.day.cq.analytics.sitecatalyst;
import java.util.Iterator;
import javax.jcr.query.Query;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.osgi.framework.Constants;
import org.osgi.service.component.annotations.Component;
import com.day.cq.analytics.sitecatalyst.AnalyticsPageNameContext;
import com.day.cq.analytics.sitecatalyst.AnalyticsPageNameProvider;
import com.day.cq.analytics.sitecatalyst.Framework;
import com.day.cq.wcm.api.Page;
import static com.day.cq.analytics.sitecatalyst.AnalyticsPageNameContext.S_PAGE_NAME;
/**
* Default implementation of {@link AnalyticsPageNameProvider} that resolves
* page title, path or navTitle if mapped in {@link Framework}.
*/
@Component(
service = { AnalyticsPageNameProvider.class },
property = {
Constants.SERVICE_DESCRIPTION + "=Example Page Name Resolver implementation",
Constants.SERVICE_RANKING + ":Integer=200"
}
)
public class ExamplePageNameProvider implements AnalyticsPageNameProvider {
public String getPageName(AnalyticsPageNameContext context) {
String pageName = null;
Framework framework = context.getFramework();
Resource resource = context.getResource();
if (resource != null && framework != null && framework.mapsSCVariable(S_PAGE_NAME)) {
String cqVar = framework.getMapping(S_PAGE_NAME);
Page page = resource.adaptTo(Page.class);
if (cqVar.equals("pagedata.path")) {
pageName = page.getProperties().get("pageName",null);
}
}
return pageName;
}
public Resource getResource(AnalyticsPageNameContext context) {
Resource res = null;
Framework framework = context.getFramework();
ResourceResolver resolver = context.getResourceResolver();
String pageName = context.getPageName();
String basePath = context.getBasePath();
if (pageName != null && basePath != null && resolver != null
&& framework != null && framework.mapsSCVariable(S_PAGE_NAME)) {
String cqVar = framework.getMapping(S_PAGE_NAME);
if (cqVar.equals("pagedata.pagename")) {
Iterator<Resource>
hits = resolver.findResources(createQuery(pageName, basePath, "pagename"), Query.JCR_SQL2);
if (hits.hasNext()) {
res = hits.next();
res = res.getParent();
}
}
}
return res;
}
private String createQuery(String pageName, String basePath, String propName) {
return "SELECT * FROM [cq:PageContent] WHERE ISDESCENDANTNODE(["
+ basePath + "]) and [" + propName + "] = \"" + pageName + "\"";
}
}