Si alguna vez os habéis preguntado qué framework o qué gestor de contenidos utilizar, y no habéis llegado a ninguna conclusión quizás es porque lo que realmente necesitéis lo podéis hacer vosotros mismos con un poco de esfuerzo…y digo esto porque lo que necesitamos últimamente en la comunidad de programadores es gente que haga las cosas bien, gente como Pedro Luis, que nos regala el código de una web que tuvo que realizar en su trabajo. Pedro es Ingeniero Informático y le gusta hacer las cosas como un ingeniero debe hacerlas, con base y fundamento jeje
Nuestro amigo ha subido a su directorio lo que véis en el vídeo, el proyecto Inventaria, un motor de sitio web para organizar departamentos de un colegio, la tecnología que utiliza en su pequeño y humilde pero potente framework es: jQuery, PHP, mySQL y XHTML+CSS. Está pensada para que se pueda escalar fácilmente, añadiendo nuevas clases que harán de controladores y vistas…sí, le falta el modelo para completar el círculo del patrón MVC pero, quién necesita realmente un modelo cuando tienes el gestor de plantilla Smarty?… puede hacer el controlador y la comunicación con este sistema de plantillas de modelo al mismo tiempo? efectivamente, y así es como nuestro querido amigo Pedro lo ha pensado y ahora, sigamos viendo algo de código.
La estructura del sitio es algo que ya hemos visto en otros frameworks más famosos, primero tiene un index.php y por medio de un fichero .htaccess , redirige todas las peticiones menos multimedia a este script, que simplemente se conecta a la base de datos y renderiza la vista que la acción de la URL especifica, algo que todos conocemos:
//Extract Controller, Action and parameters from URL $query = $_SERVER['QUERY_STRING']; $request = explode('/', $query); $controller = (!empty($request[1])) ? $request[1] : 'main'; $action = (!empty($request[2])) ? $request[2] : 'index';
y Pedro lo hace de forma muy inteligente y compactada, como véis es código que se entiende a la primera incluso las condiciones anidadas en una única línea. El motor o núcleo es tan sencillo que entra en esas menos de 100 líneas, un resultado de una acción se guarda directamente filtrado y procesado mediante el uso a la llamada de un controlador asociado creado en la variable $instance, que es la instancia de la clase perteneciente al controlador que la URL especifica…
include('controllers/'.$controller.'.php'); $instance = new $controller; $result = call_user_func(array($instance, $action), $params); $view = $result['view']; $data = $result['data']; render_view($view, $data);
aquí podéis ver que se carga el controlador, se crea la instancia de la clase y se procesa el resultado para llamar seguidamente al renderizador de la vista, que podría ser,al mismo tiempo cualquier otra clase, pero en este caso es smarty y cerramos el ciclo del patrón Modelo – Vista – Controlador de una de las maneras más simples que he visto en estos días jeje
Si profundizamos en el Controlador, veremos que implementa sólo dos, el encargado de la página principal y el que maneja las materias del departamento del colegio, y funciona casi como una capa por encima de la clase de la base de datos, es decir, hace las consultas de listados, modificaciones, inserciones o borrados fáciles sólo pensando un poquito.
Para instalarlo sólo hay que crear una base de datos ,poner los valores de configuración en index.php e install.php, que por simplicidad ni siquiera se ha creado un config.php jaja, y lanzamos este install.php, tras lo que podemos cargar la web en el navegador.
Para probar este software directamente en mi PC me he bajado el maravilloso paquete de MoWeS (Servidor Apache2+mysql5+php5+image-magick+phpmyadmin en 23MB), he descomprimido Inventaria en el directorio www/inv de MoWeS, después he creado una base de datos con juego de caracteres UTF8 con una instrucción sencilla en phpmyadmin:
CREATE DATABASE `inventaria` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
y he puestos los datos de configuración en index.php e install.php
$host = 'localhost'; $dbname = 'inventaria'; $dbuser = 'root'; $dbpass = '';
para lanzar localhost/inv/install.php ,lo que me devuelve:
Creating departments data table...OK Creating materials data table...OK Creating constraints...OK Creating departments data --------------------------- Creating Religión table...OK Creating Plástica table...OK Creating Ciencias Sociales table...OK Creating Tecnología table...OK Creating Francés table...OK Creating Latín table...OK Creating Música table...OK Creating Gestión Administrativa table...OK Creating Física y Química table...OK Creating Educación Física table...OK Creating Biología y Geología table...OK Creating Filosofía table...OK Creating Orientación table...OK Creating Matemáticas table...OK Creating Lengua table...OK Creating Inglés table...OK
con lo cual, ya tenemos todo, ya podemos entrar en localhost/inv/. Si queremos cambiar el directorio inv por cualquier otro sólo tendríamos que cambiar las referencias en las plantillas de inv al nuevo nombre, por ejemplo, «inventaria».
A partir de aquí ,es tarea del lector avanzar el proyecto y enfocarlo hacia una web que trate de manzanas, cómics, o por qué no? una tienda o cualquier otra cosa!
Ya no tenéis excusa para hacer las cosas bien desde cero, tenéis el conocimiento en vuestras manos, usadlo sabiamente :)
Mención especial a Pedro por compartir con nosotros su código, gracias!
Juan, como siempre, excelente artículo. Llevo en mi lista de cientos de tareas atrasadas escribir en mi blog algo como lo que has hecho tú aquí, pero no he sacado tiempo, desde el verano no he tenido ni un poquito de estabilidad, entre unas cosas y otras. Pero ahora, lo que voy a hacer es poner un enlace directamente a tu artículo, porque aún escribiendo yo algo, dudo mucho que mejorara lo que has expuesto, has recogido la esencia del proyecto y la has explicado perfectamente.
Ahora lo que espero es que sirva a la gente, aunque sea solo con fines didácticos :).
Gracias por todo Pedro
Mis felicitaciones, excelente y muy simple ;)
jaja, gracias Ariel
Estimado, una mera acotacion, al descargar el proyecto del Inventario, en el archivo «.htaccess», se debe cambiar:
Options +FollowSymlinks
Por:
Options +FollowSymLinks
Debido a que la minuscula en «links» produce error 500.
Saludos
Y si produce error 500 en el servidor o hosting, es porque el archivo «.htaccess» esta corrupto, crear otro con el notepad++ copiar y pegar el contenido y guardarlo.
=)
Tengo el error 500, pero no encuentro el archivo “.htaccess”