Guía del blog · Anatomía

La anatomía del blog: sus complementos

El blog no es una sola página: es un conjunto de piezas que trabajan juntas —la columna lateral, la paginación, el artículo—. Aquí están todas, cada una con su página de detalle.

Esta página es el mapa del blog por dentro. Cada complemento se abre y se explica a la misma profundidad —qué problema resuelve, de qué piezas se compone, cómo se comporta en el teléfono, dónde encaja y cómo está construido—, igual que la serie de Módulos del sitio.

Y todos descansan en el mismo principio: el contenido (Markdown) va separado del diseño (la plantilla). Publicar un artículo es agregar un archivo; el listado, la paginación y el detalle se generan solos. Una sola fuente de verdad, cero trabajo repetido.

Concepto

¿Qué es un complemento del blog?

Una pieza con una función clara dentro del blog: navegar entre artículos, partir el listado o renderizar el artículo en sí. Cada una se construye una vez y se reutiliza.

Si un módulo es un ladrillo del sitio entero, un complemento del blog es un ladrillo de su sección de contenido. El sidebar reparte hacia categorías y temas; la paginación ordena el listado cuando crece; el artículo es la pieza central que convierte un archivo Markdown en una página completa con su SEO resuelto.

Pensar el blog en complementos —y no como una página suelta— es lo que lo mantiene coherente y fácil de mantener. Un cambio en una pieza se refleja en todo el blog a la vez. En esta serie, cada complemento tiene su página: qué es, para qué sirve, qué lleva, dónde va y cómo está construido.

El índice

Todos los complementos del blog

Los 7 complementos publicados, cada uno como tarjeta: foto, nombre, qué hace y las piezas que lo componen. Entra a cualquiera para verlo a fondo.

Cada tarjeta es una pieza real del blog: foto, nombre, qué hace y los elementos que lo componen. Es el MISMO card del catálogo —no inventamos un diseño aparte—, porque la coherencia es justo lo que esta serie enseña.

Son los siete complementos del blog: sidebar, paginación, artículos, tarjeta de artículo, archivo de categoría, archivo de etiqueta y artículos relacionados. Cada uno con su página de detalle y el molde de 10 secciones.

Por dentro

Cada complemento, por dentro

La vitrina de arriba te dice qué es cada pieza; aquí la abrimos. Mismo formato para todas: qué resuelve, de qué partes se compone y en qué te fijas al construirla.

Es el MISMO bloque «a fondo» del catálogo —información a la izquierda, galería a la derecha, idéntico para cada pieza—. Reusar el patrón es, otra vez, la lección: el blog se arma con componentes que ya existen en el sitio.

Son los mismos complementos que ves arriba como tarjetas, abiertos uno por uno con la misma estructura. El copy y la galería salen de una sola fuente (ANATOMIA_AFONDO en lib/blogAnatomia.ts). El botón «Ver complemento» solo aparece en los que ya tienen su página.

El complemento a fondo

Sidebar

El sidebar es la columna de apoyo que acompaña al contenido del blog. No es decoración: es el motor de enlazado interno. Reúne categorías y temas (con su conteo), lecturas recomendadas y puentes al resto del sitio, y cierra con una acción. Convierte cada artículo —que de otro modo terminaría en un callejón— en un cruce de caminos hacia el resto del blog y del negocio.

Y no se escribe a mano: sus listas se calculan desde la colección de artículos, así que publicar un .mdx las actualiza solas. El componente (BlogSidebar.astro) es presentacional —solo pinta lo que recibe—; el cálculo de datos vive en la página del listado. Sticky en escritorio para acompañar la lectura, debajo del contenido en móvil.

  • Cinco widgets: categorías con conteo, temas, recomendados, accesos al sitio y CTA
  • Enlazado interno con anchor text real: reparte autoridad y da contexto temático
  • Data-driven desde la colección: las listas se actualizan al publicar
  • Sticky en escritorio, debajo del contenido en móvil; CTA con waUrl() (regla D4)
Ver el complemento Sidebar

El complemento a fondo

Paginación

La paginación parte el listado del blog en páginas navegables cuando los artículos crecen: en vez de una sola página interminable, /blog, /blog/2, /blog/3… con controles «anterior / siguiente». Mantiene el peso de cada página bajo control, acelera la carga y le da al lector una sensación clara de avance por el archivo.

Bien hecha es también una decisión de SEO: cada página listada es indexable, los enlaces de paginación son <a href> reales (no JavaScript) y se cuida la señal de continuidad entre páginas. En Astro se resuelve con la API de paginate() en una ruta dinámica —sin librerías— para generar todas las páginas en build.

  • Listado partido en páginas: /blog, /blog/2… con «anterior / siguiente»
  • Páginas más ligeras y rápidas que un scroll infinito
  • Enlaces reales (a href) indexables: navegables sin JavaScript
  • Se genera en build con la API paginate() de Astro (próximamente)
Ver el complemento Paginación

El complemento a fondo

Artículos

