Publicar y recuperar información con sucesos wcTopic para widgets

Si el widget personalizado debe utilizar datos generados por un widget diferente o proporcionar datos que otro widget necesita, puede utilizar un suceso wcTopic para recuperar o proporcionar los datos. Para utilizar datos generados por un widget, puede suscribirse al suceso wcTopic que el otro widget publica. Para que un widget proporcione información que otro widget pueda utilizar, puede utilizar un suceso wcTopic para publicar esta información. Los otros widgets pueden suscribirse al evento wcTopic que publicó.

Recuperar información de otros widgets con sucesos wcTopic

Si un widget publica un suceso wcTopic que contiene todos los datos necesarios para el widget, puede hacer que el widget personalizado se suscriba al suceso wcTopic para recuperar los datos. Utilice la API wcTopic.subscribe para suscribirse a los sucesos de widget publicados. Para suscribirse a un suceso wcTopic publicado, el código siguiente debe incluirse en el archivo JSP de nivel superior para el widget que tiene que suscribirse al suceso wcTopic:
wcTopic.subscribe('identifier_eventAction', location.function);	
Donde
identifier
El widget que genera los datos dentro del suceso publicado.
eventAction
El suceso al que se está suscribiendo. Por ejemplo, si se cambia o completa la información de otro widget.
location
El archivo al que está suscrito que incluye el código para publicar el suceso.
function
La función para llamar al widget personalizado cuando se recupera la información del suceso publicado.
Por ejemplo, en la página Detalles del producto, el widget de Imagen de tamaño normal se suscribe a los siguientes sucesos wcTopic publicados mediante el widget de Atributos de definición:
DefiningAttributes_Changed
Se publica cuando se selecciona el valor para un atributo mientras otros atributos no tienen valores seleccionados y el código de artículo no se resuelve. Por ejemplo, cuando un comprador selecciona el tamaño de un producto, pero todavía no ha seleccionado el valor para el color del producto.
DefiningAttributes_Resolved
Se publica cuando se selecciona el valor para un atributo y los demás atributos tienen valores y el se resuelve código de artículo.
Estos sucesos los utiliza el widget de Imagen de tamaño normal para determinar la imagen del producto correcta que se debe visualizar cuando los compradores seleccionan valores de atributos. El widget de Imagen de tamaño normal se suscribe a estos sucesos con el siguiente código:
			wcTopic.subscribe('DefiningAttributes_Resolved', productDisplayJS.updateProductImage);
			wcTopic.subscribe('DefiningAttributes_Changed', productDisplayJS.updateProductImage);			
La publicación de estos sucesos y más sucesos para los widgets que se visualizan en la página Detalles del producto se definen en el archivo crs-web\WebContent\widgetdir\Common\CatalogEntry\javascript\ProductDisplay.js.

La tabla siguiente identifica los sucesos wcTopic que se publican de forma predeterminada. Puede hacer que un widget se suscriba a los sucesos para recuperar datos para que los widget la utilicen.

Sucesos de wcTopic que se publican de forma predeterminada.

Suceso de wcTopic Descripción (desencadenante de suceso) Parámetros publicados Archivo que publica el suceso
ShopperActions_Changed

Este suceso publica una notificación que indica que hay un cambio en la cantidad de un producto que un comprador está viendo.

separador

Este suceso publica la nueva cantidad del artículo después de que un comprador cambie la cantidad.

separador
  • LinuxAIXWC_eardir/Stores.war/widgetdir/Common/CatalogEntry/javascript/ProductDisplay.js
  • WindowsWC_eardir\Stores.war\widgetdir\Common\CatalogEntry\javascript\ProductDisplay.js
  • HCL Commerce Developerworkspace_dir\crs-web\WebContent\widgetdir\Common\CatalogEntry\javascript\ProductDisplay.js
DefiningAttributes_Changed_productId

Este suceso se produce cuando un comprador cambia los atributos de definición de una entrada de catálogo. Este suceso también se produce después de que el comprador guarde los cambios.

Este suceso concatena el ID de producto de la entrada de catálogo cambiada con el nombre de suceso. Suscríbase a este suceso cuando el widget necesite notificar los cambios en productos y entradas de catálogo específicas (códigos de artículo).

El suceso publica el ID de entrada de catálogo y el ID de producto de la entrada de catálogo que incluye los cambios de atributo de definición.

  • LinuxAIXWC_eardir/Stores.war/widgetdir/Common/CatalogEntry/javascript/ProductDisplay.js
  • WindowsWC_eardir\Stores.war\WebContent\widgetdir\Common\CatalogEntry\javascript\ProductDisplay.js
  • HCL Commerce Developerworkspace_dir\crs-web\WebContent\widgetdir\Common\CatalogEntry\javascript\ProductDisplay.js
