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

Topic summary

Problema principal: Una tienda con más de 1,980 colecciones solo puede acceder a un máximo de 1,000 mediante un bucle {% for collection in collections %} en Liquid. El filtrado alfabético se detiene en la letra G, impidiendo visualizar todas las colecciones necesarias (74 con template_Y y 100 con template_X).

Limitación técnica: El objeto global collections en Shopify Liquid tiene un límite de 1,000 elementos.

Soluciones propuestas:

  • Section Rendering API: Usar la API de Shopify para manejar grandes bloques de contenido HTML, mejorando el rendimiento. Requiere conocimientos de HTML y JavaScript.

  • Paginación en Liquid: Implementar el objeto paginate con el parámetro by (recomendado máximo 100-200 elementos por página por rendimiento):

{% paginate collections by 200 %}
{% endpaginate %}
  • Fetch API con JavaScript: Realizar peticiones asíncronas al endpoint de secciones para cargar contenido dinámicamente.

Estado: La discusión permanece abierta. Se proporcionaron recursos técnicos y documentación, pero la implementación requiere desarrollo personalizado fuera del soporte estándar de Shopify.

Summarized with AI on November 14. AI used: claude-sonnet-4-5-20250929.

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.

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,

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§ions=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