El artículo es la pieza central del blog: un archivo Markdown (.mdx) con frontmatter tipado —título, descripción, fecha, categoría, tags— y el cuerpo del texto. El autor se concentra en escribir; la estructura, el SEO y los datos estructurados (Article JSON-LD) ya están resueltos por la plantilla. Contenido y diseño van separados a propósito.

Cada .mdx es una entrada de una Content Collection validada por Zod: si falta un campo o tiene mal tipo, el build avisa. Una sola ruta dinámica los renderiza todos con el mismo layout, así que publicar es agregar un archivo —el listado, la paginación y la página de detalle se generan solas, sin tocar código—.

  • Artículo en .mdx con frontmatter tipado: contenido separado del diseño
  • Content Collection validada por Zod: el build avisa si algo falta
  • Una ruta dinámica renderiza todos los artículos con el mismo layout
  • Publicar = agregar un archivo; el resto del blog se actualiza solo
Ver el complemento Artículos

El complemento a fondo

Tarjeta de artículo

La tarjeta de artículo es la cara de cada entrada en el listado: imagen de cabecera, badge con la categoría, título, un resumen breve y el enlace «Leer artículo». Convierte la lista del blog en una vitrina escaneable —el lector decide de un vistazo qué abrir— en vez de un muro de títulos.

No es un componente aparte: reutiliza la misma CategoryCard del catálogo, alimentada con los datos del artículo (título, descripción, categoría e imagen). Reusar la card es la lección de siempre —una sola pieza, coherente en todo el sitio— y mantiene alturas iguales y carga de imagen optimizada sin trabajo extra.

  • Imagen con alt + badge de categoría + título (H3) + resumen + CTA
  • Reutiliza CategoryCard: misma card del catálogo, cero diseño duplicado
  • Datos del artículo (.mdx): título, descripción, categoría, imagen
  • Alturas iguales en la rejilla y carga de imagen cuidada (lazy/eager)
Ver el complemento Tarjeta de artículo

El complemento a fondo

Archivo de categoría

El archivo de categoría es la página que agrupa todos los artículos de una categoría —/blog/categoria/<cat>—. Le da al lector (y al buscador) una vista temática del blog: «todo lo de Guías», «todo lo de Novedades». Es una ruta dinámica que se genera sola por cada categoría con artículos.

Funciona como puerta de entrada SEO: una página por tema, con su título y su listado, enlazada desde el badge de cada tarjeta y desde el sidebar. Comparte la misma tarjeta y la misma rejilla del listado principal, así que se ve idéntica sin escribir layout nuevo.

  • Una página por categoría: /blog/categoria/<cat>, generada en build
  • Vista temática del blog para lector y buscador
  • Enlazada desde el badge de cada tarjeta y desde el sidebar
  • Reutiliza la tarjeta y la rejilla del listado: cero layout nuevo
Ver el complemento Archivo de categoría

El complemento a fondo

Archivo de etiqueta

El archivo de etiqueta agrupa los artículos por tema transversal —/blog/tag/<tag>—. A diferencia de la categoría (una por artículo), las etiquetas son varias y cruzan secciones: conectan piezas que comparten un concepto aunque vivan en categorías distintas. Es la red fina del descubrimiento.

Como el archivo de categoría, es una ruta dinámica generada por cada etiqueta usada, enlazada desde la nube de temas del sidebar y desde los tags del artículo. Mismo listado, misma tarjeta: el patrón se reutiliza y la coherencia sale gratis.

  • Una página por etiqueta: /blog/tag/<tag>, generada en build
  • Conecta por tema transversal (varias por artículo)
  • Enlazada desde la nube de temas del sidebar y los tags del artículo
  • Mismo listado y tarjeta que el resto del blog
Ver el complemento Archivo de etiqueta

El complemento a fondo

Relacionados

El bloque de relacionados —«sigue leyendo»— cierra cada artículo con un puñado de enlaces a otros del blog. Es lo que evita el callejón sin salida al final de la lectura: en vez de cerrar la pestaña, el lector encadena otra entrada. Sube las páginas por sesión y reparte autoridad interna entre artículos.

Vive en el ArticleLayout y se alimenta de la colección: hoy toma artículos hermanos; el patrón ideal es priorizar los de la misma categoría o que comparten etiquetas. Usa anchor text real (el título del artículo) hacia /blog/<slug>, así sirve al lector y al SEO a la vez.

  • Cierra el artículo con enlaces a otras entradas («sigue leyendo»)
  • Evita el callejón sin salida: más páginas por sesión
  • Anchor text real (el título) hacia /blog/<slug>
  • Data-driven desde la colección; ideal por categoría/tags compartidos
Ver el complemento Relacionados

Responsive y móvil

El blog, en el teléfono

El sidebar no desaparece: baja debajo del artículo. La paginación se simplifica. Las cards son cómodas de tocar. Cada pieza del blog tiene su regla móvil clara.

