Componentes privados

Los componentes privados son similares a los componentes de HTML y twig que se encuentran en las plantillas, la única diferencia es que el código no puede ser libremente modificado (es un código privado dentro de Tiendanube sin acceso desde un FTP), pero si permiten diferentes parámetros.

De esta manera el uso de componentes privados garantiza menos riesgo al editar los archivos de una plantilla, así como también continúa recibiendo actualizaciones más allá de si la tienda tiene FTP abierto o no. 

Debajo se listan todos los componentes privados disponibles hoy en Tiendanube, qué parámetros aceptan y un ejemplo de como incluirlos.

Algo importante antes de avanzar. Algunos componentes privados pueden depender de Javascript que se encuentra del lado de la tienda, así como otros no. En cada ejemplo se aclara las dependencias de cada uno. 

Por otro lado ningún componente necesita sumar traducciones del lado de la plantilla, ya las trae incorporadas.

Cuotas

Este componente se usa para mostrar las cuotas en el item del listado, en el detalle del producto y en el carrito.

Ejemplo de cómo incluirlo

{{ component('installments', {'location' : 'product_detail', container_classes: { installment: "product-detail-installments text-center text-md-left mb-2" }}) }}

Parámetros

ParámetroValoresDescripción
locationcart, product_item, product_detailEs un string usado para definir el lugar donde se incluye el componente

Wording

short_wording

Es un booleano para definir si el wording usado va a ser corto o largo. Ej: "12x $100 sin interés" vs "12 cuotas sin interés de $100". No aplica a tiendas de Brasil.
CSS classescontainer_classes.installmentUsado para pasarle clases al container principal

Dependencias

Del lado de JS, tiene dependencias de la función changeVariant que está en el archivo store.js.tpl. Es decir que el JS de ese archivo se mantiene funcional.

Medios de pago

Este componente se usa para mostrar el detalle de los medios de pago en el detalle del producto

Ejemplo de cómo incluirlo

{{ component('payments/payments-details',
    {
        text_classes: {
            text_accent: "label label-accent ml-1",
            subtitles: "mb-3",
            text_big: "font-big",
            text_small: "font-small",
            align_right: "text-right"
        },
        spacing_classes: {
            top_1x: "mt-1",
            top_2x: "mt-2",
            top_3x: "mt-3",
            right_1x: "mr-1",
            right_2x: "mr-2",
            right_3x: "mr-3",
            bottom_1x: "mb-1",
            bottom_2x: "mb-2",
            bottom_3x: "mb-3",
            left_3x: "ml-3",
        },
        container_classes : {
            payment_method: "card p-3"
        }
    })
}}

Parámetros 

CSS

ParámetroDescripción
text_classes.text_accentUsado para las clases de los textos que requieren acento como los descuentos
text_classes.subtitlesUsado para las clases de los subtítulos
text_classes.text_bigUsado para las clases de los textos con tamaño superior al estándar
text_classes.text_smallUsado para las clases de los textos con tamaño inferior al estándar

spacing_classes.right_2x

Usado para las clases de espaciado a la derecha en 2x
spacing_classes.bottom_1x
Usado para las clases de espaciado hacia abajo en 1x
spacing_classes.bottom_3xUsado para las clases de espaciado hacia abajo en 3x
container_classes.payment_methodUsado para las clases del contenedor de cada medio de pago

Otros

empty_placeholder_url: Usado para reemplazar la URL de la imagen placeholder que se carga mientras se hace lazyload de todas las banderas del componente.

Dependencias

Del lado de JS, tiene dependencias de la función changeVariant y del componente de modal (si es que se va a mostrar en un modal) que está en el archivo store.js.tpl. Es decir que el JS de ese archivo se mantiene funcional. 

Para el componente de tabs no es necesario JS.


Logos de pagos y envíos

Este componente se usa para mostrar los logos de pagos y envíos, especialmente en el footer.

Ejemplo de cómo incluirlo

{{ component('payment-shipping-logos', {'type' : 'payments'}) }}

Parámetros

empty_placeholder_url: Usado para reemplazar la URL de la imagen placeholder que se carga mientras se hace lazyload de todas las banderas del componente.

Dependencias

No tiene dependencias de JS

Filtros

Este componente se usa para mostrar los filtros tanto por categorías como por propiedades