DefiningAttributes_Changed

Este suceso se produce cuando un comprador cambia los atributos de definición de una entrada de catálogo. Este suceso también se produce después de que el comprador guarde los cambios.

El suceso publica el ID de entrada de catálogo y el ID de producto de la entrada de catálogo que incluye los cambios de atributo de definición.

  • LinuxAIXWC_eardir/Stores.war/widgetdir/Common/CatalogEntry/javascript/ProductDisplay.js
  • WindowsWC_eardir\Stores.war\widgetdir\Common\CatalogEntry\javascript\ProductDisplay.js
  • HCL Commerce Developerworkspace_dir\crs-web\WebContent\widgetdir\Common\CatalogEntry\javascript\ProductDisplay.js
DefiningAttributes_Resolved

Este suceso se produce cuando un comprador guarda los cambios en los atributos de definición de una entrada de catálogo.

El suceso publica el ID de entrada de catálogo y el ID de producto de la entrada de catálogo que incluye los cambios de atributos de definición guardados.

  • LinuxAIXWC_eardir/Stores.war/widgetdir/Common/CatalogEntry/javascript/ProductDisplay.js
  • WindowsWC_eardir\Stores.war\widgetdir\Common\CatalogEntry\javascript\ProductDisplay.js
  • HCL Commerce Developerworkspace_dir\crs-web\WebContent\widgetdir\Common\CatalogEntry\javascript\ProductDisplay.js
DefiningAttributes_Resolved_productId

Este suceso se produce cuando un comprador guarda los cambios en los atributos de definición de una entrada de catálogo dentro del carro de la compra.

Este suceso concatena el ID de producto de la entrada de catálogo cambiada con el nombre de suceso. Suscríbase a este suceso cuando el widget necesite notificar los cambios en productos y entradas de catálogo específicas (códigos de artículo).

El suceso publica el ID de entrada de catálogo y el ID de producto de la entrada de catálogo que incluye los cambios de atributos de definición guardados.

  • LinuxAIXWC_eardir/Stores.war/widgetdir/Common/CatalogEntry/javascript/ProductDisplay.js
  • WindowsWC_eardir\Stores.war\widgetdir\Common\CatalogEntry\javascript\ProductDisplay.js
  • HCL Commerce Developerworkspace_dir\crs-web\WebContent\widgetdir\Common\CatalogEntry\javascript\ProductDisplay.js
DefiningAttributes_Resolved_catalogEntryID

Este suceso se produce cuando un comprador guarda los cambios en los atributos de definición de una entrada de catálogo dentro del carro de la compra.

Este suceso concatena el ID de entrada de catálogo de la entrada de catálogo modificada con el nombre de suceso. Suscríbase a este suceso cuando el widget necesite notificar los cambios en entradas de catálogo específicas (códigos de artículo) dentro del carro de la compra.

El suceso publica el ID de entrada de catálogo para la nueva entrada de catálogo.

  • LinuxAIXWC_eardir/Stores.war/Aurora/javascript/Common/ShoppingAction.js
  • WindowsWC_eardir\Stores.war\Aurora\javascript\Common\ShoppingAction.js
  • HCL Commerce Developerworkspace_dir\crs-web\WebContent\Aurora\javascript\Common\ShoppingAction.js
DefiningAttributes_Resolved_productId

Este suceso se produce cuando un comprador guarda los cambios en los atributos de definición de una entrada de catálogo dentro del carro de la compra.

Este suceso concatena el ID de producto de la entrada de catálogo cambiada con el nombre de suceso. Suscríbase a este suceso cuando el widget necesite notificar los cambios en productos y entradas de catálogo específicas (códigos de artículo) dentro del carro de la compra.

El suceso publica el ID de entrada de catálogo y el ID de producto para la nueva entrada de catálogo.

  • LinuxAIXWC_eardir/Stores.war/Aurora/javascript/Common/ShoppingAction.js
  • WindowsWC_eardir\Stores.war\Aurora\javascript\Common\ShoppingAction.js
  • HCL Commerce Developerworkspace_dir\crs-web\WebContent\Aurora\javascript\Common\ShoppingAction.js
ProductInfo_Added

Este evento se produce después de que un comprador Haga clic en el botón añadir al carro de la compra. Este suceso se desencadena cuando la información del producto se añade al carro de la compra para el producto que el comprador ha añadido al carro.

Este suceso publica la siguiente información para el producto en la matriz,this.productAddedList
  • Nombre del producto
  • Imagen reducida
  • Precio
  • Cantidad
  • Atributos de producto si se seleccionan.

