FROM CACHE - es_header
Esta comunidad ahora recibe asistencia de una red de pares. El equipo de atención al cliente de Shopify ya no ofrece servicio a esta comunidad. Te animamos a conectar con otros emprendedores y partners para pedir ayuda y compartir tus experiencias. Sigue avisando de asuntos que incumplan nuestro Código de Conducta o contenidos que se deberían eliminar.

Tengo una galeria y no me imprime toda la informacion que necesito.

Tengo una galeria y no me imprime toda la informacion que necesito.

Marta15
Shopify Partner
1 0 0

Buenas, tengo una consulta, en la tienda tengo mas de 1980 collections y hago un filtrado por template, al tener 1980 solo me llega a detectar un maximo de 1000 y no consigo que se visualice toda la información que necesito ya que esta ordenado alfabeticamente y me llega solo hasta la letra G, estoy extrayendo la informacion de esta forma:

{% for collection in collections %}
{%- if collection.template_suffix contains "template_Y" or collection.template_suffix contains "template_X" -%}
{% render 'collection-card', section: section, collection: collection, card_style: 'standard', text_alignment: 'center', image: collection.image, show_product_count: false, hover_effect: 'scaling-up', title: collection.title %}
{%- endif -%}
{% endfor %}

 

Hice un filtrado para ver que información me implementa y el resultado es este
collections: 1000
template_suffix: template_Y 73
template_suffix: template_X: 48

Cuando miro cuantos realmente tengo son 1980 me pone que tengo 74template_Y y 100 template_X.
Alguien podría ayudarme a encontrar una forma de poder captar la información que necesito o como poder sobrepasar esos 1000 aun que sea con un pagination, infinite scroll o algún otra forma.

Gracias de ante mano.

2 RESPUESTAS 2

Javier
Shopify Staff
1945 485 258

Hola @Marta15,

 

Gracias por ponerte en contacto.

 

Solo para aclarar, las preguntas relacionadas con código quedan fuera del alcance de soporte del equipo de Shopify. 

 

Sin embargo, mientras esperas por algún otro desarrollador responderte en este hilo, puedes:

 

 

Cordiales saludos, 

Javier | Shopify 
 - ¿Te resultó útil mi respuesta? Dale Me gusta para hacérmelo saber 
 - ¿Resolvimos tu pregunta? Dale a Aceptar como solución
 - Para saber más visita el Centro de ayuda de Shopify o nuestro Blog de Shopify

joseamayadev
Shopify Partner
80 12 16

Entiendo que estás utilizando un bucle for con el objeto global de colecciones en tu código, verificando nombres de plantillas y campos de texto específicos. No estoy seguro si cada una de tus 1980 colecciones corresponde a una plantilla distinta.

 

Te sugiero usar la API de section rendering de Shopify para manejar grandes bloques de contenido HTML como tus 1980 colecciones. Esto mejorará el rendimiento de tu tema. Aquí tienes la documentación para empezar: Shopify Section Rendering API. Necesitarás conocimientos básicos en HTML y JavaScript para implementarlo y es la forma mas simple de manejar esta lógicas personalizadas desde el Front.

 

Vi que consultaste sobre la paginación en liquid, en liquid tienes un objeto de paginación que permite encapsular el bucle for:

El parametro by puede recibir diferentes valores númericos, no te recomiendo pasar de 100 elementos por temas de velocidad del lado del cliente.

 

 

 

{% paginate collections by 200 -%}
{% endpaginate %}

 

 


Leer mas sobre paginate: 

https://shopify.dev/docs/api/liquid/objects/paginate 

 

Te dejo un ejemplo simple de su uso:

 

 

 

// Define el endpoint de donde extraerás el HTML
const endpoint = 'TU_ENDPOINT_AQUI'; 
// https://url_tu_tienda/collections?page=2&sections=nombre_tu_archivo_section_liquid

// Define el ID o clase del elemento donde quieres mostrar el HTML
// Por ejemplo, '#miComponente' para un ID o '.miComponente' para una clase
const componenteIdOClase = 'IDENTIFICADOR_DEL_COMPONENTE';

// Realiza la solicitud fetch al endpoint
fetch(endpoint)
    .then(response => {
        // Asegúrate de que la respuesta es exitosa
        if (!response.ok) {
            throw new Error('La solicitud falló con el estado ' + response.status);
        }
        return response.text(); // Obtiene el texto (HTML) de la respuesta
    })
    .then(html => {
        // Encuentra el elemento en el DOM
        const elemento = document.querySelector(componenteIdOClase);
        if (elemento) {
            // Establece el HTML del elemento
            elemento.innerHTML = html;
        } else {
            console.error('Elemento no encontrado con el identificador:', componenteIdOClase);
        }
    })
    .catch(error => {
        // Maneja cualquier error que ocurra durante la solicitud
        console.error('Error al realizar la solicitud fetch:', error);
    });

 

 

 

 

Espero te sirva

José A. Amaya
Shopify Developer
www.joseamaya.com