Ejemplo de cómo incluirlo

{{ component(
    'filters/filters',{
        accordion: true,
        parent_category_link: false,
        applied_filters_badge: true,
        container_classes: {
            filters_container: "visible-when-content-ready",
        },
        accordion_classes: {
            title_container: "row no-gutters align-items-center",
            title_col: "col my-1 pr-3 d-flex align-items-center",
            title: "h6 font-body font-weight-bold mb-0",
            actions_col: "col-auto my-1",
            title_icon: "icon-inline svg-icon-text font-big mr-1"
        },
        filter_classes: {
            list: "list-unstyled my-3",
            list_item: "mb-2",
            list_link: "font-small",
            badge: "h6 font-small ml-1",
            show_more_link: "d-inline-block btn-link font-small mt-1",
            checkbox_last: "m-0",
            price_group: 'price-filter-container filter-accordion',
            price_title: 'h6 font-weight-bold mb-4',
            price_submit: 'btn btn-default d-inline-block',
            applying_feedback_message: 'h5 mr-2',
            applying_feedback_icon: 'icon-inline h5 icon-spin svg-icon-text'
        },
        accordion_show_svg_id: 'plus',
        accordion_hide_svg_id: 'minus',
        applying_feedback_svg_id: 'spinner-third'
    }) 
}}

Parámetros 

ParámetroDescripción
category_filtersBooleano usado para sólo incluir los filtros de categorías
property_filtersBooleano usado para sólo incluir los filtros de propiedades
accordionBooleano usado para mostrar los filtros dentro de un acordeón
applied_filters_badgeBooleano usado para mostrar un número de cantidad de filtros aplicados al usar el acordeón
parent_category_linkUsado para mostrar el link que lleva a la categoría padre en el filtro de categorías
svg_spritesBooleano que determina si se usan SVG sprites
accordion_show_svg_id/accordion_hide_svg_idUsado para pasarle el ID del SVG sprite que se usa para el ícono de mostrar y ocultar.
applying_feedback_svg_idUsado para el ID del SVG sprite al mostrar feedback de "aplicando filtro" en celulares
parent_category_link_svg_idUsado para el ícono en el link de volver a la categoría padre


CSS

ParámetroDescripción
filter_classes.groupUsado para el container de cada grupo de filtros. Ej: El grupo de "colores"
filter_classes.list_titleUsado para el título de cada grupo de filtros
filter_classes.checkbox_containerUsado para el container del checkbox de cada filtro
filter_classes.checkbox_lastUsado para el container del último checkbox en un grupo de filtros

filter_classes.checkbox_icon

Usado para el ícono del checkbox de cada filtro
filter_classes.checkbox_textUsado para el texto del checkbox de cada filtro
filter_classes.checkbox_colorUsado para los filtros de colores
filter_classes.show_more_linkUsado para el link de "ver más" cuando hay muchos filtros
filter_classes.parent_category_linkUsado para el link para volver a la categoría anterior
filter_classes.badgeUsado para el ícono que muestra los filtros aplicados (se usarse esta funcionalidad)
accordion_classes.title_containerUsado para el título de los filtros en formato de acordeón
accordion_classes.title_colUsado para la columna que contiene título de los filtros en formato de acordeón
accordion_classes.titleUsado para el título de los filtros en formato de acordeón
accordion_classes.actions_colUsado para la columna que contiene el link que abre o cierra el acordeón de los filtros
accordion_classes.title_iconUsado para el ícono del título en los filtros en formato de acordeón
accordion_classes.toggle_linkUsado para el link que abre o cierra el acordeón en los filtros en ese formato si no se usa un ícono
filter_classes.price_groupUsado para el container del filtro de precios
filter_classes.price_titleUsado para el título del filtro de precios
filter_classes.price_submitUsado para el submit del filtro de precios

Dependencias

Dependiendo de la plantilla podrías llegar a necesitar mantener el JS relacionado al componente de acordeón

Ordenar productos

Este componente se usa para ordenar los productos bajo un criterio. Ej: De menor a mayor precio.

Ejemplo de cómo incluirlo

