Creación de clases de códigos específicas del proveedor ampliando las clases de etiquetas base

Para cada suceso para el que debe capturar datos de análisis, cree una clase de etiqueta específica del proveedor que amplíe la clase de etiquetas base. Por ejemplo, si desea capturar datos sobre sucesos de vista de producto, amplíe la clase ProductBaseTag. Cada clase de etiquetas base genera datos estándar para su suceso asociado; sin embargo, las clases de etiquetas base dan soporte a parámetros opcionales que puede utilizar para enviar información adicional al sistema de análisis externo, si es necesario.

Antes de empezar

Revise el siguiente tema para familiarizarse con las etiquetas base disponibles:

Biblioteca de etiquetas de análisis para HCL Commerce

Por qué y cuándo se efectúa esta tarea

La clase de etiquetas específica del proveedor debe:
  • Ampliar la clase de etiquetas base para el suceso correspondiente
  • Implementar la lógica para generar las funciones de específicas del proveedor
  • Escriba el código JavaScript generado en la corriente de salida HTML

Procedimiento

  1. Abra HCL Commerce Developer y cambie a la vista Explorador de empresa.
  2. Cree un paquete para las clases de etiquetas específicas del proveedor, en la ubicación correcta para la versión de HCL Commerce Version 9 que está ejecutando:
    1. Vaya a la ubicación en la que va a crear el paquete:
      • Expanda CRS-web > src en el Explorador de empresa.
      • Expanda CRS-Extensions-Logic > src en el Explorador de empresa.
      Nota: Si está desarrollando para una tienda local, coloque este paquete en el proyecto WebSphereCommerceServerExtensionsLogic.
    2. Pulse el botón derecho del ratón en la carpeta src; luego pulse Nuevo > Paquete.
    3. En el campo Nombre, escriba com.your_company_name.bi.taglib
    4. Asegúrese de que se especifica WebSphereCommerceServerExtensionsLogic/src en el campo Carpeta de origen.
    5. Pulse Finalizar.
  3. En el nuevo paquete, cree una nueva clase de implementación de etiqueta específica del proveedor que se amplía a partir de cada clase de etiquetas base que desea utilizar. La lista siguiente muestra los nombres de etiquetas correlacionados con las clases de etiquetas base:
    • Etiqueta de vista de página: com.ibm.commerce.bi.taglib.CommonBaseTag
    • Etiqueta de producto: com.ibm.commerce.bi.taglib.ProductBaseTag
    • Etiqueta de carro de la compra: com.ibm.commerce.bi.taglib.CartBaseTag
    • Etiqueta de pedido: com.ibm.commerce.bi.taglib.OrderBaseTag
    • Etiqueta de registro: com.ibm.commerce.bi.taglib.MembershipBaseTag
    • Etiqueta de URL de campaña: com.ibm.commerce.bi.taglib.CampaignBaseTag
    • Etiqueta de URL de contenido: com.ibm.commerce.bi.taglib.BaseTag

    A continuación se muestra un ejemplo de la clase de etiquetas específica del proveedor que amplía la clase CommonBaseTag para las vistas de página:

    public class MyPageViewTag extends CommonBaseTag {
    
    } 
    
  4. En cada clase de etiquetas específica del proveedor, implemente la lógica para enviar los datos de análisis al sistema de análisis externo.

    A continuación se muestra una etiqueta de ejemplo para una implementación específica del proveedor de la etiqueta de vista de página. El proveedor de análisis externo utiliza una función de codificación JavaScript para capturar los datos de análisis. Para este proveedor, la clase de implementación de etiquetas debe escribir la función JavaScript en la corriente de salida. La función JavaScript del proveedor para la vista de página requiere solo el nombre de página como parámetro:

    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. Guarde el archivo de clase.