Shop Catalog Layout
El catalogo compacto principal no vive en woocommerce/archive-product.php del tema, sino en el override del modulo Woo setup.
Archivos clave:
- setup/modules/woocommerce-setup/templates/woocommerce/archive-product.php
- setup/modules/woocommerce-setup/module.php
- setup/modules/woocommerce-setup/assets/js/woocommerce-card.js
- setup/modules/woocommerce-setup/assets/css/woocommerce-setup.css
Qué controla archive-product.php
Este archivo compone la experiencia principal de tienda y de taxonomias Woo compactas.
Que resuelve:
- breadcrumbs y notices
- shell de sidebar y main content
- drawer mobile de filtros
- toolbar con ordenacion, filtros y densidad
- chips de filtros activos
- strip visual de categorias destacadas
- grid de productos
- paginacion y per_page
- root para refresco AJAX
Ancla principal:
<div class="gp-shop-ajax-root" data-shop-ajax-root>Eso es clave porque el runtime del catalogo refresca dentro de ese root.
Sidebar y toolbar
La sidebar no es solo markup pasivo.
Capas:
- desktop: panel lateral con toggle para colapsar
- mobile: offcanvas con overlay
- toolbar: boton de filtros, ordenacion, per_page y controles de vista
Varias features se gobiernan por settings:
- woo.shop_sidebar_enabled
- woo.shop_category_filter_enabled
- woo.shop_price_filter_enabled
- woo.shop_category_strip_enabled
Grid
El template trabaja con una grid controlada por variables y settings, no por auto-fit generico.
Helpers:
- bs_wc_setup_shop_default_grid_columns()
- bs_wc_setup_shop_mobile_columns()
- bs_wc_setup_shop_per_page()
Rangos permitidos:
- desktop columns: 1 a 5
- mobile columns: 1 o 2
- per_page: 9, 12, 18, 24
Filtros activos
archive-product.php construye un resumen legible de filtros activos a partir de:
- bs_cat[]
- attr_pa_*
- attr_local_*
- min_price y max_price
Eso sirve tanto para chips visibles como para contadores y copy de toolbar.
Category strip
Ademas del panel izquierdo, el template puede pintar una tira de categorias destacadas.
Comportamiento:
- en shop general usa top-level categories
- en una product_cat usa hijas de la categoria actual cuando existen
- puede anadir acciones tipo Subir a padre o Ver toda la tienda
No es la misma cosa que taxonomy-product_cat.php; aqui sigue dentro del shell de catalogo compacto.
Query y contexto
El HTML de archive-product.php no decide solo la query, pero si consume y refleja varios GET params saneados:
- bs_cat
- attr_pa_*
- attr_local_*
- min_price
- max_price
- paged
- per_page
- balinot_view
La parte pesada de la query se remata en pre_get_posts dentro del modulo.
Paginacion y per_page
El template genera URLs respetando filtros actuales y reinyecta el contenido paginado dentro del root AJAX.
Por eso no conviene tocar enlaces de paginacion o selector por pagina como si fueran piezas estaticas.
Cards dentro del grid
El catalogo no pinta producto por producto a mano. Se apoya en la API compartida de cards del modulo y en el runtime JS correspondiente.
Regla practica
- si cambia el shell del catalogo o la toolbar, toca archive-product.php
- si cambia la query real, revisa pre_get_posts y helpers del modulo
- si cambia la UX de la card, revisa templates de card y woocommerce-card.js