{{ component(
    'sort-by',{
        accordion: true,
        list: true,
        accordion_classes: {
            title_container: "row no-gutters align-items-center",
            title_col: "col my-1 pr-3 d-flex align-items-center",
            title: "h1 font-huge mb-0",
            actions_col: "col-auto my-1",
            title_icon: "icon-inline svg-icon-text icon-xs mr-1"
        },
        sort_by_classes: {
            group: 'filter-accordion',
            list: 'radio-button-container list-unstyled my-3',
            list_item: 'radio-button-item',
            radio_button: "radio-button",
            radio_button_content: "radio-button-content",
            radio_button_icons_container: "radio-button-icons-container",
            radio_button_icon: "radio-button-icon",
            radio_button_label: "radio-button-label",
            applying_feedback_message: 'font-big mr-2',
            applying_feedback_icon: 'icon-inline font-big icon-spin svg-icon-text',
        },
        accordion_show_svg_id: 'chevron',
        accordion_hide_svg_id: 'chevron-down',
        applying_feedback_svg_id: 'spinner-third',
    }) 
}}

Parámetros 

ParámetroDescripción
accordionBooleano usado para mostrar el sort by dentro de un acordeón
listBooleano usado para mostrar el sort en formato de listado, en lugar de un dropdown
svg_spritesBooleano que determina si se usan SVG sprites
accordion_show_svg_id/accordion_hide_svg_idUsado para pasarle el ID del SVG sprite que se usa para el ícono de mostrar y ocultar.
applying_feedback_svg_idUsado para el ID del SVG sprite al mostrar feedback de "Ordenando productos" en celulares


CSS

ParámetroDescripción
sort_by_classes.groupUsado para el grupo que contiene el sort by. 
sort_by_classes.containerUsado para el container que contiene el sort by.
sort_by_classes.list_titleUsado para el título si el formato es de tipo lista
sort_by_classes.listUsado para el listado en el formato de tipo lista
sort_by_classes.list_itemUsado para el item del listado en el formato de tipo lista
sort_by_classes.radio_buttonUsado para radio button de cada opción dentro del formato lista
sort_by_classes.radio_button_contentUsado para el container del contenido en cada radio button
sort_by_classes.radio_button_icons_containerUsado para el container de los íconos en cada radio button
sort_by_classes.radio_button_iconUsado para cada ícono dentro de los radio buttons
sort_by_classes.radio_button_labelUsado para texto de los radio buttons
sort_by_classes.select_groupUsado para el container del sort by en formato tipo dropdown
sort_by_classes.select_labelUsado para el texto del sort by en formato tipo dropdown
sort_by_classes.selectUsado para el select del sort by en formato tipo dropdown
sort_by_classes.select_svgUsado para el ícono del select en formato tipo dropdown
sort_by_classes.applying_feedback_containerUsado para el container del feedback mientras se ordenan los productos en mobile
sort_by_classes.applying_feedback_messageUsado para el texto del feedback mientras se ordenan los productos en mobile
sort_by_classes.applying_feedback_iconUsado para el ícono del feedback mientras se ordenan los productos en mobile
accordion_classes.title_containerUsado para el contenedor del título del sort by en formato de acordeón
accordion_classes.title_colUsado para la columna que contiene título del sort by en formato de acordeón
accordion_classes.titleUsado para el título del sort by en formato de acordeón
accordion_classes.actions_colUsado para la columna que contiene el link que abre o cierra el acordeón
accordion_classes.title_iconUsado para el ícono del título en formato de acordeón
accordion_classes.toggle_linkUsado para el link que abre o cierra el acordeón en ese formato si no se usa un ícono

Dependencias

Dependiendo de la plantilla podrías llegar a necesitar mantener el JS relacionado al componente de acordeón

Búsqueda

Este componente se usa para el formulario de búsqueda de productos (incluídas las sugerencias).

Ejemplo de cómo incluirlo

{{ component('search/search-form', {
    form_classes: { 
        input_group: 'm-0', 
        input: 'input-class', 
        submit: 'submit-class', 
        delete_content: 'delete-class',  
        search_suggestions_container: 'container-class'}
    }) 
}}

Parámetros 

ParámetroDescripción
placeholder_textUsado para sobreescribir el texto por defecto que usa el placeholder del campo de búsqueda.
use_submit_textBooleano usado mostrar un texto en el botón de submit del formulario de búsqueda. Por defecto está prendido.
submit_textUsado para sobreescribir el texto por defecto que usa el botón para enviar la búsqueda.
use_delete_btnBooleano para mostrar en celulares un botón que borra lo escrito en el campo de búsqueda. Por defecto está encendido