Si el producto que el cliente añade al carro de la compra es un paquete compuesto, la matriz contiene la información de cada producto del paquete. La información del paquete se devuelve en una sola lista con varias entradas (una entrada para cada producto que se incluye en el paquete).

  • LinuxAIXWC_eardir/Stores.war/Aurora/javascript/Common/ShoppingAction.js
  • WindowsWC_eardir\Stores.war\Aurora\javascript\Common\ShoppingAction.js
  • HCL Commerce Developerworkspace_dir\crs-web\WebContent\Aurora\javascript\Common\ShoppingAction.js
Quantity_changed

Este suceso publica una notificación que indica que hay un cambio en la cantidad de un producto en el carro de la compra.

En función de los detalles del producto, el suceso puede publicar la información de cantidad o publicar toda o parte de la información siguiente en forma de cadena de serialización JSONwcTopic.toJson(productDetails)
  • Tipo de entrada de catálogo
  • ID de entrada de catálogo
  • Cantidad
  • Precio
  • LinuxAIXWC_eardir/Stores.war/Aurora/javascript/Common/ShoppingAction.js
  • WindowsWC_eardir\Stores.war\Aurora\javascript\Common\ShoppingAction.js
  • HCL Commerce Developerworkspace_dir\crs-web\WebContent\Aurora\javascript\Common\ShoppingAction.js
DefiningAttributes_Resolved_shoppingActionsJS.baseCatalogEntryId

Este suceso se produce cuando un comprador guarda los cambios en los atributos de definición de una entrada de catálogo dentro del carro de la compra.

Al suscribirse a este suceso, se notifica a un widget cuando un comprador guarda cambios en los atributos de definición de una entrada de catálogo, indicando que el comprador tiene un código de artículo diferente dentro del carro de la compra.

Publica el valor del ID de entrada de catálogo del código de artículo que se acaba de añadir al carro. Este ID pasa al widget suscriptor como valor para el parámetroshoppingActionsJS.baseCatalogEntryId

  • LinuxAIXWC_eardir/Stores.war/Aurora/javascript/Common/ShoppingActionsServicesDeclaration.js
  • WindowsWC_eardir\Stores.war\Aurora\javascript\Common\ShoppingActionsServicesDeclaration.js
  • HCL Commerce Developerworkspace_dir\crs-web\WebContent\Aurora\javascript\Common\ShoppingActionsServicesDeclaration.js
Facet_Remove
Este evento se publica cuando un comprador elimina una faceta mientras examina la tienda. En función del tipo de faceta que el comprador elimina, este suceso también publica el ID de la faceta eliminada.
  • Si un comprador elimina una faceta que utiliza valores específicos que un comprador puede seleccionar, como por ejemplo nombres de marca, este evento publica la información de ID de faceta.
  • Si un comprador elimina una faceta de filtro de precio, como un rango de precios configurado por el comprador, el suceso no publica un ID de faceta.

Este suceso publica el ID de faceta si un comprador elimina una faceta que filtra por el ID específico de las facetas, este suceso publica el ID de filtro con notificación de que se produce el suceso.

  • LinuxAIXWC_eardir/Stores.war/widgetdir/com.ibm.commerce.store.widgets.CatalogEntryList/javascript/SearchBasedNavigationDisplay.js
  • WindowsWC_eardir\Stores.war\widgetdir\com.ibm.commerce.store.widgets.CatalogEntryList\javascript\SearchBasedNavigationDisplay.js
  • HCL Commerce Developerworkspace_dir\crs-web\WebContent\widgetdir\com.ibm.commerce.store.widgets.CatalogEntryList\javascript\SearchBasedNavigationDisplay.js
ProductInfo_Reset

Este evento se produce después de que se complete una operación de añadir al carro satisfactoria y se muestre la ventana del mini carro de la compra que confirma que la operación añadir al carro se ha completado. Cuando concluye la operación añadir al carro de la compra, la operación borra la información del producto para el artículo añadido al carro de la lógica del mini carro de la compra. Este suceso ProductInfo_Reset desencadena y publica la notificación de que la información del producto dentro del mini carro de la compra se restablece o se borra.

Al suscribir un widget a este suceso, el widget puede ahora cuando un comprador añade un artículo al carro de la compra. Si el widget suscriptor está realizando el seguimiento del artículo que un comprador está añadiendo al carro de la compra, este suceso proporciona la advertencia de que el comprador ya no podrá ver la información sobre el producto dentro del mini carro de las compras.

