Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

1.6. Productos y categorías - creación de tablas en la base de datos

10/05/2025, by Ivan

Antes de crear la funcionalidad de productos y categorías, pensemos en la información que necesitarán nuestros clientes y los administradores del sitio. Es necesario proporcionar suficiente información sobre el producto: debemos mostrar el nombre del producto, su descripción detallada y su precio. También podemos incluir una imagen principal del producto y otras imágenes adicionales. Puede que necesitemos el peso del producto para calcular los costos de envío. También es importante conocer el stock disponible, para no vender productos que ya no tenemos. Para los administradores, se necesitará un ID de producto y una URL legible para los motores de búsqueda.

Como resultado, deberíamos tener al menos los siguientes campos:

Dato Descripción
ID Número de producto para uso interno del sitio
Name Nombre del producto
URL amigable Principalmente para motores de búsqueda
Description Información detallada del producto
SKU Código del producto para los usuarios
Price Precio del producto
Stock Cantidad disponible en el sitio
Imagen principal Imagen destacada
Imágenes adicionales Otras imágenes del producto

En artículos posteriores ampliaremos esta lista, pero por ahora es suficiente.

Las categorías de productos tienen su propio conjunto de campos:

Dato Descripción
ID Número interno de categoría
Name Nombre de la categoría
Description Descripción de la categoría
URL amigable URL legible para motores de búsqueda

Podríamos seguir adelante y construir la estructura de datos y funcionalidad para mostrar productos y categorías usando nuestro framework, pero si lo hiciéramos ahora, perderíamos mucha flexibilidad. La mayoría del contenido comparte información común. Si identificamos esta información y creamos un tipo de contenido abstracto, nuestro framework será más flexible. Así podremos reutilizar funcionalidades comunes sin duplicar código. Algunas de estas funcionalidades podrían ser:

  • Versionado de contenido
  • Control de acceso
  • Comentarios para contenidos, páginas y productos
  • Valoraciones de páginas y productos

Páginas

Las páginas serán secciones estáticas del sitio: Contacto, información sobre envíos y pagos, etc. Estos son los datos asociados:
Dato Descripción
Nombre Nombre de la página
URL amigable Ruta de la página
ID ID interno de la página
Heading Contenido de la etiqueta h1
Title Contenido de la etiqueta <title>
Content Contenido de la página
Keywords Contenido de la metaetiqueta de palabras clave
Description Contenido de la metaetiqueta de descripción

Contenido

Las páginas serán el tipo de contenido principal que extenderemos cuando sea necesario agregar más campos. Las páginas de categoría son esencialmente iguales pero con campos adicionales para asociarlas con productos.
Dato Descripción
ID ID interno
Nombre Nombre del contenido
URL amigable  
Contenido Contenido de la página
Tipo Tipo de contenido (por ejemplo, página, producto, categoría)
Orden Orden de aparición, por ejemplo en menús
Padre Elemento padre, útil para jerarquías como subcategorías
Meta keywords Palabras clave
Meta description Meta descripción
Fecha de creación Fecha de creación del contenido
Autor Autor del contenido
Activo Si el contenido está visible para los visitantes
Protegido Restricción de acceso, por ejemplo solo para usuarios registrados

Revisiones

Al igual que en Drupal, tendremos nuestro propio sistema de revisiones.
Dato Descripción
ID ID interno del contenido
Revisión actual Número de la versión actual
Ahora que hemos definido nuestros tipos de contenido, podemos proceder a crear la base de datos. Para cada tipo se creará una tabla independiente. Estas serán las tablas principales:
Tabla Descripción
Contenido Relaciona versiones activas con información inmutable como autor
Versiones Datos de cada versión de contenido
Tipos de contenido Tipos de contenido definidos en el framework
Productos Extensión de datos específicos para productos
Historial de revisiones Registro de revisiones

Contenido

Todo el contenido del sitio se almacenará en esta tabla. Si deseamos extender un tipo específico (como productos), lo haremos en una tabla separada relacionada por ID.
Campo Tipo Descripción
ID Integer (auto increment) Clave para relaciones
Revisión actual Integer Vinculación a la tabla de versiones
Activo Boolean Indica si el contenido está publicado
Protegido Boolean Si solo está accesible para usuarios registrados
Padre Integer Elemento padre del contenido
Orden Integer Orden de visualización
Autor Integer ID del creador del contenido
Tipo Integer ID del tipo de contenido
Ruta Varchar Campo para la URL amigable
Ahora podemos ejecutar la consulta para crear la tabla de contenido:
CREATE TABLE `content` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `current_revision` int(11) NOT NULL,
  `active` tinyint(1) NOT NULL,
  `secure` tinyint(1) NOT NULL,
  `parent` int(11) NOT NULL,
  `order` int(11) NOT NULL,
  `author` int(11) NOT NULL,
  `type` int(11) NOT NULL,
  `path` char(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;