Création de classes de balises spécifiques au fournisseur en prolongeant les classes de balises de base
Pour chaque événement pour lequel vous devez capturer des données d'analyse, créez une classe de balises spécifique au fournisseur qui étend la classe de balise de base. Par exemple, si vous souhaitez capturer des données sur les événements d'affichage de produit, prolongez la classe ProductBaseTag. Chaque classe de balise de base génère des données standard pour l'événement associé ; toutefois, les classes de balises de base prennent en charge des paramètres optionnels que vous pouvez utiliser pour envoyer des informations supplémentaires au système d'analyse externe, si nécessaire.
Avant de commencer
Pourquoi et quand exécuter cette tâche
- Étendre la classe de balise de base pour l'événement correspondant
- Implémenter la logique pour générer les fonctions JavaScript spécifiques au fournisseur
- Écrire le JavaScript généré dans le flux de sortie HTML
Procédure
- Ouvrez HCL Commerce Developer et basculez vers la vue Explorateur d'entreprise.
- Créez un package pour vos classes de balises spécifiques au fournisseur, à l'emplacement correct pour la version de HCL Commerce Version 9 que vous exécutez :
- Dans le nouveau package, créez une nouvelle classe d'implémentation de balise spécifique au fournisseur qui s'étend à partir de chaque classe de balise de base que vous souhaitez utiliser. La liste suivante affiche les noms de balises mappés aux classes de balises de base :
- Balise d'affichage de page – com.ibm.commerce.bi.taglib.CommonBaseTag
- Balise de produit – com.ibm.commerce.bi.taglib.ProductBaseTag
- Balise de panier – com.ibm.commerce.bi.taglib.CartBaseTag
- Balise de commande – com.ibm.commerce.bi.taglib.OrderBaseTag
- Balise d'enregistrement – com.ibm.commerce.bi.taglib.MembershipBaseTag
- Balise d'URL de campagne – com.ibm.commerce.bi.taglib.CampaignBaseTag
- Balise d'URL de contenu – com.ibm.commerce.bi.taglib.BaseTag
Voici un exemple de classe de balises spécifique au fournisseur qui étend la classe CommonBaseTag pour les affichages de page :
public class MyPageViewTag extends CommonBaseTag { } - Dans chaque classe de balises spécifique au fournisseur, implémentez la logique pour envoyer les données d'analyse au système d'analyse externe.
Voici un exemple de code pour une implémentation spécifique au fournisseur de la balise d'affichage de la page. Le fournisseur d'analyse externe utilise une fonction de balisage JavaScript pour capturer les données d'analyse. Pour ce fournisseur, la classe d'implémentation de balise doit écrire le JavaScript dans le flux de sortie. La fonction JavaScript du fournisseur pour l'affichage de page ne nécessite que le nom de la page en tant que paramètre :
public int doEndTag() throws JspTagException { final String METHODNAME = "doEndTag"; final String PAGEVIEW_TAG = "myPageViewTag"; if (getConfig().isEnabled(getCommandContext().getStoreId())) { try { HashMap paraMap = getParamMap(); if (paraMap != null) { StringBuffer tags = new StringBuffer(); ArrayList paramList = new ArrayList(); String pageName = (String) paraMap .get(TagConstants.PAGE_ID_KEY); String storeId = (String) paraMap .get(TagConstants.STORE_ID_KEY); Integer strId = Integer.parseInt(storeId); if (pageName == null || pageName.trim().length() == 0) { pageName = "\"'\" + document.title + \"'\""; } else { pageName ="\"" + UIUtil.toJavaScript(pageName)+ "\""; } tags.append(PAGEVIEW_TAG); tags.append("("); tags.append(pageName); tags.append(");"); // Get the analytics configuration registry instance to write any // vendor specific configuration part along with the tagging function. // The configuration will be defined in the biConfig.xml file StringBuffer out = new StringBuffer(getConfig() .getInstrumentation(strId)); out.append(getConfig().getHeader(strId)); out.append(tags.toString()); out.append(getConfig().getFooter(strId)); // Write the generated JavaScript tagging function to the // output stream pageContext.getOut().write(out.toString()); } } catch (Exception e) { if (ECTrace.traceEnabled(ECTraceIdentifiers.COMPONENT_BI)) { ECTrace.trace(ECTraceIdentifiers.COMPONENT_BI, CLASSNAME, METHODNAME, " Exception caught :" + e.getMessage()); throw new JspTagException(e.getMessage()); } } } return EVAL_PAGE; } - Sauvegardez le fichier de classe.