Desarrollo de web comercial de entrenadores y dietistas con Drupal

Anuncio
Desarrollo de web comercial de entrenadores y
dietistas con Drupal
DIRECTOR: Carlos Molina
FECHA: 05 / 2012
1
Prefacio
Este proyecto nace con la idea de llenar un espacio hasta ahora bastante amplio y
poco poblado como es el de los entrenadores personales, aplicando tanto las
acciones clásicas de entrenamiento directo con el cliente, como utilizando una vía tan
efectiva como resulta internet.
Se ha visto una clara oportunidad de negocio, dada la gran demanda de entrenadores
personales en el sector, a un precio totalmente competitivo.
La idea nace desde la propia experiencia personal de intentar compartir con otros
compañeros mis logros y fracasos en el mundo del deporte, en concreto del fitness, y
también de la alimentación puesto que ambas cosas están íntimamente ligadas.
Dada esta situación y teniendo en cuenta mi experiencia en el desarrollo de páginas
web dinámicas decidí aportar mis conocimientos creando un espacio virtual donde
otros usuarios como yo pudieran expresarse, a modo de red social, sobre cualquier
aspecto relacionado con sus experiencias personales tanto en el mundo del deporte
como con las dietas que ha hecho.
Aún queriendo ir unos pasos más allá y animado por un compañero entrenador y su
novia nutricionista tuvimos la idea de aplicar un servicio de entrenamiento y dietética
por internet, esperando llegar así a un número mayor de clientes potenciales.
Entonces pensé en una manera de poder vender este tipo de servicios, y desarrollé la
idea de que cualquiera de ellas, tanto la nutricionista como el entrenador, pudieran
aplicar sus conocimientos a los clientes de la web, por un precio ostensiblemente
menor que usando ese tipo de productos de forma presencial.
La idea de vender suplementos para deportistas en la web, mediante una tienda
online, fue un hecho que vino dado por la necesidad de ofrecer estos productos a
clientes que lo hacen en su tienda habitual, en su ciudad. Los márgenes de precios en
internet se estrechan mucho debido a la gran cantidad de buscadores y
comparadores, pero aún así queda un margen de ganancia comprando los productos
en grandes cantidades a precio de mayorista.
Este proyecto está pensado para que los usuarios puedan compartir sus propias
experiencias, sus logros en el mundo del deporte, independientemente de la
especialidad. También un espacio donde poder hacer, por qué no?, nuevas amistades.
Un espacio de consulta al que acudir ante cualquier duda, puesto que allí se
encuentran nuestros expertos, dispuestos a resolverla.
Índice
1. Introducción .............................................................................................................................. 1
1.1. C MS .................................................................................................................................. 1
1.1.1 Definición .................................................................................................................... 1
1.1.2 Historia ....................................................................................................................... 1
1.1.3 Funcionalidades ........................................................................................................... 2
1.1.4 Tipos de C MS .............................................................................................................. 2
1.1.5 C MS más populares ..................................................................................................... 3
1.2. Drupal .............................................................................................................................. 4
1.2.1 Qué es Drupal ............................................................................................................. 4
1.2.3 Módulos ......................................................................................................................6
1.2.4 Hooks ........................................................................................................................ 6
1.2.5 Temas ....................................................................................................................... 7
1.2.6 Nodos ....................................................................................................................... 7
1.2.7 Bloques ..................................................................................................................... 8
1.2.8 Requerimientos e instalación de Drupal (versión 6) ......................................................... 9
1.3. Deporte y nutrición, el papel del entrenador personal ............................................................11
........12
2. Objetivos del proyecto ...............................................................................................................17
3. Especificaciones del proyecto ......................................................................................................19
3.1. Los usuarios ......................................................................................................................19
3.1.1 Tipos de usuarios .........................................................................................................19
3.1.2 Mecanismo de registro ..................................................................................................20
3.2. Especificaciones de página ....................................................................................................21
3.2.1 Portada (usuario anónimo) .............................................................................................21
3.2.2 Página de registro .........................................................................................................21
3.2.3 Noticias destacadas .......................................................................................................21
3.2.4 Mi espacio ...................................................................................................................22
3.2.5 Mi dieta .......................................................................................................................22
3.2.6 Mi rutina .....................................................................................................................22
3.2.7 Mi perfil ......................................................................................................................23
3.2.8 Mis amigos ..................................................................................................................23
3.2.9 Perfil de un usuario .......................................................................................................23
3.2.10 Buscador de amigos ....................................................................................................24
3.2.11 Nutricionista ..............................................................................................................24
3.2.12 Entrenador ................................................................................................................24
3.2.13 Productos y servicios ...................................................................................................25
3.2.14 C arro de la compra .....................................................................................................25
3.2.15 Nutricionista, servicio contractual en el catálogo ..............................................................25
3.2.16 Nutricionista, listado de solicitantes ...............................................................................26
3.2.17 Nutricionista, listado/búsqueda/edición/borrado/creación de comidas .................................26
3.2.18 Nutricionista, listado de pacientes .................................................................................26
..............................27
3.2.20 Entrenador, servicio contractual en el catálogo ................................................................27
3.2.21 Entrenador, listado de solicitantes ..................................................................................27
3.2.22 Entrenador, listado/búsqueda/edición/borrado/creación de ejercicios ..................................28
3.2.23 Entrenador, listado de discípulos ....................................................................................28
3.2.24 Entrenador, creación de una rutina para un discípulo
3.3. Sistema de pago ..................................................................................................................29
3.4. Tema propio ........................................................................................................................29
4. Familiarización .............................................................................................................................31
4.1. Instalación de Drupal ............................................................................................................31
4.2. Módulos probados .................................................................................................................32
4.3. Otros ..................................................................................................................................33
4.4. Instalación del módulo "i18n" .................................................................................................33
4.5. Diseño de la portada ...........................................................................................................34
5. Diseño ........................................................................................................................................37
5.1. Roles ..................................................................................................................................37
5.2. Explicación de los módulos de terceros utilizados y configuración de los mismos ............................38
5.2.1 Módulo C ontact..............................................................................................................38
5.2.2 Módulo Internationalization..............................................................................................39
5.2.3 Módulo "php filter"..........................................................................................................39
5.2.4 Módulo "Menu attributes".................................................................................................40
5.2.5 Módulo "user relationships"..............................................................................................40
5.2.6 Módulo "profile"..............................................................................................................41
5.2.7 Módulo "Facebook-style Statuses"...................................................................................42
5.2.8 Módulo "Views"............................................................................................................43
5.2.9 Módulo "Flag"..............................................................................................................44
5.2.10 Módulo "Modal Frame API"...........................................................................................44
5.2.11 Módulo "Ubercart"......................................................................................................45
5.2.12 Módulo "Webform"......................................................................................................46
5.3. Explicación de los módulos propios utilizados y configuración de los mismos ................................46
5.3.1 Módulo buscador de amigos ...........................................................................................47
5.3.2 Módulo conversación entre dos usuarios ...........................................................................4 9
6. Implementación ..........................................................................................................................55
6.1. Lenguajes de programación ...................................................................................................55
6.2. Programas utilizados ............................................................................................................55
6.3. Directrices para crear un módulo ...........................................................................................56
6.4. Implementación de los módulos propios ..................................................................................58
6.4.1 Módulo buscador de amigos ............................................................................................58
6.4.2 Módulo conversación entre dos usuarios ............................................................................60
...61
6.5. Directrices para crear un tema ...............................................................................................65
6.6. Implementación del tema propio (verdeAC ) ..............................................................................6 6
.........................66
67
7. Evaluación (Ejemplo de las características de la web dependiendo del rol de usuario) ......... ...................69
7.1. Ejemplo de usuario, que compra un servicio de nutricionista y/o entrenador .................................69
7.2. Ejemplo de entrenador ...........................................................................................................71
7.3. Ejemplo de nutricionista .........................................................................................................74
8. Legislación ..................................................................................................................................77
8.1. C reando una empresa ...........................................................................................................78
8.1.1 Registrar un dominio ......................................................................................................80
8.1.2 Alojar el servidor ............................................................................................................81
8.2. Derechos de autor .................................................................................................................81
9. C ostes .......................................................................................................................................83
9.1. C oste del almacenamiento web ..............................................................................................83
9.2. C oste del local de almacenaje de productos ............................................................................. 84
9.3. C oste del transporte .............................................................................................................84
9.4. C oste de los empleados (nutricionistas y entrenadores) .............................................................85
9
..............................86
9.6. C álculo de costes .................................................................................................................87
10. C onclusiones ............................................................................................................................89
11. Planning temporal de las tareas realizadas ...................................................................................93
12. Bibliografía ..............................................................................................................................95
1. Introducción
1.1. CMS
1.1.1 Definición
Un sistema de gestión de contenidos (en inglés Content Management System,
abreviado CMS) es un programa que permite crear una estructura de soporte
(framework) para la creación y administración de contenidos, principalmente en
páginas web, por parte de los administradores, editores, participantes y demás roles.
Consiste en una interfaz que controla una o varias bases de datos donde se aloja el
contenido del sitio web. El sistema permite manejar de manera independiente el
contenido y el diseño. Así, es posible manejar el contenido y darle en cualquier
momento un diseño distinto al sitio web sin tener que darle formato al contenido de
nuevo, además de permitir la fácil y controlada publicación en el sitio a varios editores.
Un ejemplo clásico es el de editores que cargan el contenido al sistema y otro de nivel
superior (moderador o administrador) que permite que estos contenidos sean visibles
a todo el público (los aprueba).
Es una aplicación informática usada para crear, editar, gestionar y publicar contenido
digital multimedia en diversos formatos. El gestor de contenidos genera páginas web
dinámicas interactuando con el servidor web para generar la página web bajo petición
del usuario, con el formato predefinido y el contenido extraído de la base de datos del
servidor.
Esto permite gestionar, bajo un formato estandarizado, la información del servidor,
reduciendo el tamaño de las páginas para descarga y reduciendo el coste de gestión
del portal con respecto a un sitio web estático, en el que cada cambio de diseño debe
ser realizado en todas las páginas web, de la misma forma que cada vez que se
agrega contenido tiene que maquetarse una nueva página HTML y subirla al servidor
web.
1.1.2 Historia
Los primeros sistemas de administración de contenidos fueron desarrollados por
organizaciones que publicaban una gran cantidad de contenido en Internet, y
necesitaban de continuas actualizaciones; como revistas en línea, periódicos y
publicaciones corporativas.
1
En 1995, el sitio de noticias tecnológicas CNET sacó su sistema de administración de
documentos y publicación y creó una compañía llamada Vignette, pionero de los
sistemas de administración de contenido comerciales.
La evolución de Internet hacia portales con más contenido y la alta participación de los
usuarios directamente, a través de blogs y redes sociales, ha convertido a los
gestores de contenidos en una herramienta esencial en Internet, tanto para empresas
e instituciones como para personas.
Los wikis y los sistemas groupware también son considerados CMS.
Hoy en día existen sistemas desarrollados en software libre y no libre. En ambos
casos es necesaria una implantación para adaptar el gestor de contenidos al esquema
gráfico y funcionalidades deseadas. Para ciertos gestores existen muchas plantillas
disponibles que permite una sencilla implantació n de la parte estética por parte de un
usuario sin conocimientos de diseño. El paradigma de este caso es WordPress, gestor
sobre el que hay una gran comunidad de desarrolladores de extensiones (llamados
plugins) y plantilla (llamados temas).
1.1.3 Funcionalidades
Un sistema de administración de contenidos siempre funciona en el servidor web en el
que esté alojado el portal. El acceso al gestor se realiza generalmente a través del
navegador web, y se puede requerir el uso de FTP para subir contenido.
Cuando un usuario accede a una URL, se ejecuta en el servidor esa llamada, se
selecciona el esquema gráfico y se introducen los datos que correspondan de la base
de datos. La página se genera dinámicamente para ese usuario, el código HTML final
se genera en esa llamada. Normalmente se predefine en el gestor varios formatos de
presentación de contenido para darle la flexibilidad a la hora de crear nuevos
apartados e informaciones.
1.1.4 Tipos de CMS
Los gestores de contenido se pueden clasificar según diferentes criterios:
a) Por sus características:
Según el lenguaje de programación empleado, como por ejemplo Active
Server Pages,Java,PHP,ASP.NET,Ruby On Rails,Python
2
Según la licencia:Código abierto o Software propietario
b) Por su uso y funcionalidad
Blogs; pensados para páginas personales.
Foros; pensados para compartir opiniones.
Wikis; pensados para el desarrollo colaborativo.
Enseñanza; plataforma para contenidos de enseñanza on-line.
Comercio electrónico; plataforma de gestión de usuarios, catálogo,
compras y pagos.
Publicaciones digitales.
Difusión de contenido multimedia.
Propósito general.
1.1.5 CMS más populares
Los CMS mas populares que existen en el mercado aparte de Drupal son:
Vignette: http://www.vignette.com/es
Es un sistema CMS comercial, que dicho sea de paso, debe ser bastante caro. Es
importante comentarlo por ser el primer sistema CMS comercial que apareció en el
mercado.
Mambo: http://www.mamboserver.com/
Un sistema CMS libre y gratuito, creado en PHP. Puedes leer el artículo sobre qué es
Mambo publicado en DesarrolloWeb.com.
Joomla!: http://www.joomla.org/
Es un CMS de código libre, también creado en PHP. Surge como una mejora o
ampliación de Mambo.
Wordpress: http://wordpress.org/
El CMS para la creación de blogs por excelencia. El más utilizado y el mejor valorado,
también creado en PHP y gratuito.
3
OsCommerce: http://www.oscommerce.com/
Un sistema de carrito de compras para hacer comercio electrónico en Internet,
generalmente ventas directas a compradores de artículos físicos o digitales. Está
escrito en lenguaje PHP y funciona usando una base de datos MySQL. Tiene una
licencia GPL.
1.2. Drupal
1.2.1 Qué es Drupal
Drupal es un sistema de gestión de contenido modular multipropósito y muy
configurable que permite publicar artículos, imágenes, u otros archivos y servicios
añadidos como foros, encuestas, votaciones, blogs y administración de usuarios y
permisos. Drupal es un sistema dinámico: en lugar de almacenar sus contenidos en
archivos estáticos en el sistema de ficheros del servidor de forma fija, el contenido
textual de las páginas y otras configuraciones son almacenados en una base de
datosy se editan utilizando un entorno Web.
Es un programa libre, con licencia GNU/GPL, escrito en PHP, desarrollado y mantenido
por una activa comunidad de usuarios. Destaca por la calidad de su código y de las
páginas generadas, el respeto de los estándares de la web, y un énfasis especial en la
usabilidad y consistencia de todo el sistema.
El diseño de Drupal es especialmente idóneo para construir y gestionar comunidades
en Internet. No obstante, su flexibilidad y adaptabilidad, así como la gran cantidad de
módulos adicionales disponibles, hace que sea adecuado para realizar muchos tipos
diferentes de sitio web.
En la actualidad Drupal es uno de los CMS más potentes, y es reconocido por la
calidad de su código, la seguridad que ofrece, su fácil instalación y configuración, por la
cantidad de funcionalidades disponibles para él, por la cantidad de temas visuales, la
gran calidad de documentación y la amplia comunidad que le da soporte.
Prueba de su reconocimiento es el uso que hacen de él conocidas instituciones o
compañías como: MTV, el Gobierno de Bégica, Discovery Magazine, Warner Brothers
www.drupalsites.net) se listan algunos de los
muchos sitios web realizados con Drupal:
4
1.2.2 Ventajas/desventajas de Drupal respecto al resto de CMS
Las ventajas son las siguientes:
Cualquier diseño es posible con Drupal. Muchas veces la gente dice que un CMS
preconfigurado no tiene un diseño flexible y que puede limitar la creatividad de
los diseñadores. Drupal te permite hacer cualquier cosa.
El concepto de usuario es intrínseco a Drupal. Esto quiere decir que si alguien se
registra se registra para todas las aplicaciones que metas en Drupal. Desde
foros, blogs, encuestas, UGCs, tienda... este control centralizado del usuario es
clave para los proyectos de hoy en día.
Multi-idioma. Es normal tener un site en dos idiomas o más. Esta funcionalidad
es natural en Drupal y activar es un click.
Abierto a PHP. Drupal por defecto te permite que en cualquier tipo de contenido
puedas agregar tu PHP a medida. Este te permite retocar y personalizar la
funcionalidad del back o del front.
5
Soporte de comunidad muy amplio. Quizás la principal ventaja de Drupal frente
a Joomla es que Drupal tiene una comunidad muy buena. Drupal.org es el punto
de encuentro. Cualquier duda está documentada y explicada.
Multimedia. Vídeo, audio... el soporte natural de Drupal está muy bien para este
tipo de aplicaciones, pero si lo que te encuentras por defecto no te satisface,
añade un módulo sin problemas.
Rápido y bajo consumo de servidor. El consumo de recursos del servidor que
hace Drupal es muy bajo. Cualquier servidor (por barato que sea) podrá con
Drupal y el servicio (con la cache activada) es muy rápido.
Control de administración. El control para los administradores es total. Desde
permisos por usuario y módulo (es decir, no veas esto, no escribas aquí pero si
allá, etc...) es muy fácil de manejar y el panel de control es muy claro.
Respecto a tareas administrativas del site (informes de registros, informes de
formularios, etc...) están por defecto disponibles y son muy fáciles de exportar
como excel.
A continuación la única desventaja que he encontrado:
Es complejo de manejar para usuarios que no saben programar ni
conocimientos avanzados de la web. Frente a otros CMS como Wordpress,
orientados a usuarios con pocos conocimientos.
1.2.3 Módulos
El módulo (module) es un software que extiende las funcio nalidades y/o
características de Drupal. Viene con módulos precargados según la versión, a los
cuales se les puede añadir los que se necesite según la funcionalidad que tenga el sitio.
1.2.4 Hooks
Son un tipo de funciones PHP que están implementadas en lo s módulos, y permiten
que éstos puedan interactuar con el Drupal core.
Cada hook tiene definidos unos parámetros y un resultado específicos.
Para extender Drupal, un módulo simplemente necesita un hook. Cuando Drupal
permite la ejecución de módulos, determina los hooks que hay en cada uno y lo
ejecuta.
6
1.2.5 Temas (o plantillas)
La Plantilla (theme) controlará cómo se visualizará el sitio, el diseño y los colores.
Consiste en uno o más archivos en PHP que definen la salida HTML, con uno o más
archivos en CSS definiendo las fuentes, colores y otros estilos.
1.2.6 Nodos
El Nodo (node) es un término genérico para cada pieza de contenido del sitio. Algunos
ejemplos de nodos pueden ser: páginas en libros, temas de discusión en foros,
entradas en blogs, nuevos artículos, etc. Cada nodo será un tipo de contenido que
tendrá un ID, un título, una fecha de creación, un autor, un cuerpo o body y otras
propiedades, también según qué otros módulos se encuentre usando agregará más
propiedades a cada nodo.
7
1.2.7 Bloques
Drupal se encuentra dividido en Regiones (regions) que pueden incluír la cabecera, el
pie, las barras laterales, la sección principal de contenido. Los Bloques (blocks) es la
información que se visualiza en las diferentes regiones, pudiendo tomar la forma de
menús (como el menú de navegación) o visualizaciones de módulos (como los
contenidos más vistos del foro) o información estática o dinámica que fue creada por
un usuario (como eventos). Existen tres menús estandar en Drupal: Enlaces
primarios, Enlaces secundarios y Menú de navegación. Los primarios y secundarios
son construídos a criterio de los administradores y mostrados automáticamente.
También se pueden crear menús personalizados mediante la creación de bloques.
8
1.2.8 Requerimientos e instalación de Drupal (versión 6)
Para instalar y poner en funcionamiento Drupal son necesarios los siguientes
requerimientos:
Espacio de disco: 15 Megabytes
Servidor web: Apache 1.3, Apache 2.x o Microsoft IIS
Servidor de Base de Datos: MySQL 4.1 o mayor, PostgreSQL 7.1
PHP: 4.4.0 o mayor (5.2 recomendado)
El primer paso es instalar el servidor web, en mi caso, siendo una distribución linux
basada en debian, simplemente he utilizado el gestor de aplicaciones para instalar el
el módulo PHP en los archivos de configuración,
9
aunque suele venir activado por defecto.
Seguidamente es necesario instalar el servidor de base de datos, que en mi caso se
trata de MYSQL. Para instalarlo, he seguido un proceso parecido al servidor web, es
decir, mediante el gestor de software, se ha instalado, y cumplimentado unas
preguntas acerca de la configuración, tales como usarios administradores y
contraseñas.
Para instalar Drupal, es necesario bajarse el archivo comprimido de la página oficial
www.drupal.org, y descomprimirlo en el directorio donde apache sirve las páginas
web. Seguidamente podemos abrir el navegador y ejecutar el script de instalación que
trae drupal desde él: http://localhost/drupal6/install.php. Cuando finalice el proceso,
Drupal ya estará instalado.
Una vez instalado, la estructura de la carpeta drupal6 es la siguiente:
Carpeta include: Contiene las librerías que utiliza Drupal.
Carpeta misc: Contiene código JavaScript y iconos disponibles para la
instalación de Drupal
Carpeta modules: Contiene los módulos del núcleo. Los usuarios que
Carpeta scripts: Contiene archivos ejecutables por el sistema operativo. Un
ejemplo
una llamada del daemon cron de linux.
Carpeta themes: Contiene diversos temas o plantillas, cada uno tiene su propia
subcarpeta.
Carpeta sites: Contiene los temas y módulos del usuario.
Archivo cron.php: Utilizado para realizar tareas periódicas como por ejemplo
comprobar las actualizaciones disponibles de cada uno de los módulos.
Archivo index.php: Es la página inicial de Drupal
Archivo install.php: Es la página de instalación de Drupal.
Archivo update.php: Actualiza el esquema de la base de datos de Drupal.
Archivo xmlrpc.php: Recibe solicitudes XML_RPC
Archivo robots.txt: Es la implementación por defecto del robot estandard.
10
1.3. Deporte y nutrición, el papel del entrenador personal
La figura del entrenador personal nació en USA en la década de los 50, posiblemente
relacionado con el poder económico y la fama de algunas personas de este país.
Estaba dirigido exclusivamente a personajes famosos. Los medios de comunicación y
el cambio de enfermedades epidemiológicas ayudaron a fomentarlo.
Hoy en día, el acceso a estos servicios sigue siendo, en muchos casos, inaccesible por
el coste que supone, y por otra parte, es a menudo substituido por otros servicios no
personalizados que ofrecen los propios técnicos de fitness exclusivamente en locales
deportivos.
Pero qué entendemos por entrenador personal?
Un entrenador personal es un profesional preparado en diversos campos de la salud,
nutrición y ejercicio teniendo un conocimiento elevado en el diseño específico de
programas de entrenamiento.
Se dedica al entrenamiento individualizado de personas que necesitan mejorar su
condición física general o específica, para conseguir objetivos que van desde la buena
salud hasta el alto rendimiento. El entrenamiento personal se adapta a cualquier
persona independientemente de su edad y de sus habilidades y nos permite un mejor
aprovechamiento del tiempo que nos hace falta para alcanzar nuestros objetivos.
Porqué necesitamos un entrenador personal?
Después de un examen de conciencia, la mayoría de personas no se dan cuenta,
simplemente, que no tienen la disciplina personal, el tiempo y/o la energía para
mantener su salud y su estado físico en una forma óptima. El reconocimiento de no
ser capaz de hacerlo por nosotros mismos puede ser humillante. Cada vez, la vida
nos ocupa más tiempo, estresándonos y necesitando cada vez más un entrenador
personal para ayudar a mantenernos enfocados y motivados.
Un entrenador personal puede ayudar a mantener la disciplina que necesita,
ofreciéndole asesoramiento, educando y concentrar a la persona en sus metas a
largo plazo, evitando tentaciones. No es alguien que simplemente dice el ejercicio que
toca, sino que produce una motivación hasta que finalmente la persona acaba
haciéndolo por sí misma.
Las ventajas son muchas:
Se consiguen los objetivos de manera más rápida y sin tantos esfuerzos
11
El entrenador personal evita situaciones de riesgo que pueden provocar una
lesión.
Trata las situaciones muy específicas como por ejemplo: personas con
enfermedades cardiovasculares, osteoporosis, artritis, artrosis, diabetes, entre
otras.
Adecuado para personas que quieren perder peso o tonificar su cuerpo,
modificando sus hábitos cotidianos o que se han estancado en sus progresos
deportivos
Fundamental para aquellas personas que hayan sufrido alguna lesión importante
y necesiten un entrenamiento específico o rehabilitador.
Un entrenador personal te anima, ayuda y motiva, disfrutando mucho más de
la actividad.
Cuáles son los objetivos?
Mejora de la silueta corporal a través del fortalecimiento muscular y la pérdida
de grasa
Endurecimiento de la musculatura post-operatoria. El primer paso ha de ser el
fisioterapeuta.
Mejora de la condición física general. Aumento de la fuerza y sus derivadas
(potencia, resistencia, etc.)
Mejora de los ejercicios en la sala de fitness. Análisis mecánico, respetando la
estructura corporal y obteniendo el máximo beneficio.
Priorización de zonas musculares específicas difíciles de mejorar (brazos,
piernas, glúteos, pectoral, etc.)
Realización de ejercicios saludables para mantener unas articulaciones sanas a
través de una musculatura bien activada.
1.4. Webs similares
A continuación se hace una pequeña valoración de otras webs con contenidos y/o
objetivos similares a
-
Google y se han seleccionado los primeros resultados que tienen relación o se
asemejan bastante a la nuestra. Se han seleccionado aquellas páginas que gozan de
12
más popularidad y han obtenido un m
Entrenadores personales (http://www.entrenadorespersonales.com/ )
Este sitio es bastante popular en España, y ha aparecido en numerosos espacios de
publicidad, tanto TV como en la prensa. Su objetivo es muy similar al de nuestra web:
Proporcionan un servicio de entrenamientos y dietas online. Además ofrecen el
servicio de entrenador personal, dependiendo de la provincia:
Los entrenadores personales (http://www.losentrenadorespersonales.com/ )
La función de esta página es la de poner en contacto profesionales del deporte con
clientes, a modo de tablón de anuncios. Dispone de múltiples disciplinas deportivas, y
su área de acción es el de España y toda América latina, a nivel de provincia:
13
Mi entrenador (http://www.mientrenador.es/ )
Proporcionan servicios de dietas y entrenamientos a nivel local, en la Comunidad de
Madrid. Es interesante observar su modo de operación puesto que al principio de la
fundación de la empresa ese será su ámbito de acción, es decir, el local o provincial.
No ofrecen servicios online, son presenciales por parte del
entrenador/nutricionista/masajista:
14
Trainido (http://trainido.com/)
Esta web, al igual que la primera, también es muy parecida a la nuestra. Ofrecen
servicios de entrenador personal online, con vídeos de demostración:
15
16
2. Objetivos del proyecto
Hoy en día es un hecho el que cada vez más gente utiliza internet para gran cantidad
de servicios que hace unos (pocos) años resultaban impensables.
Es un hecho reconocido el que el volumen de ventas de musica online supera ya al
tradicional de la tienda de música o grandes superficies.
Resulta atractiva una nueva forma de vender, sin necesidad de tener los costes de
alquiler de una tienda, medidas de seguridad, empleados, luz, etc. Y más en la
actualidad, inmersos en una profunda crisis con pocas expectativas de crecimiento, se
buscan negocios con el menor coste de inversión posible. Así pues, el desarrollo de
una tienda online resulta una forma de negocio más que válida.
Por otra parte, como consumidores, cada vez más, buscamos la comodidad, sin que
ello repercuta en una pérdida de calidad. Son innombrables los servicios que antes
suponían una pérdida de tiempo o dinero, y que ahora pueden realizarse a click de
ratón, des de casa. Ejemplos: pedir cita con la ITV, hacer la declaración de hacienda,
el mismo correo (electrónico por supuesto),...
El objetivo de este proyecto se centra en la creación de un sitio con las características
de una red social, enfocado al mundo del deporte y la alimentación sana, donde los
usuarios opcionalmente puedan tener acceso, mediante previo pago, a otros servicios
tales como nutricionista o entrenador. Además comprar productos dentro de un
catálogo.
El desarrollo del proyecto puede dividirse en las siguientes partes:
Módulos de la comunidad Drupal: Inicialmente se ha hecho un listado de módulos
necesarios para el desarrollo de cada una de las partes. Se han probado muchos, se
han desestimado unos cuantos y finalmente se han configurado y puesto a punto los
que han resultado válidos para los requisitos de la web. Cabe decir que Drupal dispone
de una gran comunidad de usuarios que desarrolla miles de módulos. El objetivo de
esta parte se centraba en la elección de los módulos definitivos.
Creación de módulos propios: Se pretende aprender cómo funcionan los módulos,
y el proceso de diseño de un módulo a medida, para que cumpla con la función
deseada en la página.
Creación de páginas y bloques propios: Drupal permite la creación de páginas y
bloques desde el mismo navegador, sin necesidad de editar ningún fichero. Se han
17
creado bloques específicos para mostrarse en ciertas regiones de la página,
dependiendo de la sección.
Creacion de un tema propio: Simplemente creando una carpeta nueva con el
nombre del tema y con los ficheros adecuados, tanto php,javascript,HTML o CSS
podemos darle un aspecto a la web totalmente diferente según sea su estilo y
contenido.
18
3. Especificaciones del proyecto
Este proyecto está enfocado a un espacio dedicado al mundo del deporte y nutrición,
incluyendo elementos de red social, y de una tienda online, ya sea para vender
servicios o productos físicos.
Hay diferentes tipos de usuarios, cada uno de los cuales, con sus permisos en la web,
podrán realizar diferentes tareas.
En algunos casos, será el usuario administrador quien otorgue roles de usuario a
usuarios concretos, otras será el propio sistema, ya sea al contratar un servicio,
comprar un producto o el simple hecho de autenticarse.
3.1. Los usuarios
Son las personas físicas que visitan la web a través de un navegador. No se deben
confundir con los roles de usuario, estos últimos se aplican de manera definitiva o
temporal sobre los usuarios. Cada rol de usuario da ciertos permisos a éste.
3.1.1 Tipos de usuarios
Hay 5 tipos de usuarios, dos de los cuáles los crea Drupal automáticamente durante la
instalación: usuarios anónimos y usuarios autenticados. El resto de usuarios son:
administrador, nutricionista y entrenador.
Los usuarios anónimos solamente podrán ver el contenido de la página de portada,
ormación
Los usuarios autenticados tienen acceso a casi toda la información de la web. Además
del acceso que tienen los usuarios anónimos, podrán buscar y agregar amigos a su
lista personal, escribir sus comentarios y estado en su espacio, y poder ir a la tienda
online, donde comprar productos o servicios de nutricionista/entrenador.
Los usuarios administradores tienen acceso total a la web, pueden modificar código,
instalar/desinstalar módulos, crear/borrar nodos. Es un usuario crítico desde el punto
de vista de la seguridad y no se espera una gran cantidad de ellos. De entre sus
capacidades de interacción con los otros cabe decir que es quien decide a que tipo
pertenece cada usuario, dentro de estos tres: autenticado, nutricionista y entrenador.
19
Los usuarios entrenadores son los encargados de dirigir a los usuarios (autenticados)
que han comprado el susodicho servicio, añadiéndolos a su propia lista de discípulos,
para poder crear rutinas específicas para ellos y mantener un chat privado con cada
uno. También tienen la capacidad de crear/modificar ejercicios.
Los usuarios nutricionistas, al igual que los entrenadores son los encargados de dirigir
a los usuarios (autenticados) que han comprado este servicio, añadiéndolos a su
propia lista de pacientes, para poder crear dietas específicas para ellos y mantener un
chat privado con cada uno. También tienen la capacidad de crear/modificar comidas.
3.1.2 Mecanismo de registro
Cuando un usuario desea registrarse, en la página de registro deberá aportar los
siguientes datos:
Usuario (Obligatorio)
Dirección de correo electrónico (Obligatorio)
Nombre (Obligatorio)
Año de nacimiento
Género
Estado
País
Ciudad
el primero es el nombre de login en la web y el segundo puede tratarse desde el
nombre real con apellidos hasta el apodo o cualquier otro texto.
Una vez rellenados estos datos, después de pulsar el botón d
si el email y el nombre de usuario elegido están disponibles, el sistema enviará un
email a la dirección proporcionada, conteniendo la información necesaria para poder
entrar ya como usuario autenticado.
20
3.2. Especificaciones de página
En este apartado se especificarán las descripciones de cada una de las páginas que
componen la web:
3.2.1 Portada (usuario anónimo)
Es la página que ve cualquier usuario no registrado. Está formada por una imagen
central, representando una familia y un panel con un botón de registro a la derecha de
la imagen.
3.2.2 Página de registro
Está formada por un formulario de registro que pedirá los siguientes datos al usuario:
Usuario (Obligatorio)
Dirección de correo electrónico (Obligatorio)
Nombre (Obligatorio)
Año de nacimiento
Género
Estado
País
Ciudad
Una vez pulsado el botón de envío y validados los datos, el usuario recibirá un correo
electrónico con las instrucciones para poder entrar en la web por primera vez como
usuario autenticado.
3.2.3 Noticias destacadas
En esta página se muestran los últimos estados de cada uno de nuestros amigos,
publicados en sus respectivos espacios, indicando la fecha de la publicación del
estado/comentario, así como el número de gente al que le gusta.
Si la página está vacía se visualiza una telaraña, con un mensaje invitando al usuario a
buscar amigos.
21
Aquí se dispone de la posibilidad de realizar varias acciones:
Poder comentar cualquier estado
Editar o borrar los comentarios del propio usuario
Se permite un máximo de 300 caracteres tanto en los estados como en los
comentarios.
Además, haciendo click en el nombre del usuario iremos a parar a su perfil.
3.2.4 Mi espacio
En esta página se muestran los estados del propio usuario, así como los comentarios
de estos por parte de sus amigos.
Al igual que en la página de noticias destacadas, para cada comentario/estado se
visualiza su fecha de publicación, permitiendo al usuario propietario de él
Se permite un máximo de 300 caracteres tanto en los estados como en los
comentarios.
Aquí también se accede al perfil de un usuario clicando sobre su nombre.
3.2.5 Mi dieta
Esta página se ve diferente, dependiendo de si se trata de un usuario que ha
comprado el servicio de nutricionista o no.
Si el usuario no lo ha comprado, se visualiza un texto con imágenes, donde se invita
al usuario a comprar el servicio, explicando sus ventajas y dónde puede hacerlo.
Si el usuario ya ha comprado el servicio, entonces lo que visualizará será la dieta que
el nutricionista le ha confeccionado. Ésta estará dividida en 7 días, y para cada uno de
ellos el usuario podrá acceder a la lista de comidas correspondiente.
3.2.6 Mi rutina
22
trata de un usuario que ha comprado o no el servicio de entrenador.
Si el usuario no lo ha comprado, se visualiza un texto con imágenes, donde se invita
al usuario a comprar el servicio, explicando sus ventajas y dónde puede hacerlo.
Si el usuario ya ha comprado el servicio, entonces lo que visualizará será la rutina que
el entrenador le ha confeccionado. Estará dividida en 7 días, y ara cada uno de ellos el
usuario podrá acceder a la lista de ejercicios correspondiente.
3.2.7 Mi perfil
Aquí se visualizan los datos del propio usuario: información personal, un listado con el
historial de compras y los roles temporales que tiene asignados (si tiene co ntratado
algún servicio, se asigna un rol temporal).
Existe la posibilidad de modificar todos los datos, incluido poder subir una imagen
propia, con restricciones respecto a tamaño del archivo y dimensiones de la imagen,
cambiar el idioma y la zona horaria.
3.2.8 Mis amigos
Se trata de un listado con los amigos añadidos, mostrando sus datos personales
principales, y un botón con la posibilidad de eliminar a cada uno de la lista.
Clicando sobre el nombre de un usuario, accedemos a su espacio.
3.2.9 Perfil de un usuario
borrar/modificar los datos personales del usuario. Tampoco aparece toda la
información de éste.
Se dispone de la posibilidad de eliminar al usuario de la lista de amigo s.
A la izquierda aparece un listado con algunos de los amigos del usuario, con un botón
para poder añadir a cada uno de ellos a la lista de amigos. Clicando en el nombre de
ellos se accede a la página de su perfil.
Si se quiere visualizar la totalidad de la lista de amigos del usuario hay un link
habilitado para ello.
23
3.2.10 Buscador de amigos
En esta página se visualiza un formulario de búsqueda, cuyos campos se
corresponden a cada uno de los datos del usuario, para que puedan ser filtrados
según ellos.
Rellenando alguno o todos los campos y pulsando sobre el botón buscar, si la
búsqueda tiene resultados, saldrá una lista de usuarios que no están incluidos en la
uno de ellos. Si al usuario en cuestión ya se le ha enviado previamente una solicitud,
Cabe decir que para que un usuario pueda ser añadido a la lista de amigos, éste debe
antes haber aceptado la solicitud de amistad.
3.2.11 Nutricionista
Aquí se dispone de un chat de conversación privada entre un usuario que ha
contratado el servicio de nutricionista y el propio nutricionista.
Si el usuario no tiene contratado el servicio, el link de acceso no aparece en la parte
izquierda, en el menú.
Esta página está pensada para responder dudas de los pacientes y poder llevar un
seguimiento más cercano.
Si el usuario conectado es nutricionista, entonces verá un listado de links a la derecha,
permitiendo ir a la página de la elaboración de la dieta para éste usuario o volver a la
página de inicio.
3.2.12 Entrenador
Al igual que en la página de nutricionista, aquí se dispone de un chat de conversación
privada entre un usuario que ha contratado el servicio de entrenador y el propio
entrenador.
Si el usuario no tiene contratado el servicio, el link de acceso no aparece en la parte
izquierda, en el menú.
24
Esta página está pensada para responder dudas de los discípulos y poder llevar un
seguimiento más cercano.
3.2.13 Productos y servicios
Esta página muestra el catálogo con los productos y servicios disponibles.
Cada uno con una imagen y con frases de propaganda se muestran estos elementos:
banner que proporciona acceso a la compra del servicio de nutricionista
banner que proporciona acceso a la compra del servicio de entrenador
banner que proporciona acceso a un catálogo de productos y suplementos de
venta online
3.2.14 Carro de la compra
Aquí se muestran los productos que se han añadido. Ofreciendo la posibilidad de
realizar la compra (Checkout), borrar uno, o todos los productos añadidos al carro, o
seguir comprando sin hacer ningún cambio.
de la compra y se pedirán los datos de la tarjeta del usuario entre otros.
3.2.15 Nutricionista, servicio contractual en el catálogo
imagen del servicio de nutricionista.
En realidad, más que una página, lo que aquí se detalla es una sección, dividida en
páginas. La primera de ellas muestra un texto mezclado con imágenes explicando de
forma general el funcionamiento del servicio una vez contratado, y mediante
marketing intentar convencer al usuario de sus cualidades.
nombre indica, la página que se carga es la de un formulario, a llenar con datos
personales del usuario, referentes a su estado de salud y otros datos de su estado
físico y alimentario. Estos datos serán de vital importancia para el nutricionista que lo
adopte como paciente, y aunque no son obligatorios, al final del formulario se incluye
25
un campo obligatorio, donde se exime de responsabilidad si la información rellenada
no se corresponde con la realidad.
una página donde se detallan unas últimas explicaciones del cuestionario ya rellenado,
así como unas recomendaciones y compromisos por parte de la empresa. Si
3.2.16 Nutricionista, listado de solicitantes
Únicamente un usuario con el rol de nutricionista puede acceder a esta página, que es
la inicial, cuando se conecta con su usuario.
En ella aparece un listado con los usuarios que han comprado el servicio de
nutricionista y que aún no tienen asignado uno. La lista se puede ordenar por
cualquiera de los campos de los usuarios. Cada fila corresponde a un usuario, y al final
añadirá a su lista de pacientes, y desaparecerá de ésta.
3.2.17 Nutricionista, listado/búsqueda/edición/borrado/creación de comidas
En esta página se muestra un formulario de búsqueda de comidas, donde se pueden
filtrar según sus características.
dispone de las acciones de editarlo, para modificar cualquiera de sus atributos,
clonarlo, es decir hacer una copia pero con otro nombre o borrarlo.
Desde la misma página hay un link para crear una comida nueva y otro que conduce a
una página donde se pueden editar/crear/borrar los atributos globales de las comidas.
3.2.18 Nutricionista, listado de pacientes
Aquí se muestra una lista de usuarios, que se puede ordenar según sus datos.
Cada una de las filas corresponde a un usuario, y si pulsamos sobre ella iremos a
parar a la página de conversación usuario-nutricionista.
26
3.2.19 Nutricionista, creación de una dieta para un paciente
Aquí el nutricionista puede crear una dieta para el usuario. Para cada uno de los días
puede elaborar una lista de comidas, reordenarla y modificar cualquier valor o texto si
fuera necesario.
Cada una de las comidas se añaden mediante un buscador situado a la izquierda de la
pantalla.
La lista con las comidas del usuario un día concreto se sitúa a la derecha ésta.
3.2.20 Entrenador, servicio contractual en el catálogo
imagen del servicio de entrenador.
Al igual que con el servicio de nutricionista, más que una página, lo que aquí se detalla
es una sección, dividida en páginas. La primera de ellas muestra un texto mezclado
con imágenes explicando de forma general el funcionamiento del servicio una vez
contratado, y mediante marketing intentar convencer al usuario de sus cualidades.
Se sigue a
nombre indica, la página que se carga es la de un formulario, a llenar con datos
personales del usuario, referentes a su estado de salud y otros datos de su estado
físico y alimentario. Estos datos serán de vital importancia para el entrenador que lo
adopte como discípulo, y aunque no son obligatorios, al final del formulario se incluye
un campo obligatorio, donde se exime de responsabilidad si la información rellenada
no se corresponde con la realidad.
una página donde se detallan unas últimas explicaciones del cuestionario ya rellenado,
así como unas recomendaciones y compromisos por parte de la empresa. Si
3.2.21 Entrenador, listado de solicitantes
Únicamente un usuario con el rol de entrenador puede acceder a esta página, que es
la inicial, cuando se conecta con su usuario.
27
En ella aparece un listado con los usuarios que han comprado el servicio de
entrenador y que aún no tienen asignado uno. La lista se puede ordenar por cualquiera
de los campos de los usuarios. Cada fila corresponde a un usuario, y al final de ésta se
lista de
discípulos, y desaparecerá de ésta.
3.2.22 Entrenador, listado/búsqueda/edición/borrado/creación de ejercicios
En esta página se muestra un formulario de búsqueda de ejercicios, donde se pueden
filtrar según sus características.
dispone de las acciones de editarlo, para modificar cualquiera de sus atributos,
clonarlo, es decir hacer una copia pero con otro nombre o borrarlo.
Desde la misma página hay un link para crear una ejercicio nuevo y otro que conduce
a una página donde se pueden editar/crear/borrar los atributos globales de los
ejercicios.
3.2.23 Entrenador, listado de discípulos
Aquí se muestra una lista de usuarios, que se puede ordenar según sus datos.
Cada una de las filas corresponde a un usuario, y si pulsamos sobre ella iremos a
parar a la página de conversación usuario-entrenador.
3.2.24 Entrenador, creación de una rutina para un discípulo
Aquí el entrenador puede crear una rutina para el usuario. Para cada uno de los días
puede elaborar una lista de ejercicios, reordenarla y modificar cualquier valor o texto
si fuera necesario.
Cada una de los ejercicios se añaden mediante un buscador situado a la izquierda de
la pantalla.
La lista con los ejercicios del usuario un día concreto se sitúa a la derecha ésta.
28
3.3. Sistema de pago
C
pago.
Inicialmente se ha pensado en la forma de pago mediante tarjeta de crédito, aunque
con el tiempo se ha pensado incluir más formas, puesto que el módulo que se
encar
Para hacer pruebas en un servidor local, en la etapa de desarrollo de la web, se puede
utilizar la tarjeta de pruebas: 4111111111111111 cvv:123.
Para los servicios de nutricionista y entrenador el pago estará formado por:
Iva
Precio del producto
Para los productos del catálogo:
IVA
Precio del producto
Costes de envío
Si la compra ha sido realizada con éxito, el usuario recibirá un email notificándole de
ello.
3.4. Tema propio
Toda la web está diseñada utilizando un estilo propio o tema, al que he llamado
verdeAC.
El tema está formado por hojas de estilo (CSS), que son páginas donde se detallan
aspectos gráficos de cada uno de los elementos de la web, tales como anchuras de
bordes, imágenes, colores, etc.
También se utilizan plantillas, escritas en lenguaje PHP y HTML, el primero necesario
para mostrar datos provenientes de la Base de datos y el segundo como lenguaje de
maquetación.
se ajusten al máximo a la web.
La página se divide en las siguientes regiones:
29
Cabecera: Aquí se sitúa el logo y la barra de login, con el selector de idioma y
Columna lateral izquierda: Aquí generalmente se encuentra el menú de
navegación.
Columna lateral derecha: Aquí generalmente se encuentra el bloque con el
listado de amigos.
Parte central: Aquí encontramos el contenido principal. Se muestran las
secciones: Noticias destacadas, Mi espacio, Mi dieta y Mi rutina.
30
4. Familiarización
En el inicio del proyecto, aunque tenía conocimientos y experiencia en el desarrollo de
páginas en PHP,HTML,JavaScript y MYSQL, desconocía totalmente la plataforma
Drupal. Así pues me llevó un periodo de aprendizaje y adaptación, antes de ni siquiera
pensar en cómo llevar el planteamiento del proyecto.
En la etapa de familiarización me ayudó mucho leer la siguiente web:
http://www.gomediazine.com/tutorials/create-a-killer-band-site-with-drupal-introduction/,
donde se explica cómo crear desde el principio un site. Las funciones más básicas de
Drupal, sin llegar a la programación en PHP. Gracias a los conocimientos obtenidos
acerca del funcionamiento básico tal como la creación de bloques, páginas, aplicar
estilos en CSS, maquetar las páginas XHTML (HTML extendido) y para pequeños
efectos el uso de JavaScript. En definitiva, crear la estructura básica de la web,
definiendo su estilo gráfico y las secciones que la conformarían.
Para poder desarrollar los módulos (en PHP) que iba a necesitar necesitaba tener
conocimientos acerca del funcionamiento interno de Drupal, fue así como descubrí la
existencia de hooks , o funciones en PHP, cuyo objetivo es modificar/ampliar alguna
característica o comportamiento de Drupal.
A través de la propia documentación online que Drupal pone a disposición de los
usuarios en la página http://api.drupal.org/api/drupal/6 aprendí acerca de los módulos,
formularios, variables globales...
Dentro de la documentación de Drupal se encuentra detallado el funcionamiento, y los
diferentes tipos de hooks.
4.1. Instalación de Drupal
Se ha instalado en un equipo doméstico, en un sistema operativo de tipo linux,
distribución tipo Debian.
Mediante el gestor de software del propio sistema operativo, se ha instalado el
servidor web apache, con el módulo PHP ya activado. Además se ha instalado de la
misma forma el servidor de base de datos llamado MYSQL.
Nuevamente la documentación online de Drupal me fue de gran ayuda:
http://drupal.org/documentation/install
31
4.2. Módulos probados
Contact: Habilita el uso de formularios de contacto personal y a nivel de web. Puede
hacerse servir para comunicar a los usuarios y el administrador de la web.
Profile: Este módulo proporciona un perfil para cada usuario. Este perfil está
compuesto por los campos que fije el administrador, y se pueden añadir tantos como
se desee, como por ejemplo apellidos, estado, sexo,...
Upload: Permite a los usuarios subir ficheros al servidor. Este hecho es fundamental
para que los usuarios puedan subir una foto suya, en su perfil.
Facebook-style Statuses: Este módulo provee flujos de los estados de los usuarios,
donde los usuarios pueden exponer sus pensamientos y compartirlos con los demás
usuarios.
Flag:
Mime Mail: Añade la funcionalidad para que otros módulos lo usen para enviar emails
en formato HTML.
Modal Frame Api: Este módulo permite crear ventanas modales, usando HTML y
JavaScript.
Internationalization: Con este módulo podemos construir la web en diferentes
idiomas. Usa de literales y sus traducciones a multitud de idiomas guardadas en la
base de datos, con la posibilidad de añadir cuantos se quieran.
Language switcher dropdown: Este módulo permite un menú en forma de lista
desplegable para poder cambiar el idioma. Usa HTML y JavaScript.
Menu attributes: Este módulo simple permite especificar atributos adicionales para
cada elemento del menú como id, nombre, clase y estilo.
Ubercart: Permite el desarrollo y mantenimiento de una tienda online. Cuenta con
multitud de submódulos. Se pueden crear diferentes tipos de productos, desde
servicios temporales hasta productos físicos, a enviar al cliente.
32
User relationships: Permite establecer relaciones entre dos usuarios. El
administrador define el tipo de relaciones, y si son en uno o en doble sentido. Una
sería la de nutricionista-cliente.
Views: Permite generar páginas y bloques a partir de la construcción de consultas a la
base de datos. Es compatible con multitud de módulos.
Webform: Permite la creación de formularios a alto nivel. No es necesaria una
programación ya que éstos se construyen de una manera visual. Los datos enviados
por los usuarios son guardados en la base de datos y es el administrador el que
decide quien y como tiene acceso a éstos.
4.3. Otros
Firebug: Con este complemento para el navegador mozilla firefox ( y otros) es
posible la visualización en detalle de cada elemento de una página web. Permite ver en
el código los estilos aplicados, la forma y dimensiones del elemento en cuestión.
Además permite aplicar al instante, a modo de prueba, estilos y trozos de cógigo
HTML. Una herramienta imprescindible para el diseñador de páginas web.
Php filter: Este módulo permite agregar código PHP a los nodos, es decir,
prácticamente cualquier contenido. De esta manera se pueden construir páginas y
bloques sin necesidad de editar ningún fichero, todo desde el navegador.
Php.net: Aquí se encuentra la documentación de php. Ante cualquier duda sobre
función, parámetros o valores de retorno se pueden consultar. Incluye gran cantidad
de ejemplos.
Una de las opciones que más importancia está tomando en el desarrollo de Drupal es
la posibilidad de crear sitio en varios idiomas, en la versión 5 existen dos módulos que
permiten tener contenido en varios idiomas:i18nyLocalizer.
El módulo i18n parece ser el más completo, por eso se optó por su uso, y se explica
aquí su instalación al tratarse de uno de los primeros en serlo.
1. Bajar y extraer el module i18n, dentro de la instalación de Drupal en:
sites/all/modules(se creara una carpeta con el nombre i18n).
33
2. Bajar las traducciones que se vayan a usar por ejemplo la de español, por default
Drupal ya tiene el idioma inglés.
3. Ir aAdministration > Site building > Modules y activar los siguientes modules
que forma parte de i18n:
Internationalization
i18n - blocks
i18n - taxonomy (only if you're going to use categories)
Translation
4. Ir a Administration > Site configuration > Localizationy tocar el boton de
importar
5. Hacer click en Browse(navegar) y encontrar el archivo(s) del idioma español (y
otros idiomas que se quieran habilitar) estos archivos tienen la terminación.po
6. Seleccionar el idioma que se quiere importar.
7. Regresar a la página de administración de los idiomas (Administration > Site
configuration > Localization)y habilitar los idiomas importandos, poniendo el
nombre adecuado en el idioma original. Salvar los resultados.
Estos son los pasos basicos para dejar funcionando el modulo i18n.
4.5. Diseño de la portada
El punto de partida en la creación de la web, como era lógico fue la página de la
portada.
Se comenzó definiendo la página de bienvenida cambiando el logotipo predeterminado
de Drupal, el de la gota azul, por un diseño propio. Puede realizar esta acción en la
página de administración, en los ajustes de tema:
http://localhost/admin/build/themes/settings .
Una vez allí, nos dirigimos al apartado de opciones de la imagen del logo y le
indicamos la ruta hacia la nueva imagen.
En realidad lo que se ha hecho es construir un bloque con una imagen, situado en la
parte central.
34
Se ha construido otro bloque con otra imagen que conforma un eslogan y un link
hacia el formulario de registro.
Para crear cada bloque hemos ido a administración, bloques, añadir bloque:
Existen multitud de parámetros a configurar, en este caso no interesa que salga el
Naturalmente este bloque solamente puede ser visible en determinadas
circunstancias, es decir, ha de aparecer en la página de inicio y sólo para usuarios
anónimos, no registrados:
35
36
5. Diseño
En este apartado se exponen los objetivos definidos en el apartado de
especificaciones.
Se explica los módulos utilizados para la realización del proyecto, tanto los añadidos
programados por la comunidad Drupal hasta mis propias implementaciones. Una vez
instalados los módulos, se comenta cómo se han configurado para realizar las
funciones esperadas. Dado que el módulo Ubercart es grande y complejo, se describe
como crear la primera tienda utilizando este módulo (siendo siempre usuario
administrador).
5.1. Roles
Durante la instalación de Drupal se crea una cuenta de super administrador (cuyo id es
igual a 1) al que le damos un usuario y una contraseña. Aparte de éste, Drupal crea
dos tipos de roles automáticamente. No llamado usuario anónimo y otro llamado
usuario autenticado. A parte de éstos, el usuario super administrador puede crear
otros y personalizar sus permisos.
Para crear otro tipo de usuario (rol), hay que ir a administración, administración de
usuarios, roles: http://198.154.3.2:5050/drupal6/admin/user/roles .
Para nuestra página necesitamos diferentes tipos de usuarios, aparte de los ya
creados necesitaremos crear los siguientes:
usuario entrenador: Los usuarios que tengan asignado este rol, no podrán
invitar a amigos a unirse a la lista. De hecho no disponen de lista de amigos.
Sin embargo disponen de los permisos para la visualización de las partes de la
web que permiten la creación de ejercicios y rutinas para los usuarios.
Usuario nutricionista: Este tipo de usuario, al igual que el rol de entrenador,
tampoco podrán tener amigos en la web, de la misma forma que los usuarios
autenticados. Sin embargo pueden acceder a la parte de la web que permite la
creación de comidas y elaboración de dietas para los usuarios.
Usuario cliente entrenador: Se trata de un rol temporal. Cuando un usuario
autenticado compra el servicio de entrenador, automáticamente después de
37
producirse con éxito la compra, se le asigna este rol, con el que puede acceder
Usuario cliente nutricionista: Al igual que el rol anterior, también es
temporal. Cuando un usuario autenticado compra el servicio de nutricionista,
automáticamente después de producirse con éxito la compra, se le asigna este
nutricionista asignado.
La forma de configurar los permisos para cada uno de estos tipos de usuarios, o dicho
de otra forma, qué cosas pueden o no hacer en la web, puede hacerse en la página de
administración, administración de usuario, permisos:
http://198.154.3.2:5050/drupal6/admin/user/permissions .
5.2. Explicación de los módulos de terceros utilizados y configuración de
los mismos
En este apartado se explica de forma breve los módulos más importantes utilizados
en el proyecto.
5.2.1. Módulo Contact
Este módulo permite crear formularios de contacto mediante los que los usuarios nos
pueden enviar mensajes con preguntas sugerencias etc sin tener que dar a conocer el
email de contacto. Así, a parte de ofrecer una forma integrada en el sitio de
comunicación con el usuario, el uso de este modulo permite esquivar los cada vez
más frecuentes robots de spam que llenan nuestras cuentas de correo de emails no
deseados.
utilizar. Tras activar el módulo, sus opciones de configuración aparecerán en "Site
building > Contact form" donde podremos ir configurarlo.
38
5.2.2. Módulo Internationalization (i18n)
d no
es un úncio Module sino que son varios agrupados en un mismo ZIP, cada uno con
una funcionalidad concreta.
Se puede entender I18N como un paquete de utilidades de traducción, que permite
realizar algunas de las tareas que se pueden realizar con Locale, Localization Client, o
Content Translation y otras que no se pueden realizar con estos últimos.
y
asignar los permisos adecuados a cada Rol.
Con este módulo podemos incluir el código directamente a la hora de crear un bloque
nuevo.
Es idóneo cuando se quiere desarrollar un bloque que ejecute código PHP y muestre el
resultado en HTML, en aquellos casos más simples, en los que no merece la pena
crear expresamente un módulo para ello.
39
Este módulo simple permite especificar algunos atributos adicionales para los items de
menú tales como identificación, nombre, clase, estilo y rel.
El módulo actualmente le permite configurar los siguientes atributos para cada
elemento del menú: Identificación, Nombre, Objetivo, Rel., Clase, Estilo y Tecla de
acceso.
Este es un módulo fundamental para el proyecto. Al tratarse de una red social, las
relaciones entre los usuarios son fundamentales, y es lo que este módulo aporta.
El usuario administrador es el encargado de crear los tipos de relaciones (amigo,
compañero, cónyuge, etc). Cada una de ellas puede ser configurada como en una o
ambas direcciones. También se puede determinar si se requiere o no la aprobación del
usuario solicitado.
Es un módulo que está compuesto por otros submódulos, que realizan diferentes
tareas (envío de emails, aportar bloques para poder ser utilizados, etc)
40
Este módulo permite a los usuarios compartir información acerca de ellos mismos a
través del uso de formularios que el administrador puede configurar. Cada usuario
información puede ser accedida por otros usuarios.
Como en todos los módulos, es el administrador el que determina que tipos de
usuarios tienen acceso a un determinado tipo de contenido. En este caso decide qué
campos del perfil son obligatorios, y que tipos de usuarios tienen acceso a ver el
propio perfil o el de otros.
41
Este módulo provee flujos de datos con las actualizaciones de los estados de los
los usuarios pueden expresar sus pensamientos a la comunidad.
Las @menciones y #hashtags están soportados, así como los comentarios en los
actualizaciones automáticas sin necesidad de la recarga total de la página. Además
cabe decir que este módulo es capaz de integrarse con otros 25.
Las principales características de este fundamental módulo son:
Cada usuario/nodo/grupo/término de taxonomy puede tener su propio
Los usuarios pueden ver conversaciones anidadas
Soporta @mentions y #hashtags al estilo de Twiter.
Se integra con otros 25 módulos incluyendo Profile, Views, Activity, Heartbeat,
Triggers/Actions, Rules, Flag, Taxonomy, Twitter, Userpoints, Pathauto, Autho r
Pane, Taxonomy, Input Filters, SMS Framework, User Relationships, Flag
42
Friend, Views Bulk Operations, CTools/Panels, Devel, Mollom, Mentions, Popups
API (in 2.x) / Modal Frame (in 3.x), Shorten URLs (in 3.x), Services (in 3.x),
Context (in 3.x), Notifications (in 3.x), Domain Access (in 3.x), Timeago (in
3.x),y más.
Podemos comparar Views con un generador de informes o reports de una sistema de
gestión de bases de datos: explota la estructura de datos y la presenta de forma útil
para diferentes comunidades de usuarios, incorporando filtros preestablecidos o
permitiendo establecerlos en el momento de la consulta.
El módulo Views provee un flexible método para los desarrolladores de controlar
como se muestran en pantalla los listados de tablas de contenido.
Esta herramienta es esencialmente un potente constructor de consultas a la base de
datos que, con la suficiente información, puede construir la más optima de las
Además de otras cosas, Views puede ser usado para generar informes, sumarios,
colecciones de imágenes u otro tipo de contenido.
43
Este Contributed Module permite establecer diferentes tipos de relaciones entre los
usuarios y el contenido
permite definir un contenido como favorito de un usuario, pero puede utilizarse con
otras muchas finalidades, como p.ej para marcar contenidos como inapropiados ,
para marcar la asistencia a una celebración, o cualquier otro tipo de relación que
e nos mostrará un formulario de edición
donde deberemos especificar el nombre del nuevo Flag y el tipo de elemento al que
estará relacionado ( Nodes, Comments o Users).
Hecho esto se nos mostrará un nuevo formulario, mucho más grande, en el que
deberemos especificar, entre otros, el titulo que se mostrará cuando se muestre, el
mensaje que se mostrará cuando esté marcado, cuando no lo esté, los usuarios que
podrán modificar el flag, el Content Type al que se vinculará el Flag creado, y el modo
en que se mostrará. Si lo hemos hecho bien podremos visualizar todos los contenidos
a los que hemos asociado el nuevo Flag y marcar o desmarcar el Flag según
convenga.
Este módulo provee de librerías para que otros módulos las puedan utilizar. Su utilidad
44
es la posibilidad de utilizar sus funciones para crear ventanas modales, diferentes de
las que aporta el navegador por defecto, con el mismo estilo siempre. Estas ventanas
serían en realidad elementos de HTML llamados IFRAMEs, a los cuales se les pueden
aplicar estilos CSS desde el desarrollo del tema.
Ubercart es un módulo orientado al comercio electrónico que se integra
completamente en la tienda online.
Proporciona a los usuarios una funcionalidad de carro de la compra, que viene muy
bien a la hora de gestionar cada uno de los productos o servicios, agrupándolos en
catálogos.
Puede ser utilizado para vender productos a ser enviados, descargados, para hacer
asociaciones, asignaciones temporales de ciertos roles y permisos en la web...
Características:
Es un módulo de Drupal
Es una potente plataforma de interacción con los clientes.
Integración transparente con el núcleo de Drupal (sistema de informes,
facturas, un historial del cliente muy avanzado,...).
Tiene una gran comunidad de desarrolladores que lo mantiene y mejora.
Está organizado en submódulos que amplían su funcionalidad (gestión de
productos, creación y personalización de todo tipo de productos,
categorización del contenido, búsqueda integrada,...).
Sistema exhaustivo de clientes. Puede manejar una gran cantidad de productos
y hacer un seguimiento de las ventas en stock.
Incorpora un sistema integrado de pago (pasarela de pago, transferencia,
tarjeta,..).
Puede procesar paquetes, incorpora carro de la compra, gestión flexible de los
costes de envío,...
Incorpora atributos y opciones para diferenciar los productos.
Stock e inventario. Incorpora un inventario configurable para cada producto e
45
incluso para cada atributo de cada producto. Notificaciones para falta de stock.
Restricción de la compra por falta de stock.
Sistema de impuestos configurable.
Múltiples opciones para configurar y completar la tienda online.
Éste es un módulo que permite la construcción de formularios de carácter general.
Una vez instalado, en la sección de administración, crear contenido, aparte de poder
crear páginas y productos, ahora nos aparecerá una nueva opción: el webform.
Como usuario administrador, al crear uno, simplemente le daremos un título,
descripción, mensaje de confirmación. Después configuraremos un email al que irán
dirigidos los formularios ya contestados de los usuarios.
5.3. Explicación de los módulos de terceros utilizados y configuración de
los mismos
A continuación se detalla la construcción de cada uno de los módulos propios
programados.
46
5.3.1. Módulo Buscador de amigos (Friend finder)
mite la opción de activarlo.
Este módulo proporciona un bloque donde se muestra un listado limitado de amigos
datos y determina que usuarios están relacionados de esta manera.
En este bloque también se muestra una alerta cuando un usuario ha solicitado nuestra
amistad, y aún no la hemos aceptado o rechazado. Si pulsamos en esa alerta iremos
buscador de usuarios, que cumplan los requisitos del formulario de búsqueda, en
concordancia con los campos del módulo
Para cada uno de los usuarios buscados, aparece un botón con el cuál podemos
47
Se incluye una tabla auxiliar a la de los campos d
deben aparecer esos campos en la ficha del usuario. Por ejemplo, de esta manera
ormación adicional, aparte
del orden de aparición. La página de configuración permite hacer estos cambios:
48
5.3.2. Módulo conversación entre dos usuarios (conversations)
Este simple módulo almacena mensajes en una tabla de la base de datos, guardando
el usuario que escribió el mensaje y el usuario al que va dirigido, incluyendo la fecha en
la que éste se fue escrito.
Aporta una página en http://198.154.3.2:5050/drupal6/conversation/$id_usuario/$texto .
Obsérvese que la página recibe dos parámetros: $id_usuario hace referencia al
usuario con quien se está manteniendo la conversación, y el parámetro $texto, que
es el texto que aparece como título en la página, traducido si se encuentra el literal del
idioma en curso.
Para cada mensaje aparece la foto del usuario que lo ha escrito y la fecha. Para los
mensajes enviados aparece una alerta de mensaje leido si el mensaje ha sido ojeado
por el receptor:
Este módulo es el más complicado y más laborioso de desarrollar. Por eso se
explicará en detalle, mostrando tanto los aspectos funcionales como el diagrama de la
base de datos.
La idea conceptual que condujo a la implementación de este módulo se basó en la
necesidad de los siguientes puntos:
49
Se necesitaba tener un elemento al que se le pudieran añadir atributos de forma
dinámica. Por ejemplo el elemento A tiene el atributo x1 con valor v1 y el
atributo x2 con valor v2
Estos elementos podrían ser agrupados en listas personalizadas para cada
usuario.
Cada día de la semana contiene una lista de elementos, para un usuario en
concreto.
Cada elemento pertenece a una única categoría.
Se pueden añadir tantas categorías como el administrador desee.
Un ejercicio diseñado por un usuario con el rol entrenador cumple los puntos antes
citados:
Para cada ejercicio, cada entrenador puede añadir nuevos atributos. Por
ejemplo, para todos los ejercicios el entrenador añade los atributos
Los ejercicios pueden ser agrupados en listas, llamadas rutinas. Un entrenador
puede confeccionar una rutina a un usuario.
Cada día de la semana contiene una rutina, o lista de ejercicios, para un usuario
en concreto.
Los elementos ejercicios pertenecen a la
Si quisiéramos añadir (y añadiremos) más categorías, por ejemplo, comidas.
También una comida propuesta por un usuario con el rol nutricionista cumple los
mismos puntos:
Para cada comida, cada nutricionista puede añadir nuevos atributos. Por
Las comidas pueden ser agrupadas en listas, llamadas dietas. Un nutricionista
puede elaborar una dieta a un usuario.
Cada día de la semana contiene una dieta, o lista de comidas, para un usuario
en concreto.
50
De esta manera, el usuario administrador creará tantas categorías como sean
necesarias, en este caso dos: ejercicios y comidas.
Se crearán las páginas para crear/borrar/editar cada tipo de elementos, y el
administrador decidirá que roles tienen acceso a cada una de estas páginas.
De esta forma, este módulo crea la página para crear/borrar/editar ejercicios
accesible sólo por entrenadores, así como comidas, accesible únicamente por
nutricionistas. Si existieran más categorías se crearían más páginas. A continuación se
muestran unas cuantas pantallas tanto de ejercicios como comidas:
51
Aparte de las páginas dedicadas al manejo de elementos, el módulo también crea las
páginas para elaborar rutinas semanales compuestas de elementos a los usuarios. Se
crea una página de este tipo por cada categoría que haya y el administrador decide
que roles tienen acceso a cada una.
De esta forma en la web encontramos dos páginas una para entrenadores y otra para
nutricionistas, donde pueden elaborar para cada usuario seleccionado una rutina de
entrenamientos/dieta. Las siguientes pantallas describen estas acciones:
Cada valor de cualquier elemento puede se
elaboración de la rutina, y los cambios sólo se aplican en esa rutina, para ese usuario,
y para ese elemento cuyo atributo está siendo modificado. Para guardar la
Obsérvese como en la siguiente pantalla se muestra como ejemplo la modificación
del último elemento:
52
Para los usuarios también se crea un bloque por cada categoría existente, donde
pueden visualizar la rutina que el entrenador/nutricionista les ha impuesto. Es el
administrador quien decide qué tipos de usuario tienen acceso a estos bloques, para
ello se han creado dos roles especiales: usuario cliente entrenador y usuario cliente
nutricionista.
Estos roles son de carácter temporal y son asignados a los usuarios que hayan
comprado en la tienda el servicio correspondiente, ya sea de nutricionista o
entrenador. A continuación se muestran las pantallas:
53
A continuación se muestra el diagrama de la base de datos con las tablas creadas por
54
6. Implementación
En este apartado se hace una pequeña introducción a los lenguajes de programación
y los programas utilizados en el desarrollo del proyecto. Se indican también las
necesidades de archivos mínimos para la creación de un módulo y se especifica
detalladamente cada uno de los módulos diseñados. De igual manera se tratará con el
diseño del tema. Se enumeran los archivos primordiales para realizar un tema y
encuentra el código de los módulos y el tema elaborados.
6.1. Lenguajes de programación
Los lenguajes de programación que han sido utilizados durante el proyecto son los
siguientes:
Drupal es un programa de código abierto y libre distribución, escrito en el lenguaje
PHP, desarrollado y mantenido por una amplia comunidad de usuarios.
PHP es un lenguaje de programación interpretado, diseñado originalmente para la
creación de páginas web dinámicas.
HTML (HyperText Markup Language) es un lenguaje de maquetación, para la
construcción de páginas web. Se utiliza para describir la estructura y el contenido en
forma de texto, y también complementar el texto con otro tipo de objetos, como por
CSS (Cascading Style Sheets) es un lenguaje de hojas de estilo. Está diseñado
principalmente para permitir la separación del contenido del documento (escrito en
HTML o algún otro lenguaje de marcas similar) de la presentación del documento,
incluyendo elementos como la disposición, colores y fuentes.
MYSQL es un sistema de gestión de bases de datos de tipo relacional que utiliza de
base el lenguaje SQL. Se puede hacer uso de MYSQL en aplicaciones de todo tipo
(web, de escritorio u otros) de forma libre y gratuita bajo las condiciones de la licencia
GPL.
6.2. Programas utilizados
Tanto para la creación de una maqueta con las pantallas iniciales para crear el estilo y
55
el tema, como para el diseño de las imágenes de la web se ha utilizado el programa
GIMP, disponible para las plataformas Linux, Unix, Windows y Mac OS x.
Para la edición de los archivos en la programación de los módulos y el tema he usado
el programa de Linux llamado Gedit.
La web ha sido testeada en los siguientes navegadores: Mozilla firefox, Google
chrome, chromium e Internet explorer 6+.
6.3. Directrices para crear un módulo
Cuando creamos un módulo propio o instalamos un módulo nuevo en Drupal
debemos ponerlo en sites/all/modules.
Paso 1. Crear el fichero week_routine.info
Debe ser un fichero de texto plano y con el siguiente contenido:
;$Id$ name = "Week routine" description = "Provee un sistema para crear rutinas
semanales a usuarios (tipo entrenos, dietas, etc)" core = 6.x php = 5.1
name y description aportan información a Drupal y se muestra en el listado de
módulos.
core y php son nuevas en Drupal 6. core indica la versión mínima necesaria de Drupal
y php la versión mínima requerida de php. (php es opcional)
Paso 2. Crear el fichero week_routine.module
En este fichero comenzaremos a programar con php y las funciones de Drupal.
Debemos seguir rigurosamente los estándares de codificación y documentación.
(http://drupal.org/coding-standards)
// $Id: week_routine.module,v 1.0 2009/07/10 11:35:44 bor Exp $
El $Id utilizado para el control de versiones. Nombre del módulo y versión, fecha
En este fichero encontramos unas funciones especiales llamadas hooks, que se
encargan de la comunicación del módulo con el core de Drupal.
56
Un hook típico y que podemos encontrar en prácticamente cualquier módulo es
hook_menu (cuando nos referimos al tipo de hook, se escribe así, pero cuando la
nombre indica se encarga de crear entradas en el menú, cada una de ellas será una
página.
Al final se devuelve un array de elementos del menú, por ejemplo vemos un trozo de
esa función:
function week_routine_menu() {
$items = array();
// pagina donde se listan todos los elementos de una categoria pasada por
$items['routine/%/elements'] = array(
'title'
=> t('Elements'),
'description'
=> t('Elements from a category'),
'access callback' => TRUE,
'access arguments' => array(1),
'page callback'
=> 'wr_element_list_HTML_reset',
'type' => MENU_CALLBACK,
);
[...]
return $items;
}
Paso 3. Crear el fichero week_routine.install
En este fichero se detalla la estructura de la base de datos y las funciones para instalar
o desinstalar (cuando eliminemos el módulo ) las tablas que se utilizan.
57
Paso 4. Instalar el módulo
Copiar la carpeta que contiene los archivos del módulo a sites/all/modules o a
sites/nombre-del-sitio/modules por nuestra experiencia recomendamos utilizar
siempre sites/all/modules.
Activar el módulo. En Administrar / Construcción del sitio / Módulos
(admin/build/modules) se listan los módulos disponibles. Si hemos copiado
correctamente nuestro módulo debe aparecer en el listado, y pulsaremos en el
A partir de que esté activado la funcionalidad definida en el fichero .module estará
disponible.
6.4. Implementación de los módulos propios
En este punto se explica cómo están formados los módulos implementados. Se
comentan los archivos que los forman y la función de éstos.
6.4.1. Módulo buscador de amigos
Está constituido por los siguientes archivos:
friendfinder.info Pone título al módulo y describe su función. También define la
aquete
pertenece. Esta información se mostrará en el momento de la activación del módulo.
friendfinder.install En este archivo se definen las tablas de la base de datos que se
crearán (o borrarán si se decide desinstalar el módulo). Proporciona los hooks
hook_install, hook_uninstall y hook_schema:
friend_finder_install
las tablas que se van a
utilizar en la base de datos.
friend_finder_uninstall
para el borrado
de las tablas que pertenecen al módulo.
friend_finder_schema Aquí se define la estructura de las tablas del módulo:
58
friendfinder.module Archivo que proporciona el código del módulo, a continuación
se describirán las funciones más relevantes (o hooks) que implementa:
friendfinder_menu Se definen las páginas que contiene el módulo. En este caso son
3: la página de configuración del módulo, la página del buscador de amigos y la página
del formulario que aparece al pulsar en el botón de solicitud de amistad con un
usuario.
friendfinder_help Página de información del módulo que aparecerá en la sección
Administrar > Ayuda > Friendfinder
friendfinder_theme
decir, que se pueden modificar desde la programación del tema.
friendfinder_block Se definen los bloques que contiene el módulo. En este caso es el
bloque de amigos.
friendfinder_search Esta es la página de búsqueda de usuarios. Incorpora un
formulario con los campos del perfil a buscar en la parte de arriba y los resultados que
se muestran en la parte inferior de la página.
show_results_HTML
en HTML de la búsqueda de usuarios.
friendfinder_search_form Es llamada
formulario de búsqueda, formado por los campos del perfil de usuario a buscar.
friendfinder_search_form_submit Se hace el tratamiento para los datos enviados en
el formulario de búsqueda. Construye una query de resultados que se muestran en la
friendfinder_request
friendfinder_request_validate Esta función valida los datos enviados por el formulario
59
de ese usuario, y si el usuario al que se desea enviar la solicitud puede aceptar
solicitudes.
friendfinder_request_submit Se hace el tratamiento de los datos enviados en el
establecer una relación de amistad con el usuario seleccionado.
friendfinder.admin.inc Archivo que proporciona el código del módulo que
implementa la parte de administración. Básicamente consta de los formularios que
aparecen en la página de configuración del módulo. Estas son las funciones más
importantes que contiene:
friendfinder_admin_overview Contiene la página de configuración del módulo, que se
encuentra accesible desde el menú de administración. Se trata de un formulario.
friendfinder_admin_overview_submit Se hace el tratamiento de los datos enviados
en el formulario de configuración del módulo. Guarda los datos en la base de datos.
theme_friendfinder_admin_overview Le da un estilo al formulario de configuración del
módulo, haciendo que cada fila de la tabla sea arrastrable con el ratón, para fijar el
orden entre cada elemento.
friendfinder.js Este archivo proporciona una librería de funciones en javascript que
utilizará este módulo.
friendfinder.css Proporciona los estilos básicos para los bloques y páginas que el
módulo crea.
6.4.2. Módulo conversación entre dos usuarios
Está constituido por los siguientes archivos:
conversations.info Pone título al módulo y describe su función. También define la
pertenece. Esta información se mostrará en el momento de la activación del módulo.
conversations.install En este archivo se definen las tablas de la base de datos que
se crearán (o borrarán si se decide desinstalar el módulo). Proporciona los hooks
hook_install, hook_uninstall y hook_schema:
60
conversations_install
de las tablas que se van a
creación
utilizar en la base de datos.
conversations_uninstall
borrado de las tablas que
pertenecen al módulo.
conversations_schema Aquí se define la estructura de las tablas del módulo:
conversations.module Archivo que proporciona el código del módulo, a
continuación se describirán las funciones más relevantes (o hooks) que implementa:
conversations_menu Se definen las páginas que contiene el módulo. En este caso es
1: la página en la que se muestra la conversación entre dos usuarios cuyos id han
sido pasados como parámetros.
show_conversation Esta función construye la página de conversación entre dos
usuarios. Incorpora un textarea en la parte superior de la página y un listado con los
mensajes a continuación.
conversations_form Es el formulario con el textarea para introducir mensajes. Es
conversations_form_submit Se hace el tratamiento de los datos enviados en el
form
emisor y la fecha en la base de datos.
Está constituido por los siguientes archivos:
week_routine.info Pone título al módulo y describe su función. También define la
pertenece. Esta información se mostrará en el momento de la activación del módulo.
61
week_routine.install En este archivo se definen las tablas de la base de datos que
se crearán (o borrarán si se decide desinstalar el módulo). Proporciona los hooks
hook_install, hook_uninstall y hook_schema:
week_routine_install
las tablas que se van a
utilizar en la base de datos.
week_routine_uninstall
borrado de las tablas que
pertenecen al módulo.
week_routine_schema Aquí se define la estructura de las tablas del módulo:
week_routine.module Archivo que proporciona el código del módulo, a
continuación se describirán las funciones más relevantes (o hooks) que implementa:
week_routine_menu Se definen las páginas que contiene el módulo. En este caso son
7:
La página donde se listan todos los elementos de una categoría pasada por
parámetro (para entrenadores y nutricionistas). Se construye con la función
wr_element_list_HTML.
La pagina donde se añade un elemento a una categoría pasada por
parámetro (para entrenadores y nutricionistas). Se construye con la función
wr_element_add_HTML_form.
La página donde se edita un elemento de una categoría pasados por
parámetro (id del elemento y categoría, accesible por nutricionistas y
entrenadores). Se construye con la función wr_element_edit_HTML_form.
62
La página donde se clona un elemento de una categoría pasados por
parámetro (id del elemento y categoría, accesible por nutricionistas y
entrenadores). Se construye con la función wr_element_clone_HTML_form.
La página donde se borra un elemento de una categoría pasados por
parámetro (id del elemento y categoría, accesible por nutricionistas y
entrenadores). Se construye con la función wr_element_delete.
La página de edición de una rutina para un usuario dada una categoría y
usuarios pasados por parámetro (para entrenadores y nutricionistas). Se
construye con la función wr_user_routine_edit_HTML.
La página donde se configura una categoría pasada por parámetro,
añadiendo, editando o eliminando atributos (para entrenadores y
nutricionistas). Se construye con la función
wr_category_configuration_HTML.
filter_routines_form El formulario de filtrado de elementos dada una categoría. Es
filter_routines_form_submit
Se hace el tratamiento para los datos enviados en el
formular
element_validate_picture Función para validar y guardar la imagen en un fichero,
subida en el momento de su creación/modificación por el usuario. Se valida que el
fichero sea una imagen y que cumpla unos requisitos de tamaño máximo de fichero y
dimensiones máximas en píxeles.
wr_element_add_HTML_form_submit Se hace el tratamiento para los datos
envia
estos datos, accede a la base de datos y almacena resultados.
wr_element_edit_HTML_form_submit
Se hace el tratamiento para los datos
elemento. Con estos datos, accede a la base de datos y almacena resultados.
week_routine_theme Proporciona a los desarrolladores de temas, la posibilidad de
ser modificados desde los archivos de implementación del tema.
63
day_user_routine_form El formulario con los datos de la rutina para un usuario, en un
día pasados por parámetro (id_usuario, id_categoria,dia).
theme_day_user_routine_form Le da un estilo al formulario
ratón, para fijar el orden entre cada elemento.
day_user_routine_form_submit Se hace el tratamiento para los datos enviados en el
almacena resultados.
category_elements El listado de elementos para una categoría pasados por
rutina de un usuario.
add_element_routine_form El formulario con los datos del elemento para añadirlo a
la rutina del usuario.
add_element_routine_form_submit Se hace el tratamiento para los datos enviados
ede a la base de
datos y guarda la rutina para un día y un usuario.
filter_user_routines_form El formulario de filtrado de elementos dada una categoría
pasada por parámetro. Cada uno de los campos son atributos del elemento.
filter_user_routines_form_submit Se hace el tratamiento para los datos enviados en
y construye una query que lista los resultados de la búsqueda, esta query se ejecuta
wr_element_clone_HTML_form_submit Se hace el tratamiento para los datos
a la base de datos y crea un nuevo elemento a partir de los datos del elemento
original, guardándolo en la base de datos.
week_routine_block En esta función se definen los bloques que contiene el módulo.
En este caso se crea uno por cada categoría, cuyo nombre está compuesto por el
nombre de la categoría.
my_routine_block_HTML En este bloque se muestra la rutina desde el punto de vista
del cliente, sin que pueda ser modificada.
64
button_day_form Este pequeño formulario consta de un botón y un campo
página
button_day_form_submit Se hace el tratamiento para los datos enviados en el
como predeterminado para visualizar la rutina correspondiente.
routine_configuration_form formulario con la lista de atributos para una
categoría/elemento. Estos pueden ser ordenados y también pueden ser cambiados
sus valores.
theme_routine_configuration_form Le da un estilo al formulario
ratón, para fijar el orden entre cada elemento.
routine_configuration_form_submit Se hace el tratamiento para los datos enviados
estos datos se accede a la base
de datos y se guardan o modifican los elementos, y el orden de estos, para un
usuario y días en concreto.
add_attribute_form Formulario con tantos campos como atributos tiene la
categoría/elemento pasado por parámetro. Cada campo se encuentra vacío con el fin
de ser rellenado con valores para un nuevo atributo.
add_attribute_form_submit Se hace el tratamiento para los datos enviados en el
guardan los valores con el nuevo atributo.
6.5. Directrices para crear un tema
En la creación de un tema es necesario que todos sus archivos se encuentren dentro
Para crear un tema propio se necesitan los siguientes archivos:
nombre_tema.info
page.tpl.php
El archivo .info se encarga de proporcionar información a Drupal. Este archivo siempre
sigue el mismo formato. Es extensible, es decir, se le pueden añadir o quitar etiquetas
65
donde se especifica la información del módulo. La estructura básica es la misma que la
del módulo. Además se puede definir los bloques que tendrá la plantilla y los
elementos que contendrá como el logotipo, el título, el eslogan, etc. Drupal accede a
este archivo en el momento de activar/aplicar un tema.
estructura de la página: Se imprimen los bloques, los títulos, los scripts, los estilos,...
Drupal busca este archivo en el momento de cargar la estructura de la página.
Opcionalmente se puede añadir código CSS pero es más elegante y profesional
hacerlo mediante una hoja de estilos (fichero.css).
Además se pueden añadir plantillas de page-front.tpl.php, node.tpl.php, nodestory.tpl.php, block.tpl.php... Cada una de ellas sustituye un diseño predeterminado de
una zona o página. Cada una de las plantillas se encargará de tratar y dar forma y
estilo un tipo de objeto diferente. Por ejemplo, page-front.tpl.php solo se carga si la
página solicitada es la página principal. Tal como se puede ver, los nombres de las
plantillas son auto-descriptivos.
Dentro de cada plantilla se pueden sobrescribir funciones que Drupal ya tiene
predefinidas (hooks). Incluso cuando se está escribiendo el nombre de una plantilla ya
se está sobrescribiendo la que utiliza Drupal como predeterminada.
Drupal sigue siempre el mismo camino. El usuario realiza una consulta. Drupal
pregunta al tema activo: puedes darme esta información? Si el tema dispone de ella
se la ofrecerá de forma propia, como estuviera definida. En el caso que no disponga
de esta información, Drupal utilizará sus propias herramientas para responder a la
petición del usuario.
6.6. Implementación del tema propio (verdeAC)
verdeAC es el nombre del tema. Es el nombre que le di, porque obviamente
-te).
Es en realidad un subtema del tema Zen. A continuación se detalla cómo se crea este
subtema a partir de otro.
6.
Para poder crear el subtema es necesario seguir los siguientes pasos:
66
Descargarse el fichero comprimido desde la página oficial y descomprimirlo en la
renombrar esta carpeta con el nombre del tema que queramos crear. Es
importante destacar que éste debe comenzar por una letra y el nombre solo
puede contener caracteres alfabéticos y guiones bajos
A partir de ahora trabajaremos dentro de la carpeta creada. Hay que
archivo y cambiamos los datos tales como el nombre, descripción, etc.
Es necesario editar los ficheros template.php y theme-settings.php, y substituir
por el nombre de nuestro tema.
Entrar en la web como usuario administrador e ir a Administrar > construcción
del sitio > temas y activar este nuevo subtema.
Opcionalmente se puede (y este será nuestro caso) modificar los ficheros php
para modificar hooks y otras funcionalidades, así como los archivos .CSS para
la creación de los estilos propios.
6.6.2. Personalización del subtema
en PHP).
Más abajo se definen los elementos que son el nombre, el eslogan, la misión de la
web, el título, el bloque de búsqueda, el favicon (pequeño icono que se muestra en la
barra del navegador), los enlaces primarios y los enlaces secundarios. También se
indica en qué archivo están definidos los estilos que utilizará el tema.
Dentro del head se encuentran los accesos a los scripts, los estilos y la variable $head
(contiene cabeceras HTML). Dentro del body se encuentran los elementos descritos
en el fichero .info (nombre, título, eslogan, etc.). Si la sesión ha sido iniciada por un
usuario se muestra un enlace para cerrar la sesión. También se muestran los
67
mensajes, la ayuda, los bloques que conforman la página: El bloque superior, el
izquierdo, el derecho, el footer y el central.
Las páginas CSS (que se encuentran en la subcarpeta css) son una hoja de estilos
donde se definen los #id y los .class que se utilizan en el fichero page.tpl.php. La
diferencia entre estos dos elementos estriba en que #id sólo se puede utilizar una
vez, ya que identifica un elemento de manera inequívoca, y .class se puede utilizar las
veces que se desee, ya que sirve para aplicar atributos generales a los elementos..
Dentro de estas etiquetas se definen los atributos que las diferencian unas de las
otras. Alguno de estos atributos más utilizados son: border, width, float, height, color,
etc... También se da la posibilidad de cargar imágenes, las cuales residen en la misma
carpeta del tema.
Aparte de estos archivos, la carpeta verdeAC contiene ficheros de imagen, que le dan
personalidad al tema.
68
7. Evaluación
En este apartado de evaluación, se describen los procedimientos y pautas generales
que siguen cada uno de los tipos de usuarios o roles. Las acciones que pueden realizar
dentro del contexto de un servicio comprado para el caso de un usuario cliente, o
como usuario que da el servicio contratado (nutricionistas y entrenadores).
Estos procedimientos se describirán mediante ejemplos prácticos, uno por cada tipo
de usuario.
7.1. Ejemplo de usuario que compra un servicio de nutricionista y/o
entrenador
Dado un usuario X que quiere comprar el servicio de nutricionista, debe ir a la sección
nú, que aparece a la izquierda de la
pantalla si el usuario ha entrado en sesión. Después de pulsar sobre el link, deberá
rellenar un cuestionario no obligatorio, con preguntas acerca de su estado físico y
hábitos alimenticios. Después el cliente añade el producto al carro de la compra.
El proceso de compra del servicio finaliza cuando el usuario va a la página del carro de
la compra y después de llenar otro formulario con los datos bancarios y pulsar en el
botón de compra. En realidad finaliza después que la compra haya sido validada. En un
principio únicamente hay un medio de pago disponible, que es la tarjeta de
69
Una vez con el servicio ya comprado, el usuario puede vis
y ver como la pantalla ha cambiado, en lugar de un eslogan promocionando el
servicio, está el calendario semanal, de momento vacío, donde irá el listado de
comidas que conforman la dieta. En el momento en el que un usuario nutricionista se
menú y entre paréntesis aparecerá el número de mensajes no leídos.
Una vez el/la nutricionista ha confeccionado una dieta para este usuario, en el
calendario semanal aparece la dieta.
70
El usuario dispone de un espacio de contacto directo con el/la nutricionista. Si pulsa
chat con el/la profesional asignado/a.
Para un usuario que compra el servicio de entrenador estos procedimientos son
similares:
7.2. Ejemplo de entrenador
El usuario que ha iniciado la sesión tiene el rol de entrenador. En el momento de
conectarse aparece una lista con solicitudes de clientes que ya han comprado este
servicio, pero que todavía no tienen asignado ningún entrenador.
En esta lista como entrenadores decidimos que usuario vamos a tomar a cargo como
discípulos, pulsando su botón correspondiente.
71
Si añadimos a un usuario mediante el bot
Una vez en esta página, si pulsamos sobre el nombre del usuario entraremos en su
ficha. Donde aparecen los datos de su perfil, y un espacio de chat.
la página de la edición de la rutina de ejercicios para ese usuario.
72
En la página de la edición de la rutina, que se muestra en la anterior imagen como
ejemplo, con el buscador de la izquierda buscamos los ejercicios que queremos añadir
a la rutina, en la parte derecha, en el día seleccionado.
Otra sección a la que como entrenadores tenemos acceso es aquella en la que
podemos crear, modificar o eliminar ejercicios. Se trata del conjunto de páginas que
Inicialmente entramos en un buscador de ejercicios en el que podemos buscar el que
(o los que) nos interese y modificarlo, eliminarlo o hacer una copia de él (clonarlo).
Además aparecen links para crear ejercicios nuevos o modificar las características
generales de los ejercicios (los atributos).
73
7.3. Ejemplo de nutricionista
El campo de acción del usuario nutricionista es similar al del usuario entrenador.
Cambiemos ejercicios por comidas y tendremos las mismas funciones y accesos.
Al igual que con los demás tipos se propone el ejemplo de estar conectados como un
usuario nutricionista, al que al entrar en la web, como página de inicio nos aparece la
74
lista de solicitudes, que es la lista de usuarios que han comprado el servicio de
nutricionista y aún no tienen asignado uno.
De esta lista de usua
parte de nuestra lista de pacientes.
Al igual que con el entrenador, en la lista de clientes que tenemos a nuestro cargo, si
pulsamos sobre su nombre iremos a la ficha de éste, donde podremos elaborar su
dieta, de forma muy similar a como un entrenador lo hace con la rutina y los
ejercicios.
75
El/la nutricionista también dispone de páginas para la elaboración de las comidas que
forman las dietas.
76
8. Legislación
El comercio electrónico es el marco de negocios en el que se desarrollan cada vez
más operaciones mercantiles.
En el comercio electrónico convergen tecnologías y aplicaciones que ya existían
aisladamente y otras nuevas tan dispares como el Intercambio Electrónico de Datos,
el teletrabajo, la publicidad en Internet o las compras electrónicas, pero que tienen en
común el uso de las telecomunicaciones.
Cuando hablamos de comercio electrónico y según los agentes que intervengan en la
relación comercial podemos distinguir varias modalidades:
B2C"Business to Consumer": Venta de productos finales a un
consumidor [Tiendas virtuales como Amazon.com]
B2B "Business to Business": Comercio entre empresas, clienteproveedor.[ Mercados para empresas como Opciona.com]
C2C "Consumer to Consumer": Subastas en las que usuarios particulares
venden productos [Subastas como Ebay.com]
C2B "Consumer to Business": Consumidores particulares se agrupan para
tener más fuerza y hacer pedidos a empresas [Cooperativas como
letsbuyit.como la red social financiera Weemba Weemba.es ]
G2B/C/G "Government to Business/Consumer o Government":
Relaciones con las administraciones públicas y los ciudadanos, empresas u
otras administraciones. Gobierno electrónico o e-goverment, también A2B,
A2C, A2A. [Impuestos vía Internet como Aeat.es ]
P2P "Peer to Peer": De amigo a amigo [como el intercambio de música P2P
o los préstamos personales Prosper ( Prosper.com)
B2E, "Business to Employee": Comunicación entre empresa y trabajador.[erecruiment, teletrabajo, intranet...( http://www.infolancer.net )]
la que se enmarcará nuestro proyecto. Se busca la venta de productos finales a un
consumidor (Business to Consumer).
77
Es vender a un particular a través de Internet y dar respuesta a todo lo que ello
conlleva, como:
Medios de pago...¿con VISA, contrareembolso, teléfono móvil?
Formas de envío...¿un operador logístico o varios?
Impuestos...¿qué pasa con los clientes internacionales?
Plazos de entrega...no es lo mismo una Pizza que un billete de avión
Garantía...si compro en Internet ¿a quién recurro si sale algo mal?
Devoluciones de material...¿como funciona la logística inversa?
Servicio postventa...¿vale con poner un email para reclamaciones?
Protección de datos...¿cómo cumplir la LSSI (Ley de Servicios de la
Sociedad de la Información)?
8.1. Creando una empresa
El simple hecho de crear una web y que sea accesible por los usuarios no implica que
sea obligatoria la creación de una empresa, pero el hecho de vender algo sí. Por eso
es necesario llevar un estudio acerca de las modalidades de empresa que más
encajan con el proyecto: empresa nueva y pequeña, con costes mínimos y con
capacidad de crecer reinvirtiendo capital. Ante estas perspectivas, son dos las
opciones a tener en cuenta:
Establecerse como autónomo
Fundar una Sociedad Limitada Nueva Empresa
Cada opción tiene sus ventajas y desventajas, pero dado que en principio el número
de socios sería mayor a uno, y como responsabilidad sólo estaría el capital aportado,
no el personal.
La constitución de una SLNE es muy rápida y solo tendremos que personarnos en el
PAIT (Puntos de Asesoramiento e Inicio de Tramitación) y en el notario. El resto de
actuaciones de realizan de forma telemática desde el PAIT con los datos que
aportemos tal.
En la siguiente tabla se muestran las diferentes formas en que una empresa puede ser
constituida, junto con sus principales características:
78
El Sistema de Tramitación Telemática, creado por la DGPYME, le ofrece la posibilidad
de constituir su empresa utilizando las tecnologías de la información. Los trámites se
inician en los Puntos de Asesoramiento (PAIT) repartidos por casi toda la geografía
española. Disponible en:Circe (http://www.circe.es). El Gobierno da paso a la
creación de Sociedades de Responsabilidad Limitada a través de Internet, proyecto
que se enmarca dentro del Plan de Fomento Empresarial.
Estos son los pasos básicos a seguir:
-Certificado del Registro Mercantil Central. Tarda entre tres y cinco días en
autorizar el nombre de la sociedad.
-Certificado bancario de la aportación. Se ingresa en una cuenta bancaria el capital
mínimo. Tarda entre uno y dos días.
-Redacción de los estatutos. Luego serán revisados por el Registro.
-Escritura de poderes si un socio es extranjero. Unas dos semanas.
-Escritura constitutiva de la sociedad ante notario.
-Impuesto de operaciones societarias. El tributo es del 1%.
-Registro Mercantil. Puede tardar entre dos y tres semanas. Su respuesta puede
79
ser negativa, lo que retrasaría todo otras dos o tres semanas.
Por ejemplo, un primer paso para constituir una sociedad es obtener un certificado de
la Sección denominaciones de Registro Mercantil Central, que acredite la inexistencia
de otra sociedad con denominación igual o idéntica. Este trámite lo podemos resolver
en la página del Registro Mercantil.
En Ayudas.net (http://www.ayudas.net ) se recogen ayudas y subvenciones que
concede la Unión Europea, las administraciones autonómicas y el Estado. Es gratuito.
8.1.1. Registrar un dominio
Para reservar el dominio de Internet, podemos acudir a muchas empresas que
ofrecen este servicio.
Por ejemplo:
Directnic (http://www.directnic.com)
Networksolutions (http://www.networksolutions.com)
Nerion (http://www.nerion.es )
Piensasolutions (http://www.piensasolutions.com)
Arsys (http://www.arsys.es )
En España:Nic.es ( http://www.nic.es ). Para registro de nombres de dominio del resto
del mundo NORID (http://www.norid.no/domreg.html).
Consultando sus bases de datos podemos saber si el nombre que teníamos pensado
está ya adquirido.
Una vez comprado el dominio hay que configurar las preferencias, datos técnicos del
servidor donde se va a alojar, de las direcciones de correo electrónico que queremos
tener, etc.
80
8.1.2. Alojar el servidor
Otro coste es el alojamiento del servidor.
Servidor propioubicado en la empresa. Exige mantenimiento, personal
especializado, líneas especiales de comunicaciones.
Housing. Es un servidor propio, pero ubicado físicamente en una empresa
proveedora de este servicio.
Hosting. Una de las opciones que mejor relación calidad-precio tiene es el
llamado hotel de servidores o web-hosting. Es una solución económica porque
los servidores en los que se alojan se comparten entre varios clientes.
Empresas que se dedican al alojamiento de páginas web son Arsys.es
(http://www.arsys.es ), Nerion (http://www.nerion.es ) y Piensasolutions
(http://www.piensasolutions.com).
Un buscador de alojamiento de páginas web es Buscahost
(http://www.buscahost.com).
8.2. Derechos de autor
Internet ofrece una escasa protección de los derechos de autor y es allí donde
Creative Commons propone sus licencias en busca de aprovechar los derechos
privados para un beneficio público.
Esta inmensa enciclopedia que es internet tiene un peligro, y es la escasa protección
de los derechos de autor que brinda. No ya solo por la facilidad de copia de sus
contenidos, sino por ser un ámbito totalmente plurinacional:
Una persona rusa puede copiar un libro de Gabriel García Márquez traducido al
chino, publicarlo en un PDF que cuelgue en un servidor de Estados Unidos y lo
vea una persona que está en Costa de Marfil.
Se está violando los derechos de autor de un ciudadano colombiano ¿pero dónde?
Obviamente en Rusia ya que la comete un ruso, pero ¿có mo se persigue? Con este
tonto ejemplo uno se puede dar cuenta de la complejidad que puede tener esto para
una editorial. No ya en la definición de la violación de los derechos, sino a la hora de
perseguir dicha actuación delictiva.
81
A finales del año 2002 nace Creative Commons. Destinado a adaptar al mastodonte que
es Internet los derechos de autor.
Como los movimientos de software abierto y libre, el fin de Creative Commons es
fomentar la cooperación y el desarrollo en equipo, pero dentro de la libertad y la
voluntad propia.
Creative Commons ha desarrollado una aplicación Web que ayuda a la gente a brindar
sus creaciones al dominio público o a reservarse los derechos de autor, dejándolos
libres para ciertas aplicaciones, en ciertas condiciones de uso.
82
9. Costes
Crear y desarrollar una actividad mercantil conlleva una serie de costes y beneficios.
Empezando por los costes básicos que podemos tener, la empresa ha de poseer un
capital mínimo que se exige, ha de soportar el coste del alquiler de un local donde
guardar los productos, hacerse cargo del coste de transporte y envío, y por último, el
coste de mantenimiento del dominio donde alojar el espacio web.
9.1. Coste del almacenamiento web
Se ha buscado una empresa dedicada a ofrecer servicios de alojamiento web, por
razones de rendimiento y accesibilidad se ha optado por la modalidad de hosting.
De entre varias empresas en la web hay una que me ha interesado especialmente
sobre las otras, por sus tarifas y la velocidad de transferencia.
http://www.piensasolutions.com
83
unos 96 euros al año.
9.2. Coste del local de almacenaje de productos
Forma del contrato
Es importante hacerlo por escrito, y aunque no exista un modelo concreto, se debe
incluir como mínimo la identidad de las partes, localización y descripción del local, la
duración del contrato, la renda y cualquier otro aspecto que consideremos
conveniente.
La mensualidad
La renda, cantidad y forma de pago será la que libremente pacten las partes. Si no se
acuerda nada al respecto, ha de hacerse en efectivo y en el local.
Por su parte, el arrendador está obligado a dar un justificante o recibo de pago al
arrendatario, salvo que éste resulte debidamente acreditado por otros procedimientos
(por ejemplo, con el resguardo del ingreso bancario).
La fianza
En la celebración del contrato será obligatoria la exigencia y prestación de fianza en
metálico, equivalente a dos mensualidades de la renda.
La duración del contrato
En principio, las partes pueden establecer libremente la duración del contrato de
alquiler.
9.3. Coste del transporte
De entre todas las empresas localizadas en la web, la más económica es MRW
(http://www.mrw.es), a su favor también tiene que personalmente la había utilizado
con anterioridad con buenos resultados, disponen de diferentes tarifas, según el peso
del paquete y la distancia.
84
El precio es estándar para un paquete de peso 5 Kg.
9.4. Coste de los empleados (nutricionistas y entrenadores)
Como la mayoría de nuevas empresas de emprendedores, uno de los principales
objetivos a nivel general es el abaratamiento de costes. Por eso es corriente ver a los
fundadores de la empresa ser los primeros trabajadores.
Si el negocio funciona y se tiene una gran demanda que es imposible satisfacer con el
personal actual, se hace posible la idea de contratar a personal auxiliar que realice
tareas específicas a cambio de un sueldo, es decir, un empleado.
Si con el hecho de llevar servicios de atención al cliente de manera física, es decir, el
entrenador/nutricionista se encuentra físicamente con el cliente, la idea de la
contratación de personal extra se hace entonces cada vez más necesaria.
Pensando en el corto/medio plazo cabe pensar en la contratación de
entrenadores/nutricionistas, y ello lleva a pensar sobre la forma de contrato,
honorarios, horarios, etc...
85
9.5. Costes de marketing (google, camisetas, publicidad en los gimnasios,
etc)
Tan importante es el servicio prestado como la propaganda y divulgación que de él se
hace. Si el servicio es bueno, pero casi nadie sabe de él entonces estará condenado al
fracaso.
Por eso es una parte muy importante del proyecto las formas en las que la web se da
a conocer al mundo.
Un paso es crear camisetas con el logo y un eslogan, y repartirlas entre amigos y
conocidos, crear panfletos y distribuirlos por algunos gimnasios, etc)
Todo esto se puede hacer de manera local, en la propia ciudad, pero quizás hay una
internet. O lo que es lo mismo, que cualquier usuario buscando algo sobre fitness,
deporte, nutrición, etc, nuestra página aparezca entre los primeros resultados.
Hacer que tu pagina aparezca en Google es más que sencillo, de hecho basta con que
alguien que ya este indexado en su base de datos, haga un link desde su pagina a la
tuya, y Google te encontrará..
También puedes sugerirle que lea tu pagina desde aquí
http://www.google.com/addurl.html
Ahora, la gracia está en estar bien posicionado, es decir, aparecer en las primeras
posiciones de búsqueda.
Google usa un algoritmo de búsqueda bastante complejo, pero muy efectivo.
Ese cálculo de Google se encarga, en parte, de valorar la calidad o importancia de una
pagina.
Una vez que Google que localiza una pagina, se guarda la información sobre la misma,
la analiza, la pasa a un editor, y a esa pagina se le da una nota.
Una nota entre el 1 y el 10. A esa nota se le conoce como PageRank.
puedes saber el PageRank de las páginas que visitas con una herramienta, la
Googlebar.
Con la googlebar, podremos no solo saber cual es el page rank de una página, si no
que incluso podremos "VOTAR" a esa página para que Google tenga una referencia de
nuestros gustos.
86
Si tienes un page rank 2/10 o 3/10... La verdad, es que de Google te van a venir
pocas cosas. Lo suyo es tener como mínimo 4/10 o 5/10. Para lograr aumentar el
page rank de tu página, aquí van algunos consejos imprescindibles:
Tener el código de tu pagina, limpio y ordenado. Se pueden validar las paginas
aquí http://validator.w3.org/check/referer . De hecho el código limpio y
ordenado no ayuda directamente a subir el Page Rank, pero si que mejora
mucho el posicionamiento de las paginas, osea que es una una manera de
aprovechar al máximo nuestro page rank.
Que te "linken" desde páginas que tengan un Page Rank alto. Tal y como los
enlaces de páginas con Page Rank inferior o igual a 3/10 apenas cuentan para
aumentar el Page Rank (aunque si cuentan). Cualquiera con un Page Rank
superior o igual a4/10 hará que sumes muchos puntos en Google.
Indexar tu pagina en DMOZ ( http://www.dmoz.org/), importantísimo. Dmoz es
el directorio en el que Google basa sus búsquedas, una vez añadido tu Blog allí,
pasara a ser un Blog "Oficial".
9.6. Cálculo de costes
En este apartado se detallan los costes de los apartados anteriores para calcular los
costes totales.
Inicialmente se descarta la idea de la contratación de personal, pues se trata del
cálculo de costes en la fundación de la empresa.
Además a todo ello habrá que añadir la contratación de un teléfono móvil, para la
captación/fidelización de clientes por este medio.
a envío)
87
Los beneficios de la empresa dependerán en parte de la venta de productos. La
empresa no soportará el coste de envío de los productos, ya que esto lo pagará el
consumidor. La empresa destinada al transporte de los productos puede bajar o subir
de precio, aunque en la web esto se verá igualmente modificado para que lo refleje
(para no obtener beneficios pero tampoco costes adicionales). Todo este tema puede
ser variable según el movimiento de comercio que pueda haber.
88
10. Conclusiones
En un mundo cada vez más globalizado, en el que hasta hace poco las compras
desde cualquier punto del planeta eran impensables, emerge con fuerza la oportunidad
de negocio en internet. Dado su bajo capital en inversión, los beneficios son grandes,
pero hay otros factores que también hay que observar.
En el 2000 muchos soñaron con poner una tienda virtual y forrarse... pero en las
tiendas on-line, los márgenes se estrechan, con el uso de programas que comparan
precios y más todavía con el nuevo estándar de creación de páginas Web, el XML.
Incluso muchos servicios de calidad pueden encontrarse gratis en Internet como
libros, diccionarios o enciclopedias, que viven de la publicidad.
Muchas punto com tuvieron pérdidas o su cotización se desplomó pero también hubo
algunas excepciones. De acuerdo con Webmergers.com de entre las 7.000 y 10.000
empresas de Internet, desde enero del 2000 hasta marzo del 2002 quebraron unas
800. Es un porcentaje que podemos considerar normal. Con datos del Ministerio de
Economía, a los 4 años de su nacimiento, desaparecen 4 de cada diez empresas que
se crean.
En la actualidad, muchas empresas que operan en el sector de Internet tienen
pérdidas. Hay muchos negocios que sí funcionan en Internet, y muy diversos, por lo
que hay que analizar con mucho cuidado los datos clave de cada empresa.
Por ejemplo, si estamos hablando de portales o los periódicos online, una fuente
principal de los ingresos es la publicidad que inserta en sus páginas. Pero ¿cuanto
puede ingresar por este concepto? Básicamente depende de las páginas vistas y de lo
que cobre por cada una de ellas.
En cuanto al desarrollo del proyecto en sí, cabe decir en favor de Drupal que es un
sistema de gestión de contenidos (CMS) de código abierto que se caracteriza por su
filosofía modular tanto de funcionalidades como de trabajo. La ventaja de Drupal es
que se pueden aprovechar los cientos (o miles) de módulos que ya solventan
problemas comunes y dedicar el tiempo libre a desarrollar funcionalidades nuevas e
innovadoras que aporten un valor extra al gestor y a la comunidad. La premisa es:
Recibe y Comparte.
Con la funcionalidad de los módulos hechos por los programadores de la comunidad
de Drupal se ha desarrollado una web que es tanto una red social como una tienda
89
online, aportando caracterizaciones que la diferencian de las demás, elaborando
módulos propios y un tema.
Drupal tiene una manera de trabajar muy singular. Todos los módulos están formados
de la misma manera: Tienen unos archivos clave que Drupal busca para desarrollar
ocurre un evento debido a que el usuario ha solicitado cierta información (como por
ejemplo visitar una página).
La ventaja que tienen estos hooks, es que se pueden sobrescribir, es decir, cuando se
produce un evento Drupal, primero, busca la función correspondiente al evento en
todos los módulos que están activados. Se ejecutará la función de todos los módulos
que la tengan sobrescrita. En cambio, los que no la tengan, Drupal ejecutará su
función por defecto.
Ubercart es un módulo completo para desarrollar el comercio electrónico. Añade un
carro de la compra que se integra completamente en la tienda online con Drupal. Se
trata de una combinación para cualquiera que quiera construir una comunidad de
ventas, una comunidad de descargas, etc. Junto con el añadido de un sistema de
pago flexible, sofisticado y seguro.
Fácilmente podemos crear nuevos módulos con diferentes funcionalidades si Drupal
nos deja crear nuevas tablas dentro de su base de datos. Con la misma facilidad, la
API de Drupal nos proporciona funciones para que programar nos sea cómodo.
Con la programación de nuevos módulos se ha conseguido que un usuario pueda
aportar nuevos usuarios a nuestra tienda, pueda crear su círculo de amistades,
comunicarse con los demás usuarios y acceder a una parte de la web dedicada a los
servicios de nutricionista y entrenador.
En cuanto a los temas de Drupal pasa lo mismo que con los módulos. Se pueden
crear muchas plantillas, una para manejar nodos, otra para controlar bloques, otra
para páginas,... si Drupal busca dentro de nuestro tema y no encuentra la plantilla
de su núcleo por
defecto.
Las hojas de estilo CSS es un medio mediante el cual podemos separar el código que
da la apariencia de la página con el código funcional de la estructura.
Tocando el tema laboral, las leyes, se ha visto que no todo parece del todo fácil. Ser
90
peligro que los problemas económicos pueden afectar a los bienes personales.
En cambio constituir una Sociedad Limitada Nueva Empresa es más difícil al principio
empezado a desarrollar el propio negocio. Pero tiene la ventaja de separar el
patrimonio de la empresa de los bienes propios. Esta situación propicia más seguridad
desde mi punto de vista.
91
92
11. Planning temporal de las tareas realizadas
El planning temporal refleja el tiempo dedicado al desarrollo del proyecto, y el
desglose de éste en tareas.
Del
Familiarización con Drupal, instalación de módulos, temas. Aprendizaje
01.09.2011 de los aspectos básicos.
a
17.11.2011
Del
17.11.2011 Maquetación de la página de la portada
a
25.11.2011
Del
26.11.2011 multiidioma. Añadida la operatividad al menú desplegable de cambio de
a
idioma, en la cabecera
29.11.2001
Del
Creado el menú de navegación y también maquetado. Creación del
30.11.2011 bloque de las pestañas en la sección central.
a
05.12.2011
Del
06.12.2001 Periodo de pruebas con ellos.
a
16.12.2011
Del
17.12.2001 amigos y del bloque de la lista de amigos
a
05.01.2012
Del
-
93
06.01.2001
a
Maquetación de estas secciones
31.01.2012
Del
Desarroll
01.02.2001
a
15.02.2012
Del
16.02.2001
a
31.02.2012
Del
Desarrollo y maquetación de las páginas correspondientes a los roles de
01.03.2001
a
07.03.2012
Del
Trabajar en la documentación.
08.03.2001
a
25.03.2012
Añadir las traducciones que faltan a los tres idiomas: Catalán,
Castellano e Inglés.
Acabar de arreglar algunos fallos de maquetación. Arreglar la
maquetación para el navegador Internet Explorer
94
12. Bibliografía
Todas las fuentes de conocimientos han venido de la red:
Familiarización con los aspectos generales de Drupal:
http://www.gomediazine.com/tutorials/create-a-killer-band-site-with-drupalintroduction/
Familiarización con los formularios y su modificación:
http://drupal.org/node/92657
API Reference de Drupal: http://api.drupal.org/api/drupal/6
Creando módulos de Drupal:
http://manzanamecanica.org/2008/04/tutorial_creando_modulos_de_drupal.html
Guia de Ubercart: http://www.ubercart.org/docs/user
Estándares de código para la creación de módulos: http://drupal.org/codingstandards
Indice de Hooks:
http://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/6
Índice funciones y página de consulta para PHP: http://www.php.net/
El comercio electrónico: http://ciberconta.unizar.es/leccion/econta/INICIO.HTML
95
Descargar