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