Cómo crear tu propio framework PHP especializado en un tema: Inventaria

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!

e-Commerce con WordPress: programación a medida

He estado realizando diversas tareas de programación de pasarela de pago y opciones de compra, sobre el plugin de WordPress llamado e-Commerce, del equipo Visser Labs, la impresión que me ha dado es que aún no ha “cuajado” del todo, la versión que he probado ha sido la 3.8 y al encontrarme comentarios como “@todo: Get these out of template” la verdad es que no dan mucha confianza al programador y muchas veces yo mismo me he visto envuelto en un mar de dudas, ya que hay bastante nivel de complejidad en lo que se refiere a añadir funcionalidades a las pocas que trae por defecto, evidentemente a sus creadores les interesa ganar dinero con sus propios módulos, por lo que no facilitan nada las tareas de mejorarlo a otros programadores…

Sin embargo hay algunos como Ryan Waggoner que hacen cosas interesantes como el plugin CustomFields y que me permitió entender mejor la forma en la que se puede extender WP eCommerce de una forma más elegante y sencilla.

No obstante, las tareas de programación que me encargaron desde Acta Notarial.com fueron, añadir funcionamiento dinámico con AJAX y unos campos con precios específicos, así como, que al añadir o borrar estos campos se viera reflejado tanto en el precio actual como en el carrito de la compra una vez confirmada:

La tarea no fué trivial puesto que lo primero que tuve que hacer fué enfrentarme a una marejada de ficheros con cientos de líneas de código que no me aclaraban nada…al tiempo, tras crear mi propio plugin basado en el del amigo Ryan me dí cuenta de que lo estaba complicando todo porque tendría que conectar los campos nuevos con los precios de una variación de un producto y había que repetir valores en la administración y complicarle la vida al cliente tanto que decidí modificar parte del núcleo del plugin original…como esto no es una buena práctica decidí hacerlo de forma externa, es decir, me dí cuenta de que sólo tendría que modificar una línea de las funciones AJAX y añadir una plantilla y quizás tras un par de retoques más aquí y allí…sí, habíamos llegado al punto de equilibrio :_)

Aquí el resultado de esta parte del encargo:

 

 

Los plugins de comercio electrónico para WordPress

Caso práctico: ¿Cómo funciona WP e-Commerce?

  • El plugin básico tiene un gestor de categorías, productos, etiquetas, variaciones, cupones de descuento,etc.
  • Lo que le falta son demasiadas cosas para enumerarlas pero se pueden paliar con el trabajo que otros programadores como en mi caso hacemos y compartimos con la comunidad, empezando por un buen gestor de atributos en lugar de variaciones de un producto ;)
  • Al crear un producto podemos especificar imágenes, un título, un precio, otro de oferta y algunas cosas más entre las que cabe destacar el peso y el stock. Para añadir opciones a este producto lo que se hace es crear un grupo de variaciones, para cada elemento de este grupo se encuentra un campo de variación aplicable a un producto si se selecciona en la ficha dispuesta para ello al editar el producto en cuestión.
  • Esta variación puede incluir además una variación en el precio por porcentaje, suma, etc. aunque quizás tengáis que corregir un bug que hace que el precio base no se tenga en cuenta… cosas que pasan con el open-software …
  • Para la tarea que el cliente me encargó tuve que modificar la plantilla de vista de un único producto para que mostrara las variaciones como opciones con sus precios correspondientes y cambiar el núcleo, concretamente los ficheros:
  • wp-e-commerce.js:  para que comprobara los campos vacíos (sé que podría crear un plugin de validaciones para campos asociados a custom fields plugin pero así es lo más rápido) ,
  • ajax.functions.php:  de forma que aceptara los campos de las variaciones seleccionadas y que se crearon en la plantilla modificada de un único producto, así los añadiría al pedido junto con el resto de la información y su precio correspondiente
Además de estos cambios tuve que crear de cero una pasarela de pago para Caja Rural y configurar PayPal.
El diseño de la web de Acta notarial corre a cargo de Joan Carles Muñoz.
Si queréis realizar un acta notarial online, pasaros por la web: Acta Notarial online
footer
jbelon © | sitemap.xml