CSS

ParámetroDescripción
form_classes.formUsado para el formulario de búsqueda 
form_classes.input_groupUsado para el contenedor del campo de búsqueda
form_classes.inputUsado para el campo de búsqueda
form_classes.submitUsado para el botón que envía el formulario de búsqueda
form_classes.delete_contentUsado para el botón que borra lo escrito en celulares
form_classes.search_suggestions_containerUsado para el contenedor de las sugerencias de búsqueda

Dependencias

Dependiendo de la plantilla podrías llegar a necesitar mantener el JS relacionado a la búsqueda usando la función LS.search

Logo

Este componente se usa para mostrar el logo de la tienda

Ejemplo de cómo incluirlo

{{ component('logos/logo', {logo_thumbnail: logo_size_thumbnail, logo_img_classes: 'transition-soft ' ~ logo_size_class, logo_text_classes: 'h3 m-0'}) }}

Parámetros 

Tipo de componente

ParámetroDescripción
logo_thumbnailUsado para elegir que thumbnail del logo usar. Por defecto es la "medium".


CSS

ParámetroDescripción
container_classes.logo_img_containerUsado para el contenedor del logo
logo_img_classesUsado para la imagen del logo
logo_text_classesUsado para el texto del logo cuando no existe una imagen

Dependencias

No tiene ningún tipo de dependencia

Logo para encabezado transparente

Este componente se usa para mostrar el logo de la tienda que permite la funcionalidad de un logo específico cuando el encabezado tiene fondo transparente.

Ejemplo de cómo incluirlo

{{ component('logos/logo-transparent-header', {logo_thumbnail: 'medium', logo_img_name: 'logo-transparent.jpg', logo_img_classes: 'transition-soft'}) }}Parámetros 


ParámetroDescripción
logo_thumbnailUsado para elegir que thumbnail del logo usar. Por defecto es la "medium".
logo_img_nameUsado para conectar la ruta de la imagen con la setting definida en settings.txt


CSS

ParámetroDescripción
container_classes.logo_img_containerUsado para el contenedor del logo
logo_img_classesUsado para la imagen del logo

Dependencias

Depende de si la plantilla tiene o no una configuración para encabezado transparente.

Formularios de login y registro

Estos componentes se usan mostrar el formulario de login y registro de un usuario

Ejemplo de cómo incluirlos

Login

{{ component('forms/account/login' , {
    validation_classes: {
        link: 'btn-link font-small ml-1',
        text_align: 'text-center',
        text_size: 'font-small',
    },
    spacing_classes: {
        top_2x: 'mt-2',
        bottom_2x: 'mb-2',
        bottom_3x: 'mb-3',
        bottom_4x: 'mb-4',
    },
    form_classes: {
        password_toggle: 'btn',
        input_help_align: 'text-right',
        input_help_link: 'btn-link font-small mb-2 mr-1',
        help_align: 'text-center',
        help_text_size: 'font-small',
        help_link: 'btn-link btn-link font-small mb-2 ml-1',
        submit: 'btn btn-primary btn-big btn-block mb-3',
        submit_spinner: 'icon-inline icon-spin svg-icon-mask ml-2'
    }})
}}

Registro

{{ component('forms/account/register' , {
    validation_classes: {
        link: 'btn-link font-small ml-1',
        text_align: 'text-center',
        text_size: 'font-small',
    },
    spacing_classes: {
        top_2x: 'mt-2',
        bottom_2x: 'mb-2',
        bottom_3x: 'mb-3',
    },
    form_classes: {
        password_toggle: 'btn',
        input_help_align: 'text-right',
        input_help_link: 'btn-link btn-link font-small mb-2 mr-1',
        help_align: 'text-center',
        help_text_size: 'font-small',
        help_link: 'btn-link font-small mb-2 ml-1',
        submit: 'btn btn-primary btn-big btn-block mb-3',
        submit_spinner: 'icon-inline icon-spin svg-icon-mask ml-2',
        input_error: 'notification-left',
    }})
}}

Parámetros 

CSS