Este suceso no publica ningún dato de parámetro que un widget de suscripción pueda recuperar. Solo la notificación de que el suceso se produce pasa a la widget de suscripción.

  • LinuxAIXWC_eardir/Stores.war/Aurora/javascript/Widgets/MiniShopCartDisplay/MiniShopCartDisplay.js
  • WindowsWC_eardir\Stores.war\Aurora\javascript\Widgets\MiniShopCartDisplay\MiniShopCartDisplay.js
  • HCL Commerce Developerworkspace_dir\crs-web\WebContent\Aurora\javascript\Widgets\MiniShopCartDisplay\MiniShopCartDisplay.js
ShoppingList_changed

Este evento se publica cuando el comprador cambia la información sobre una lista de deseos. Este suceso puede producirse cuando el comprador añade, edita o suprime una lista de deseos.

Este evento publica una matriz que incluye los tres parámetros de par nombre-valor siguientes:
  • El ID de lista de deseos
  • El nombre de la lista de deseos
  • La acción que el comprador ha realizado en la lista, como, por ejemplo, una acción de supresión.
Si suscribe un widget a este suceso, asegúrese de que el widget pueda determinar los valores de los parámetros dentro de la matriz. El widget debe ser capaz de determinar la acción del comprador respecto a la lista de deseos para utilizar correctamente la información que este suceso publica.
  • LinuxAIXWC_eardir/Stores.war/Aurora/javascript/Widgets/ShoppingList/ShoppingListServicesDeclaration.js
  • WindowsWC_eardir\Stores.war\Aurora\javascript\Widgets\ShoppingList\ShoppingListServicesDeclaration.js
  • HCL Commerce Developerworkspace_dir\crs-web\WebContent\Aurora\javascript\Widgets\ShoppingList\ShoppingListServicesDeclaration.js
ShoppingListItem_Added

Este suceso se publica después de que un comprador añada un artículo a su lista de deseos. El comprador puede añadir el artículo a la lista de deseos mientras examina la tienda, o puede mover un artículo del carro de la compra a la lista de deseos.

Al suscribirse a este suceso, un widget recibe un aviso cuando el comprador añade un artículo a la lista de deseos y mueve un artículo del carro de la compra a su lista de deseos.

Este suceso no publica ningún dato de parámetro que un widget de suscripción pueda recuperar. Solo la notificación de que el suceso se produce pasa a la widget de suscripción.

  • LinuxAIXWC_eardir/Stores.war/Aurora/javascript/Widgets/ShoppingList/ShoppingListServicesDeclaration.js
  • WindowsWC_eardir\Stores.war\Aurora\javascript\Widgets\ShoppingList\ShoppingListServicesDeclaration.js
  • HCL Commerce Developerworkspace_dir\crs-web\WebContent\Aurora\javascript\Widgets\ShoppingList\ShoppingListServicesDeclaration.js

Publicar información para utilizarla en otros widgets con sucesos wcTopic

Si el widget personalizado debe generar datos para que los utilicen otros widgets, puede utilizar un suceso wcTopic para publicar los datos. A continuación, los demás widgets podrán suscribirse al suceso wcTopic publicado. Utilice la API wcTopic.publish para publicar el suceso wcTopic. Incluya el código para publicar el suceso en el archivo JSP de nivel superior. Si está publicando varios sucesos wcTopic relacionados a través de varios widgets personalizados, incluya el código para publicar los sucesos en un archivo JavaScript individual en un directorio common. Por ejemplo, si el widget realiza un seguimiento de la indicación de ruta, puede hacer que el widget publique un suceso wcTopic BreadCrumb_Ready con los datos. Este suceso wcTopic se publicará siempre que el widget de indicación de ruta se cargue en una página. Este suceso puede devolver a otros widgets la información de la indicación de ruta en una lista delimitada por un punto y coma. Por ejemplo, Home;Apparel;Women;Dresses.

Para publicar un suceso, debe incluirse el código siguiente en el JSP de nivel superior para el widget:
wcTopic.publish('identifier_eventAction, parameter, parameter);
Donde parameter es la información que se incluye en el suceso. Los widgets de suscripción pueden recuperar esta información.
Como otro ejemplo, el widget de Atributos de definición publica el siguiente suceso wcTopic:
wcTopic.publish('DefiningAttributes_Changed', catalogEntryId, productId);
Este suceso wcTopic se publica siempre que se cambia un atributo de definición e incluye catalogEntryId y productId como parámetros. Los widgets de suscripción recuperan información de producto padre y código de artículo siempre que un comprador cambia los atributos de definición de un producto. Por ejemplo, si un comprador cambia el valor del atributo de color en la página Detalles del producto, el widget de Atributos de definición publica el suceso. El suceso incluye el nuevo catalogEntryId del código de artículo. El widget de Imagen de tamaño normal que se suscribe a este suceso wcTopic recupera la información de catalogEntryId y productId. El widget utiliza estos nuevos parámetros para determinar la imagen correcta que se debe visualizar en la página Detalles del producto.