El blog tiene tres zonas que cambian en el teléfono: el sidebar pasa de columna derecha a bloque bajo el artículo (el contenido siempre va primero); la paginación colapsa los números y deja solo Anterior/Siguiente para no desbordar; y las cards del listado crecen al área táctil de 44 px para evitar taps fallidos.

Ninguna de estas reglas requiere JS: son CSS puros vía mobile.css y el grid del ArticleLayout. Lo que el teléfono elimina —los números de paginación, el sidebar lateral— no se pierde: cambia de lugar o de forma. El contenido siempre está accesible.

1 · El sidebar baja al final

En escritorio el sidebar va a la derecha en una segunda columna. En el teléfono la rejilla colapsa a una columna: el artículo sube (order: 1) y el sidebar baja (order: 2). Los links de categorías siguen accesibles, pero el contenido va primero.

CSS · sidebar apilado en móvil
/* mobile.css · el sidebar baja DEBAJO del artículo en pantallas angostas.
   No desaparece: los enlaces de categorías siguen accesibles, solo cambian de lugar. */
.article-grid { display: grid; grid-template-columns: 1fr 300px; gap: var(--sp-6); }
@media (max-width: 900px) {
  .article-grid { grid-template-columns: 1fr; }        /* 1 columna */
  .sidebar      { order: 2; }                           /* sidebar al final */
  .article-body { order: 1; }                           /* artículo primero */
}

2 · Cards cómodas de tocar

La imagen ocupa el ancho completo en el teléfono; el botón «Leer artículo» crece al área táctil mínima de 44 px. En el teléfono se toca con el dedo —el cursor no existe— y un área pequeña genera abandono.

mobile.css · card de artículo táctil
/* mobile.css · la card de artículo se toca cómodo en el teléfono. */
@media (max-width: 1024px) {
  a, button, [role="button"] {
    -webkit-tap-highlight-color: rgba(91, 61, 245, .15); /* feedback al tap */
  }
}
@media (max-width: 768px) {
  /* imagen de la card ocupa el ancho completo */
  .acard__img { width: 100%; aspect-ratio: 16/9; object-fit: cover; }
  /* botón «Leer artículo» con área táctil mínima de 44 px */
  .acard__cta { min-height: 44px; display: inline-flex; align-items: center; }
}

3 · Paginación simplificada

En pantallas muy estrechas los números de página se ocultan; quedan solo «Anterior» y «Siguiente» a todo el ancho. El visitante siempre sabe cómo navegar sin que los botones queden diminutos o desborden.

CSS · paginación colapsable
/* La paginación del listado es mobile-first: botones apilados en móvil.
   El link «Anterior» y «Siguiente» tienen área táctil de 44px. */
.pagination { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--sp-2); }
@media (max-width: 480px) {
  /* en pantallas muy estrechas, solo Anterior/Siguiente (los números se ocultan) */
  .pagination__num { display: none; }
  .pagination__prev, .pagination__next { flex: 1; justify-content: center; }
}
/* área táctil de 44 px en cualquier botón de paginación */
.pagination a, .pagination button { min-height: 44px; display: inline-flex; align-items: center; }

Preguntas frecuentes sobre la anatomía del blog

¿Cuántas piezas tiene el blog en este sistema?

Siete: sidebar (columna lateral con links), paginación (partir el listado), artículos (el contenido en Markdown), tarjeta de artículo (la card del listado), archivo de categoría, archivo de etiqueta y bloque de artículos relacionados. Todas están en estado "listo" y cada una tiene su página de detalle con el molde de 10 secciones.

¿Cómo publico un artículo nuevo?

Crea un archivo .mdx en src/content/blog/ con su frontmatter (título, descripción, categoría, imagen, fecha). El artículo aparece automáticamente en el listado /blog, en el archivo de categoría y en la paginación. No tocas ningún .astro: el contenido va en Markdown, el diseño ya está.

¿Qué es el sidebar y dónde aparece?

El sidebar es la columna lateral del blog: lista las categorías, las etiquetas más usadas y artículos recientes. Aparece en el layout ArticleLayout (cada artículo individual). En móvil se apila debajo del artículo para no robarle espacio al contenido. Es el motor de enlazado interno del blog: distribuye PageRank hacia todas las secciones.

¿La paginación se genera automáticamente?

Sí. El archivo src/pages/blog/pagina/[page].astro usa getStaticPaths() con paginate() de Astro. Solo tienes que definir PAGE_SIZE en lib/blog.ts (por defecto 9 artículos por página). Si publicas el artículo número 10, la página /blog/pagina/2 se crea sola en el siguiente build.

¿Cómo funciona el bloque de artículos relacionados?

Cada artículo puede declarar un array relatedSlugs en su frontmatter apuntando a slugs de otros artículos. El ArticleLayout lee esos slugs, obtiene los artículos de la colección y renderiza el bloque "Sigue leyendo" con sus tarjetas. Si relatedSlugs está vacío, el bloque no aparece. Sin inventar relaciones falsas.

¿Necesitas ayuda?