ParámetroDescripción
form_classes.formUsado para el formulario
form_classes.input_groupUsado para el container de cada campo
form_classes.input_labelUsado para los textos de cada campo
form_classes.inputUsado para de cada campo
form_classes.input_errorUsado para el mensaje de error de cada campo
form_classes.input_help_alignUsado para la alineación del texto de ayuda en el campo de contraseña
form_classes.input_help_linkUsado para el link dentro del texto de ayuda para el campo de contraseña
form_classes.password_toggleUsado para el botón que muestra/oculta la contraseña en el campo de contraseña
form_classes.submitUsado para el botón que envía el formulario
form_classes.submit_spinnerUsado para el spinner del botón que envía el formulario. Visible al enviarlo.
form_classes.help_info_alignUsado para alinear la información de ayuda general del formulario
form_classes.help_info_text_sizeUsado para el tamaño del texto en la información de ayuda general del formulario
form_classes.help_linkUsado para el link de ayuda en la información de ayuda general del formulario
spacing_classes.top_3xUsado para las clases de espaciado hacia arriba en 3x
spacing_classes.top_2xUsado para las clases de espaciado hacia arriba en 2x
spacing_classes.bottom_4xUsado para las clases de espaciado hacia abajo en 4x
spacing_classes.bottom_3xUsado para las clases de espaciado hacia abajo en 3x
spacing_classes.bottom_2xUsado para las clases de espaciado hacia abajo en 2x
validation_classes.title_sizeUsado para los títulos dentro de lo mensajes de validación de la cuenta
validation_classes.text_alignUsado para la alineación de los textos dentro de lo mensajes de validación de la cuenta
validation_classes.text_sizeUsado para el tamaño de los textos dentro de lo mensajes de validación de la cuenta

Dependencias

Dependiendo de la plantilla podrías llegar a necesitar mantener el JS relacionado al componente de toggle para la contraseña

Información meta para redes sociales

Este componente se usa para cargar la información meta de redes sociales de la tienda. Incluye información sobre Facebook y Twitter dentro de la etiqueta "head" de HTML.

Ejemplo de cómo incluirlo

{{ component('social-meta') }}

Dependencias

Este componente no tiene dependencias

Información estructurada

Este componente se usa para cargar la información estructurada de la tienda para Google. Se puede incluir en la etiqueta "head" de HTML o en cada producto del listado.

Ejemplo de cómo incluirlo

{{ component('structured-data') }}
ParámetroDescripción
itemBooleano usado al incluir la información estructurada dentro del item de producto

Dependencias

Este componente no tiene dependencias

Links para reclamos

Este componente se usa para mostrar los links de "Defensa al consumidor" y "Botón de arrepentimiento" en las tiendas de Argentina.

Ejemplo de cómo incluirlo

