þÿ<?php require_once 'conexion.php'; // Obtener el slug de la categoría mediante GET $slug_cat = isset($_GET['slug']) ? trim($_GET['slug']) : ''; if (empty($slug_cat)) { header("Location: /"); exit; } // Obtener datos de la categoría mediante consulta preparada $stmt_cat = mysqli_prepare($conexion, "SELECT id, titulo, metatags, metadescription FROM categorias WHERE slug = ? LIMIT 1"); mysqli_stmt_bind_param($stmt_cat, "s", $slug_cat); mysqli_stmt_execute($stmt_cat); $res_cat = mysqli_stmt_get_result($stmt_cat); $categoria = mysqli_fetch_assoc($res_cat); if (!$categoria) { // Si la categoría no existe, redirigir a inicio header("Location: /"); exit; } // Configurar metadatos SEO dinámicos con la información de la categoría $page_title = "Categoría: " . $categoria['titulo']; $meta_description = !empty($categoria['metadescription']) ? $categoria['metadescription'] : "Artículos publicados en la categoría " . $categoria['titulo']; $meta_tags = !empty($categoria['metatags']) ? $categoria['metatags'] : "categoria, " . strtolower($categoria['titulo']); include_once 'includes/header.php'; // Obtener los contenidos asociados a esta categoría $id_cat = $categoria['id']; $stmt_posts = mysqli_prepare($conexion, "SELECT c.id, c.titulo, c.slug, c.resumen, c.imagen_portada, c.fecha FROM contenidos c WHERE c.id_categoria = ? AND c.estado = 'publicado' ORDER BY c.fecha DESC"); mysqli_stmt_bind_param($stmt_posts, "i", $id_cat); mysqli_stmt_execute($stmt_posts); $resultado_posts = mysqli_stmt_get_result($stmt_posts); ?> <!-- Encabezado de la Categoría --> <section class="bg-dark text-white py-5 mb-5 shadow-sm"> <div class="container text-center"> <span class="badge bg-primary text-uppercase px-3 py-2 mb-2">Categoría</span> <h1 class="display-5 fw-bold mb-0"><?php echo htmlspecialchars($categoria['titulo']); ?></h1> </div> </section> <div class="container mb-5"> <?php if ($resultado_posts && mysqli_num_rows($resultado_posts) > 0): ?> <div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4"> <?php while ($post = mysqli_fetch_assoc($resultado_posts)): ?> <?php $img_src = !empty($post['imagen_portada']) ? htmlspecialchars($post['imagen_portada']) : 'https://images.unsplash.com/photo-1499750310107-5fef28a66643?auto=format&fit=crop&w=600&q=80'; $fecha_formateada = date('d/m/Y', strtotime($post['fecha'])); ?> <div class="col"> <article class="card h-100 card-post shadow-sm"> <img src="<?php echo $img_src; ?>" class="card-img-top" alt="<?php echo htmlspecialchars($post['titulo']); ?>"> <div class="card-body d-flex flex-column"> <small class="text-muted mb-2 d-block"><i class="fa-regular fa-calendar me-1"></i><?php echo $fecha_formateada; ?></small> <h3 class="card-title h5 fw-bold text-dark mb-2"> <a href="/<?php echo htmlspecialchars($post['slug']); ?>" class="text-decoration-none text-dark"> <?php echo htmlspecialchars($post['titulo']); ?> </a> </h3> <p class="card-text text-secondary flex-grow-1"> <?php echo htmlspecialchars($post['resumen'] ?? 'Sin resumen disponible.'); ?> </p> <div class="mt-3"> <a href="/<?php echo htmlspecialchars($post['slug']); ?>" class="btn btn-outline-primary w-100 rounded-pill btn-read-more"> Leer más <i class="fa-solid fa-arrow-right ms-1"></i> </a> </div> </div> </article> </div> <?php endwhile; ?> </div> <?php else: ?> <div class="alert alert-info text-center py-4 my-4 rounded-4 shadow-sm" role="alert"> <i class="fa-solid fa-folder-open fs-3 mb-2 d-block text-info"></i> Aún no hay publicaciones publicadas en esta categoría. </div> <?php endif; ?> </div> <?php include_once 'includes/footer.php'; ?>