4-recorrido por el pueblo
Implementando la Sección de Recorrido por el Pueblo para un Hotel
En este nuevo post del blog, comparto cómo desarrollé la sección dinámica de "Recorrido por el Pueblo", una característica clave para hoteles que desean destacar los atractivos locales y experiencias turísticas cercanas.
Estructura de la Base de Datos
La tabla recorrido fue diseñada para mostrar puntos de interés turístico:
CREATE TABLE `recorrido` (
`id` int(11) NOT NULL,
`foto_peq` text NOT NULL,
`foto_grande` text NOT NULL,
`titulo` text NOT NULL,
`descripcion` text NOT NULL,
`fecha` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;Arquitectura MVC para el Recorrido
1. Modelo (ModeloRecorrido.php)
class ModeloRecorrido {
static public function mdlMostrarRecorrido($tabla) {
$stmt = Conexion::conectar()->prepare("SELECT * FROM $tabla");
$stmt->execute();
return $stmt->fetchAll();
}
}2. Controlador (ControladorRecorrido.php)
class ControladorRecorrido {
static public function ctrMostrarRecorrido() {
$tabla = "recorrido";
return ModeloRecorrido::mdlMostrarRecorrido($tabla);
}
}3. Vista (Carrusel Interactivo)
Implementé un carrusel con diseño adaptativo que muestra:
<div class="container mt-5">
<h1 class="text-center mb-4">RECORRIDO POR EL PUEBLO</h1>
<div id="carouselRecorrido" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-inner">
<?php foreach ($recorrido as $key => $value): ?>
<div class="carousel-item <?php echo $key == 0 ? 'active' : ''; ?>">
<div class="row align-items-center">
<div class="col-lg-4 text-center">
<img src="<?php echo $servidor.$value["foto_peq"]; ?>" class="img-fluid mb-3" alt="Miniatura">
<h3><?php echo $value["titulo"]; ?></h3>
<p><?php echo $value["descripcion"]; ?></p>
</div>
<div class="col-lg-8">
<img src="<?php echo $servidor.$value["foto_grande"]; ?>" class="img-fluid" alt="Vista completa">
</div>
</div>
</div>
<?php endforeach; ?>
</div>
<!-- Controles de navegación -->
<button class="carousel-control-prev" type="button" data-bs-target="#carouselRecorrido" data-bs-slide="prev">
<span class="carousel-control-prev-icon"></span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselRecorrido" data-bs-slide="next">
<span class="carousel-control-next-icon"></span>
</button>
</div>
</div>Características Destacadas
Diseño Dual de Imágenes:
Foto pequeña (para vista rápida)
Foto grande (para visualización detallada)
Adaptación responsive para diferentes dispositivos
Estructura de Datos:
Títulos descriptivos
Textos informativos sobre cada punto de interés
Fechas de actualización automáticas
Carrusel Interactivo:
Navegación fluida entre puntos de interés
Diseño limpio y profesional
Integración perfecta con Bootstrap 5
Optimización de Imágenes:
Rutas dinámicas desde la base de datos
Clases responsive de Bootstrap
Textos alternativos para accesibilidad
Implementación Paso a Paso
Configuración de la Base de Datos:
Creé la tabla con campos para imágenes, título y descripción
Inserté al menos tres puntos de interés iniciales
Estructura MVC:
Modelo para consultar datos
Controlador para gestionar la lógica
Vista para presentación al usuario
Diseño del Carrusel:
Implementación con Bootstrap Carousel
Diseño en dos columnas (texto + imagen)
Efectos de transición suaves
Integración Dinámica:
Conexión PHP con la base de datos
Bucles para mostrar todos los registros
Manejo de clases "active" para el primer elemento
Beneficios para el Hotel
Esta implementación permite:
Mostrar los atractivos locales de forma atractiva
Actualizar fácilmente los puntos de interés
Ofrecer una experiencia interactiva a los huéspedes
Destacar las experiencias únicas cerca del hotel
Mejorar el engagement con los visitantes del sitio web
Próximas Mejoras
Integración con Mapas: Añadir ubicaciones en Google Maps
Sistema de Rating: Permitir valoraciones de visitantes
Filtrado por Categorías: Playas, restaurantes, históricos, etc.
Tour Virtual: Incorporar imágenes 360°
Recorridos Temáticos: Rutas gastronómicas, culturales, etc.
Comentarios
Publicar un comentario