Creación de una tienda o catálogo con Joomla

Hoy en día tenemos millones de opciones a la hora de crear una tienda, hoy estudiaremos el caso de utilizar Joomla y una solución a medida como es “VirtueMart” o “Tienda”.

Desde los primeros arbores del gestor de contenidos Joomla, cuando era Mambo, todo era un poco confuso, cada uno tenía que escribir muchos módulos y extensiones para tener un soporte decente multilenguaje y con e-commerce, pero actualmente toda esa confusión se ha disipado, hemos vuelto a poder dedicarnos a disfrutar del montaje de una tienda en unos cuantos clicks y ,ajustando un par de parámetros, solucionando pequeños bugs, desarrollamos un portal, catálogo y cesta de la compra con pasarela de banco incluída de una manera profesional.

 
A petición de 7p he eliminado el vídeo porque el cliente no deseaba comprometer su información.
Substituyo el vídeo de la presentación de la web y las modificaciones que hice por un par de vídeos que muestran la tecnología usada en este encargo.

Cómo usar VirtueMart con Joomla:

Tutorial:

El encargo en este caso tenía que ver con texto a formatear, algún algoritmo que escribir sencillo…Lo más importante y lo que más prisa le corría al cliente era el formato del carro de la compra, algunos botones, textos, estilos css, etc. y sobre todo que funcionaran los impuestos correctamente, que en España se cobrara el IVA para todas las provincias menos para Ceuta, Melilla, etc. Además la tienda tenía el bug de virtuemart de paypal, todo corregido en apenas unos días.También se hicieron algunas optimizaciones del código y bugs.Por ejemplo en la parte de productos, antes de añadirlos a la cesta el cliente pidió que cuando un producto tuviera hijos que no comprobara el stock hasta seleccionar uno de ellos y si no tenía hijos sí.

 

Programación rápida y avanzada con SilverStripe

SilverStripe es un gestor de contenidos (o CMS: Content Managed System) avanzado de código abierto, especialmente diseñado para que los diseñadores puedan trabajar en colaboración directa con los programadores funcionando independientemente el uno del otro pero relacionados por mecanismos automáticos simplificados que pueden extenderse ilimitadamente.
Podemos probar una demo del producto aquí y descargarlo aquí.

Está escrito en lenguaje PHP y es compatible con servidores IIS, Apache, etc.

A mi modo de ver las cosas me resulta muy parecido a Django, ya que hace uso del patrón de ingeniería del software: MVC (modelo-vista-controlador)

y los elementos de la base de datos y de la administración se generan automáticamente a partir del código, de hecho existe un script que lee las clases que hemos escrito en búsqueda de la variable de base de datos donde se especifican los campos y sus tipos, de forma que actualiza la estructura de aquella para que se puedan realizar altas/bajas/modificaciones con sólo añadir una línea en el código de la parte de administración de una sección del contenido de una página, después se crea una plantilla y se utilizan dichos campos con sólo llamar a la variable con el nombre del campo especificado.

Para conocer los entresijos de la programación con SilverStripe, los creadores han dispuesto un subdominio de ayuda con tutoriales que van desde las tareas de código más simples hasta las más avanzadas, por ejemplo, en mi caso he utilizado este manual para crear una homepage distinta a la que trae por defecto y ha funcionado a la primera…una gozada,podemos crear todos los tipos de páginas que queramos con sus secciones, por ejemplo una sección de productos sería una página donde sus elementos de base de datos son un conjunto…lo que se llama un data object (que hereda de sitetree) generando un data collation, aquí en la imagen vemos una sección de noticias con artículos donde se define una clase contenedora de artículos a la que se le permite tener “hijos”, otra clase para los artículos y se relacionan entre sí