{{ component('claim-info', {
    container_classes: 'font-small',
    divider_classes: "mx-1",
    text_classes: {text_consumer_defense: 'd-inline-block mb-1'},
    link_classes: {
        link_consumer_defense: "btn-link font-small",
        link_order_cancellation: "btn-link font-small",
    },
}) 

Clases de CSS

ParámetroDescripción
container_classesUsado para el contenedor de los mensajes y links
text_classes.text_consumer_defenseUsado para el texto del mensaje para Defensa al consumidor
link_classes.link_consumer_defenseUsado para el link dentro del mensaje de Defensa al consumidor
divider_classesUsado para el divisor entre la información de Defensa al consumidor y el Botón de arrepentimiento
link_order_cancellationUsado para el link del Botón de arrepentimiento

Dependencias

Este componente sólo comienza el flujo de Botón de arrepentimiento. Para poder terminarlo es necesario hacer cambios dentro del formulario de contacto. Para más información ver este tutorial


Sección de productos

Este componente se usa para mostrar una sección de productos, que pueden ser desde destacados en la página de inicio hasta los relacionados en el detalle del producto

Ejemplo de cómo incluirlo

Productos relacionados

{# Section classes #}

{% set section_class = 'section-products-related my-3' %}
{% set container_class = 'container' %}
{% set title_class = 'h3 text-center' %}
{% set products_container_class = 'position-relative swiper-container-horizontal' %}
{% set slider_container_class = 'swiper-container' %}
{% set swiper_wrapper_class = 'swiper-wrapper' %}
{% set slider_control_pagination_class = 'swiper-pagination' %}
{% set slider_control_class = 'icon-inline icon-w-8 icon-2x svg-icon-text' %}
{% set slider_control_prev_class = 'swiper-button-prev' %}
{% set slider_control_next_class = 'swiper-button-next' %}
{% set control_prev = include ('snipplets/svg/chevron-left.tpl', {svg_custom_class: slider_control_class}) %}
{% set control_next = include ('snipplets/svg/chevron-right.tpl', {svg_custom_class: slider_control_class}) %}

{{ component(
    'products-section',{
        title: settings.products_related_title,
        id: 'related-products',
        products_amount: related_products | length,
        products_array: related_products,
        product_template_path: 'snipplets/grid/item.tpl',
        product_template_params: {'slide_item': true},
        slider_controls_position: 'bottom',
        slider_pagination: true,
        svg_sprites: false,
        section_classes: {
            section: 'js-related-products ' ~ section_class,
            container: container_class,
            title: title_class,
            products_container: products_container_class,
            slider_container: 'js-swiper-related ' ~ slider_container_class,
            slider_wrapper: swiper_wrapper_class,
            slider_control_pagination: 'js-swiper-related-pagination ' ~ slider_control_pagination_class,
            slider_control_prev_container: 'js-swiper-related-prev ' ~ slider_control_prev_class,
            slider_control_prev: 'icon-flip-horizontal',
            slider_control_next_container: 'js-swiper-related-next ' ~ slider_control_next_class,
        },
        custom_control_prev: control_prev,
        custom_control_next: control_next,
    }) 
}}
ParámetroDescripción
idUsado para el ID de la sección
products_amountUsado opcionalmente para un atributo data con la cantidad de productos
sliderBooleano que activa el HTML para usar el formato de slider (en nuestros diseños usamos el plugin Swiper.js
slider_paginationBooleano que activa el HTML para el paginador del slider
svg_spritesBooleano que determina si se usan SVG sprites
control_prev_svg_id/control_next_svg_idUsado para pasarle el ID del SVG sprite que se usa para el ícono de siguiente y anterior en el slider.
custom_control_prev/custom_control_nextUsado en caso de no implementar SVG sprites, para aplicar HTML personalizado en los controles de siguiente y anterior en el slider.
slider_controls_containerBooleano para englobar los controles del slider en un contenedor.
slider_direction_controls_containerBooleano usado para englobar sólo los controles de dirección del slider en un contenedor separado al paginado.
slider_controls_positionDefine la posición de los controles del slider con 2 valores: 'below' se ubican debajo del carrusel y 'with-section-title' se ubican como un hermano del título de la sección.
titleEs usado para el título de la sección.
products_arrayEs el array de productos a mostrar. Por ejemplo en productos relacionados puede ser "related_products" y en productos destacados "sections.primary.products"
product_template_pathEs la ruta del tpl que representa al item de producto en el listado.
product_template_paramsSon los parámetros opcionales que puede tener el tpl del item. Por ejemplo {'slide_item': true}


CSS

ParámetroDescripción
section_classes.sectionUsado para la sección
section_classes.containerUsado para el contenedor general
section_classes.title_containerUsado para el contenedor del título
section_classes.titleUsado para el título
section_classes.products_containerUsado para el contendor del grupo de productos
section_classes.slider_containerUsado para el contenedor del slider
section_classes.slider_wrapperUsado para el "wrapper" del slider, necesario en Swiper.js
section_classes.slider_controls_containerUsado para el contenedor de los controles del slider
section_classes.slider_control_paginationUsado para el paginado del slider
section_classes.slider_controlUsado para cada control de "siguiente" y "anterior" en el slider
section_classes.slider_direction_controls_containerUsado para el contenedor de los controles de "siguiente" y "anterior" en el slider, en caso de que el booleano slider_direction_controls_container sea true
section_classes.slider_control_prev_containerUsado para el contenedor del control de "anterior" en el slider
section_classes.slider_control_next_containerUsado para el contenedor del control de "siguiente" en el slider
section_classes.slider_control_prevUsado para el control de "anterior" en el slider
section_classes.slider_control_nextUsado para el control de "siguiente" en el slider

Dependencias

Para que el slider funcione es necesario agregar el JS en la tienda. En el caso de nuestros diseños usamos Swiper.js que está cargado en el archivo external-no-dependencies.js.tpl y el slider es creado en el archivo store.js.tpl