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

Passez en revue la rubrique suivante pour vous familiariser avec les balises de base disponibles :

Bibliothèque de balises d'analyse pour HCL Commerce

Pourquoi et quand exécuter cette tâche

La classe de balises spécifique au fournisseur doit :
  • É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

  1. Ouvrez HCL Commerce Developer et basculez vers la vue Explorateur d'entreprise.
  2. 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 :
    1. Accédez à l'emplacement où vous allez créer le package :
      • Développez crs-web > src dans l'Explorateur d'entreprise.
      • Développez crs-extensions-logic > src dans l'Explorateur d'entreprise.
      Remarque : Si vous développez pour un magasin local, placez ce package dans le projet WebSphereCommerceServerExtensionsLogic.
    2. Cliquez avec le bouton droit de la souris sur le dossier src, puis cliquez sur Nouveau > Package.
    3. Dans la zone Nom, tapez com.your_company_name.bi.taglib
    4. Vérifiez que WebSphereCommerceServerExtensionsLogic/src est spécifié dans le champ Dossier source.
    5. Cliquez sur Terminer.
  3. 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 {
    
    } 
    
  4. 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;
    }
     
  5. Sauvegardez le fichier de classe.