Integración
Categoría de Productos / Listar productos por Tag
Las categorías de productos presentan un listado de contenidos de tipo Item, filtrados de acuerdo a los criterios que establezca el administrador del sitio web para dicha categoría.
De modo similar funciona el listado por Tags, sólo que en este caso el filtrado de productos se realiza de acuerdo a los tags que se hayan cargado en los productos.
Las búsquedas por cadenas de texto se resuelven mediante un servicio JSON, por lo que serán tratadas en un capítulo aparte.
Los datos XML de ambos listados se ofrecen paginados y
con una serie de filtros aplicables a los mismos.
También las categorías permiten relacionar contenidos de tipo Item, para crear zonas de productos destacados o recomendados.
Los archivos category.xsl y tagitem.xsl
Los listados de productos (ítems) se representan a través de un archivo llamado category.xsl , o de un archivo llamado tagitem.xsl (si se los está filtrando por tag), ubicados en la carpeta xsl del directorio correspondiente al template en desarrollo.

Para descargar los archivos xslt de ejemplo para estos tipos de contenido haga click aquí.
Descargar archivo category.xsl
Si la descarga provoca un error, haga click con el botón derecho y seleccione la opción "guardar enlace como...".Datos de la Categoría o del Tag buscado
Datos de la Categoría
En caso de acceder a un contenido del tipo Category, se puede obtener el nombre de la categoría, y su ID de ser necesario, desde el árbol de categorías presente en todos los tipos de contenido.
Para ello, basta con localizar el nodo Category cuya propiedad Selected posea el valor True.
Datos del Tag
En caso de acceder a un listado de tags, se puede obtener el nombre del tag, y su ID de ser necesario, desde el nodo SelectedTag.
Listar Productos (Ítems)
Todos los productos de un listado, ya sea de una Categoría o de una búsqueda por Tag, tienen el mismo formato y presentación.
Se encuentran dentro de un nodo Results ubicado dentro de un nodo Page, que contiene los datos de paginado del listado.
Cada producto (Ítem) posee los siguientes elementos (*):
Item: Nodo de base de cada producto, posee los siguientes elementos.
@Id: Valor numérico, es el id del ítem en Base de Datos.
@CreationDate: Fecha y Hora de creación del ítem.
@ItemTypeId: Id de tipo de producto.
@Price: Valor del precio indicado como precio por defecto.
@CurrencyId: Id de moneda del precio indicado como precio por defecto (1: Pesos argentinos / 2: Dólares estadounidenses / 3: Euros).
Name: Nombre del ítem.
ShortDescription: Descripción corta del ítem, en formato HTML.
Code: Código del ítem.
ImageCode: Código de la imagen marcada como imagen principal.
URLName: Url de la página de detalle del ítem.
Portal: Sitio web (portal) al que pertenece el ítem. Se utiliza en los portales concentradores para identificar al propietario del ítem.
Posee los siguientes elementos:
Id: Valor numérico, Id del sitio web al que pretenece el ítem.
Name: Nombre del sitio web al que pretenece el ítem.
Logo: Código de imagen del logo del sitio web al que pretenece el ítem.
ItemTags: Listado de Tags que han sido asignados al ítem.
Contiene un listado de nodos <Tag>, cada uno posee los siguientes elementos:
@Id: Valor numérico, no se utiliza.
@Url: Enlace al listado de ítems que posean dicho tag.
Description: Nombre del tag.
(*) existen otros datos ya discontunuados que no es deben tenerse en cuenta y por lo tanto no se incluyen en esta documentación.
Ejemplo de integración de listado de productos
Paginado
La información acerca de las páginas que posee un listado se encuentra dentro del nodo Page, que contiene toda la infomación del listado de productos.
La cantidad de registros por página no es fija, se puede definir en el esquema XML del template de acuerdo a las necesidades de diseño o performance.
El nodo Page contiene los siguientes elementos:
@PageNumber: página actual del listado. Inicialmente el valor es 1.
@PageSize: Cantidad de registros por página, definidos en el esquema XML del template.
@TotalSize: Total de productos (Ítems) en el listado, sin tener en cuenta el paginado.
@PageCount: Cantidad de páginas del listado, valor obtenido de dividir el valor de TotalSize (total de productor) sobre el valor de PageSize (productos por página).
@HasPreviousPage: Si la página actual posee una página previa, es decir si los resultados no son los primeros del listado, este valor será True. De lo contrario, es False.
@HasNextPage: Si la página actual posee una página posterior, es decir si los resultados continúan, este valor será True. De lo contrario, es False.
Ejemplo de integración de paginado en un listado de productos
En este ejemplo se paginará un listado de 68 productos.
Dado que en el esquema XSL se definió un tamaño de página de 20 registros, el resultado sería el siguiente.
Filtros
Los filtros son opciones que aparecen en cualquier listado de productos (categoría, listado por tags o búsqueda) que permiten filtrar los resultados de acuerdo a los parámetros cargados en los productos que aparecen en dicha búsqueda.
Pueden ser del tipo Color, del tipo Size o del Tipo Attribute.
Los filtros se envían como parámetro en la url con la variable FilterIds, concatenados por comas.
Ej: http://miportal.masify.com/category/get/1/pantalones?FilterIds=12,44
Color
Los filtros de tipo Color son, como su nombre lo indica, valores de color asociados a un producto. Los colores que aparecerán en los filtros serán los que posean los productos presentes en el listado actual (categoría, listado por tags o búsqueda).Están localizados en el nodo xml/filters/colors.
Poseen los siguientes elementos:
@id: Valor numérico. Este valor es el que se envía para filtrar el listado.
@value: Nombre del color.
@name: Valor hexadecimal del color para ser representado en formato HTML.
Size
Los filtros del tipo size son grupos de medidas presentes en los productos del listado actual.Los grupos de medidas son conjuntos de valores estándar que pueden ser usados por más de un tipo de producto, y por ello se agrupan.
Por ejemplo, un grupo de medidas puede ser "Número de calzado", conjunto de valores que pueder ser usado por una variedad de productos que van desde sandalias a botas , y que necesite diferenciarse de otro grupo de medidas que posea valores similares, por ejemplo "Talle de pantalón".
En ambos conjuntos puede existir un valor "38", sin embargo no es lo mismo un 38 de botas que un 38 de pantalones, y por ello es que se utilizan estos grupos.
Están localizados en el nodo xml/filters/sizeTypes.
Por cada grupo de medidas aparece un nodo sizeType que posee los siguientes elementos:
@id: Valor numérico. No se utiliza.
Name: Nombre del grupo de medidas.
values: Listado de valores para ese grupo.
Cada valor está representado por un nodo idAndValue con los siguientes elementos:
@id: Valor numérico. Este valor es el que se envía para filtrar el listado.
value: Nombre del valor para mostrar.
Attribute
Los filtros de tipo Attribute son grupos de valores asociados a un producto.Los valores de cada grupo que aparecerán serán los que posean los productos presentes en el listado actual (categoría, listado por tags o búsqueda).
Están localizados en el nodo xml/filters/attributes.
Por cada grupo de medidas aparece un nodo attribute que posee los siguientes elementos:
Poseen los siguientes elementos:
@id: Valor numérico. Este valor es el que se envía para filtrar el listado.
Name: Nombre del grupo de atributos.
values: Listado de valores para ese grupo.
Cada valor está representado por un nodo idAndValue con los siguientes elementos:
@id: Valor numérico. Este valor es el que se envía para filtrar el listado.
value: Nombre del valor para mostrar.
Ejemplo de integración de filtros en un listado de productos
Ejemplo de un listado de filtros de los tres tipos.
Cada valor para filtrar posee el link a la url del listado de productos con el parámetro FilterIds y el valor del filtro.
En caso de que se desee realizar un filtro por múltiples valores, puede realizarse mediante una función javascript que acumule los valores seleccionados y los envíe concatenados por comas en la variable FilterIds.
En los listados que recibieron filtros mediante el parámetro FilterIds, el valor de los mismos se recibe en el nodo xml/Request/FilterIds.
Ordenar Listados
Los listados de productos de cualquier tipo (categoría, listado por tags o búsqueda) pueden ser ordenado de acuerdo a ciertos parámetros, de forma ascendente o descendente.
El parámetro de búsqueda se envía por url mediante la variable ColumnToOrderBy, y el criterio de ordenamiento en la variable AscendantOrder.
Los criterios de ordenamiento son compatibles con los filtros, pudiéndose enviar ambos parámetros en la URL.
Los parámetros de ordenamiento (ColumnToOrderBy) son:
Name: El listado se ordena de acuerdo al nombre del producto.
Price: El listado se ordena de acuerdo al precio del producto marcado como precio por defecto.
ItemCode: El listado se ordena de acuerdo al código del producto.
CreationDate: El listado se ordena de acuerdo a la fecha de creación del producto.
ItemTypeId: El listado se ordena de acuerdo al tipo de producto.
CurrencyId: El listado se ordena de acuerdo a la moneda del precio del producto.
PortalId: El listado se ordena de acuerdo al sitio web al que pertenece el producto. Se utiliza en los portales concentradores (Hubs).
El criterio de ordenamiento (AscendantOrder) puede ser:
true: El listado se ordena de acuerdo al parámetro enviado de forma ascendente.
false: El listado se ordena de acuerdo al parámetro enviado de forma descendente.
Ejemplo de ordenamiento en una categoría
En esta url, la categoría se ordenará por precio de forma ascendente (de menor a mayor)
Ej: http://miportal.masify.com/category/get/1/pantalones?ColumnToOrderBy=price&AscendantOrder=true
Identificación del ordenamiento recibido
El parámetro y criterio de ordenamiento están disponibles en los listados que lo reciban, en el nodo xml/Request :Banners
Los banners cargados desde el panel de control pueden ser asociados al tipo de contenido category, o al tipo de contenido tagitem, o a categorías específicas.
La integración de banners se realiza de forma similar en todos los tipos de contenidos.
Para acceder a la sección correspondiente, haga click aquí:
Contenidos Relacionados
El tipo de contenido category admite contenidos relacionados del tipo: Item.
Es decir, es posible relacionar productos a modo de contenidos destacados.
La cantidad de sectores de contenidos relacionados es ilimitada.
Pueden definirse varios sectores de productos destacados (ItemForCategory) si el diseño así lo requiere.
Para ver cómo definir los sectores de contenidos relacionados haga click aquí.
La integración de contenidos relacionados se realiza de forma similar en todos los tipos de contenidos que lo admiten.
Para acceder a la sección correspondiente, haga click aquí:
INTEGRAR CONTENIDOS RELACIONADOS
