Masify

Manual de integración de templates

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

Descargar archivo tagitem.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 XML (fragmento)
Implementación XSLT (en category.xsl)

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.

Datos XML (fragmento)
Implementación XSLT (en tagitem.xsl)

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


Datos XML (fragmento)
Implementación XSLT (en category.xsl)

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.

Datos XML (fragmento)
Implementación XSLT (en listarticles.xsl / tag.xsl)

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.


Datos XML (fragmento)
Implementación XSLT (en category.xsl)

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í:

INTEGRAR BANNERS


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