Como características curiosas, trae un gestor de comentarios para cada página y un generador de RSS…, pero lo más curioso es que el CMS se divide en 6 partes bien diferenciadas o directorios principales:

  1. en assets se guardan los ficheros subidos,
  2. en cms se encuentra el backend o administrador de contenidos,
  3. en mysite se colocarían nuestras clases, código PHP y JavaScript
  4. en sapphire podemos encontrar el frontend o cliente
  5. en themes se encuentran las plantillas XHTML+CSS, la caché ,etc.
  6. en el directorio principal, cualquiera de los otros directorios que no sea uno de los anteriores ,se trata de un plugin, módulo o extensión del cms que especifica las acciones tanto para el frontend como para el backend

Código

Este trozo de código especifica la clase para los artículos de una sección de noticias:

class ArticlePage extends Page {
static $db = array(
'Date' => 'Date',
'Author' => 'Text'
);
static $has_one = array(
);
 
function getCMSFields() {
$fields = parent::getCMSFields();
 
$fields->addFieldToTab('Root.Content.Main', new DateField('Date'), 'Content');
$fields->addFieldToTab('Root.Content.Main', new TextField('Author'), 'Content');
 
return $fields;
 
}
}
 
class ArticlePage_Controller extends Page_Controller {
 
}

El modelo ArticlePage hereda de Page y tiene un controlador ,pero además necesita un decorador, en el caso en que no se especifique se utiliza el asociado al padre Page. (Ver listado de tipos de datos)

Para la gestión de los campos en la administración se utiliza la función getCMSFields() heredada de Page y se le añaden nuevos campos, aparecería algo así como resultado:

Veamos un ejemplo sencillo de código fuente de GoogleSiteMaps incluído en la versión 2.4.1 que es probado aparece el siguiente trozo de código:

 
class GoogleSitemapDecorator extends SiteTreeDecorator {
 
function extraStatics() {
return array(
'db' => array(
"Priority" => "Varchar(5)",
)
);
}
//...

esta clase se usa para “decorar” ,es decir, para especificar al controlador con qué vista va a pintar los datos del modelo de datos tanto para el front como para el backend, además se está especificando un array para la generación de los campos de la base de datos desde el exterior…

Para tener una introducción más completa, aquí hay un vídeo que os puede interesar:

SilverStripe 2.4 Site Editing Overview from SilverStripe on Vimeo.

Adaptación de plantilla de Joomla: módulos, extensiones, plugins, php, etc

Para este proyecto las tareas realizadas en cuanto a programación fueron las siguientes
– Plantilla completamente adaptada ( XHTML+CSS+JSCRIPT+PHP de Joomla ) con 32 posiciones o huecos distintas para colocar información (módulos, plugins,texto html, etc.), un carrusel con mootools , menú dinámico, etc.
– phpbb (motor de foros) embebido con joomla
– blog para cada usuario con muchas opciones gracias a LyftenBloggie
– !Joomlacomment para añadir comentarios a los artículos de las categorías de cada sección
– Módulo de encuestas avanzado
– Extensión AcyMailing (correos masivos)
– Módulo-Editor WYSIWYG JCE con plugins avanzados
– Extensión jPFChat para comunicación de usuarios desde la web
– Árboles de ficheros estructurados con distintos permisos por usuarios y grupos de usuarios con Mosets Tree
– Administrador de archivos avanzado
– Editor de metaetiquetas para posicionamiento
– Generador de mapa del sitio en html y xml para buscadores
– Secciones privadas para usuarios registrados (intranet)
– Editor de documentos colaborativo
– Galerías de imágenes animadas con Mootools
– Uso de tecnología de Google Maps para incrustar información de posicionamiento dentro de artículos
– Conexión con redes sociales

PHP : MySQL o NoSQL – Digg, Facebook y Twitter hablan

Vía vivalinux, Leyendo por la red encuentro un enlace a la notica de que Twitter se cambiaba de MySQL a una arquitectura de NoSQL basada en el proyecto de Cassandra: un sistema de administración de base de datos distribuído diseñado para manejar enormes cantidades de información replicadas en varios servidores comunes y corrientes (parecido a lo que hace Tuenti con sus granjas de caché). Usa el modelo de datos del BigTable de Google ejecutado sobre una infraestructura similar a la de Dynamo usada por los servicios web de Amazon (como S3).

Pero lo más importante es que, como una solución NoSQL, Cassandra rompe con la larga historia y teoría de las bases de datos relacionales por otro modelo con un almacenamiento híbrido del tipo “clave ⇒ valor”, totalmente descentralizado y mucho más fácil de escalar que MySQL.

Por ese motivo es que ahora Digg quiere alejarse tanto como puedan de LAMP, comenzando por cambiar MySQL por Cassandra:

“Nuestra principal motivación para alejarnos de MySQL es la creciente dificultad de construir una aplicación de alto rendimiento con escrituras intensivas en un conjunto de datos que crece rápidamente, sin un final a la vista.

A medida que nuestro sistema crece, es importante abarcar múltiples data centers para redundancia y performance de la red, para agregar capacidad o reemplazar sin downtimes nodos que hayan fallado. Planeamos continuar usando hardware común y continuar asumiendo que fallará regularmente. Todo esto es crecientemente difícil con MySQL”.

Cassandra fué desarrollado por Facebook, pero ahora es de código abierto amparado bajo la licencia de Apache. Digg también prometió comenzar a contribuir sus propias mejoras y modificaciones.

En el procesamiento para cloud compiting hace falta una base de datos realmente rápida…

Si os preguntáis por qué se sigue utilizando MySQL o NoSQL en lugar Oracle que tiene un mayor rendimiento: leer más quizás el tema de las licencias responda a vuestra pregunta…

O también puede responderos a esta pregunta el que la facilidad tiene que ver mucho con HTML5 y su WebSimpleDB API

NoSQL se basa en unos patrones, además del de “tipo=>valor”, aquí teneis un tutorial…veamos un ejemplo sencillo usando la librería más simple que he encontrado en PHP: OneFile -> OneSQL:

 
// SELECT * FROM $table WHERE $property $comparator
//                    $value        AND $prop2 $comp2 $val2
function nosql_selectAllFromWhereAnd($table,$property,$comparator,
$value  ,$prop2,$comp2,$val2)
 
// UPDATE $table SET $prop=$new
//                    WHERE $searchfor=$value         AND $also=$val
function nosql_updateSetWhereEqualsAnd($table,$prop,$new,
$searchfor,$value  ,$also,$val)
 
// DELETE FROM '$table' WHERE '$property'
//                  $comparator '$value' AND  '$prop' $comp '$val'
function nosql_deleteFromWhereAnd($table,$property,
$comparator,$value,$prop,$comp,$val)

Aplicación Web para restaurante con guarderia – Platos y Noticias

En el año 2007 se realizó la programación de esta web se hizo con el prototipo 0.1.2.7 de zenphp, las plantillas XHTML + CSS son validadas por la herramienta de la W3C.
Mediante la ayuda de la administración interna es posible editar el contenido de la base de datos que se muestra en el cliente.
Se realizan validaciones para formularios en AJAX, en cuanto a la administración, además se permite la creación rápida de categorías para platos, y otros parámetros avanzados, etc.

Las plantillas XHTML + CSS se crearon por Agencia Q4 en el 2007.



Ver en Youtube

Aplicación web de reservas, ofertas y otros para apartamentos

Uno de los prototipos del framework zen php más avanzados de los años 2007 a 2008 fué desarrollado mientras trabajaba en Agencia Q4, dónde se realizó el diseño de la web (la plantilla XHTML+CSS) mostrada en el vídeo.

Técnicamente: en esta aplicación web se rellena el contenido de las plantillas usando una estructura de clases embebida en una clase principal, es decir, toda la aplicación es un único objeto con referencias a cada parte.

Las plantillas fueron mejoradas usando JQuery para las operaciones de administración con AJAX y validaciones de formularios, animaciones, etc.

Se utilizan las sesiones de usuario para mantener los datos, al enviarse un formulario de reserva se avisa al encargado de los apartamentos y puede ver dicha información de reserva a través de un enlace en el e-mail enviado automáticamente que va directamente a la administración permitiendo realizar las reservas oportunas en el apartamento correspondiente a la reserva.

Página 1 de 212
footer
jbelon © | sitemap.xml