Un sitio en Drupal paso a paso. Parte 5

9 Comentarios
Fecha: 
04 de Abril de 2009

Un sitio en Drupal paso a paso. (Parte 5 de 6)

Con la mayor parte del sitio funcionando lo que sigue son los pequeños detalles, no por ello dejan de ser importantes.

Hasta aquí, el sitio tiene listados y contenidos listos para crear. Sin embargo hay una serie de cuestiones que no deben pasarse por alto antes de poner el sitio en producción.

Permisos de usuario

Si bien generalmente es lo último que se configura de un sitio, los permisos de usuarios son los que determinan que nivel de acceso tendrán los visitantes de un sitio.

Drupal organizar a los usuarios asignándole roles. Cada rol puede otorgarle determinado privilegio que hace que un usuario por ejemplo pueda crear o no un artículo, o instalar nuevos módulos en un sitio.

Para este sitio utilicé un solo rol. Llamado editor. El rol editor permite que usuarios creen artículos. Al momento de escribir estas lineas el único usuario con permisos para crear artículos soy yo. Entonces. ¿Para que crear un nuevo rol? ¿No basta con utilizar el usuario administrador para esta tarea?

Esto tal vez escape al alcance de este artículo. Pero una de las razones principales por la que no debería, nadie, utilizar el administrador del sitio, como usuario principal, es por cuestiones de seguridad. Los ataques XSS muchas, veces no tomados en cuenta por su aparente inocuidad, son muy peligrosos sin son ejecutados por el administrador del sitio.

Por esta razón, lo primero que hice al poner este sitio en producción, fue crear otro usuario y asignarle el rol Editor.

De esta manera me aseguro que si por alguna casualidad se logra filtrar un código malicioso en el sitio, por supuesto en javascript, no afecte a todo el funcionamiento del sitio, sino solo a este usuario con menos privilegios.

Dicho esto, la creación de roles generalmente desencadena toda una serie de configuraciones extra que están ligadas a los roles.

En la sección Administrar -> Usuarios -> Permisos, se pueden configurar que niveles de acceso tendrá cada usuario.

En este caso un usuario con el rol Editor puede crear Artículos y Videos, entre otras cosas.

Permisos de usuario

Filtros de entrada

Para que cada artículo pueda contener imágenes, es necesario que estas puedan ser referenciadas de algún modo dentro del nodo. Existen varios métodos para esto, pero todos requieren que la imagen se encuentre en el servidor. Para adjuntar imágenes utilicé el módulo upload que trae Drupal.

Ahora, como insertar la imagen en el texto. Si bien muchos editores de texto del tipo WYSIWYG traen entre sus funcionalidades la opción de insertar una imagen, yo opte por el módulo inline. Este módulo permite agregar una imagen al nodo con una sintaxis simple

[inline:nombre_del_archivo.png=Texto de información sobre el archivo]

o más simplemente

[inline:1=Texto de información]

Esto se conoce como un filtro de entrada la etiqueta inline es reemplazada por algún valor. De esto se encarga en parte el modulo filter que usualmente es extendido en funcionalidad por otro módulo, en este caso el módulo inline.

La mayoría de los módulos que trabajan con filtros de entrada necesitan ser configurados desde la sección Administrar -> Opciones del Sitio -> Filtros de Entrada.

En este caso, para el rol Editor, utilicé un nuevo filtro de entrada llamado, en un rapto de creatividad, Contenido.

El filtro de entrada contenido me permite incluir etiquetas h2, h3, h4, img y divs dentro del texto. De esta forma tengo más control sobre el formato que le quiero dar a mis artículos.

Por otro lado el Filtro de entrada por defecto es el HTML Filtrado. Este pequeñin es el encargado de que nadie incluya etiquetas maliciosas en sus comentarios que puedan arruinar el sitio o su contenido.

Comentarios

Los comentarios en los artículos son activados desde el momento en que se crea el contenido. Esta opción se configura por primera vez cuando se crear el tipo de Contenido en la sección "Opciones de comentarios"

Opciones de comentarios

De igual forma, para que un visitante pueda comentar sobre un artículo o un video debe tener permisos para crear comentarios sin moderación. Los comentarios sin moderación son publicados automáticamente en el sitio sin que un administrador los revise antes.

Permitir comentarios en el sitio

Alto ahí, ¿es un humano?

Verdaderamente debe dar rédito el spam para que haya tanto dando vueltas por ahí. Como sea, este sitio es para hablar de Drupal y no de pastillas a mitad de precio. Por lo tanto hay que buscar alguna forma de bloquear a esos robots que nunca duermen.

Si se permite que visitante anónimos publiquen comentarios en un sitio, hay que utilizar algún método para asegurarnos que ese comentario proviene de un humano y no una máquina enviando spam.

Es aquí donde entran en juego los módulos del tipo Captcha. Existen muchísimo, de hecho no he profundizado demasiado en el tema. Generalmente utilizo un simple captcha que le hace una pregunta matemática al usuario. Cuanto es 1 + 3. Si responde cuatro, felicitaciones usted puede crear su comentario!. ¿Increíble no?...

En fin, el modulo captcha incluye entre sus submódulos la posibilidad de hacer preguntas matemáticas. Algunos toques de configuración en Administrar -> Usuarios -> Captcha, y el sitio es "un poco más seguro".

Videos... ¿Cómo hiciste eso?

Para agregar los videos al sitio utilicé un proveedor externo para alojarlos. Digamos, YouTube, Blip.tv, Vimeo, da igual. La pregunta del millón es, ¿como agrego ese video a mi sitio en drupal?

Existen varias formas... (sí, siempre existen varias formas para hacer algo en drupal)

Una de las más simples es copiar ese texto "amigable" que proveen los sitios como Youtube

<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/WvNMFPYflFw&hl=es&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/WvNMFPYflFw&hl=es&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>

Opción 1: Dentro del cuerpo del artículo.

Bien, ventajas y desventajas de esto.

Ventajas: Copio y pego eso, y anda. Bien!
Desventajas: La etiqueta object no es aceptada por el filtro HTML de Drupal. Hay que agregar una excepción. Además. Entorpece bastante el código del artículo, y son, "demasiados" parámetros.

Opción 2: Como un filtro de entrada.

Ventajas: [video:http://www.youtube.com/v/WvNMFPYflFw&hl] dentro de un nodo y anda. Bien!
Desventajas: Hay que configurar el filtro dentro de los Formatos de entrada. Además se pierde dentro del texto del artículo, dificulta la localización y modificación en un futuro, si llegara a ser necesaria.

Opción 3: Como un campo dentro del Tipo de contenido.

Como esta es la opción que elegí, no voy a dividirlo en ventajas y desventajas.

Básicamente la idea es, el tipo de contenido Videos tendrá una pequeña descripción para el video, y un campo en donde, indicando la url del video, aparecer embebido el video citado.

Lo bueno de esto es que existe un módulo llamado emField (Embedded Media Field) que permite justamente referenciar videos (y otras cosas) dentro de un campo cck. De hecho, contiene muchísimas más opciones que los filtros de entrada o pegar el html directamente. Como por ejemplo, crear miniaturas automáticamente.

Configurar este campo no se diferencia mucho a lo que podría ser configurar un campo de fechas. El único detalles es que hay que habilitar los proveedores de videos desde Administrar -> Administración de contenidos -> Embedded Media Field y luego crear un nuevo campo en el tipo de contenidos Video para que se puedan enlazar videos.

Creando un campo del tipo Embedded Media Field

Quicktabs

En la página incial, para ahorrar espacio y no perder funcionalidad, he utilizado el módulo quicktabs para crear pestañas.

Este modulo tiene una interfaz gráfica realmente simple y funcional. Permite crear grupos de pestañas indicandoles que bloque mostrará en su interior.

Para este sitio creé un solo grupo de pestañas que mostraría los ultimos temas del foro, los ultimos comentarios, los ultimos artículos y los últimos videos publicados. Estos dos últimos bloques los configuré desde views, para más información ver la parte tres de este artículo.

Configurando pestañas

Para agregarle los iconos de colores tuve que reescribir la función que imprime quicktabs, pero eso ya escapa al alcance de este artículo, tal vez en un próximo.

Artículos relacionados

En un principio pensé mantener una lista de artículos relacionados "a mano". O sea, por cada artículo que escribiera, indicar que artículos se relacionaban con el a través de un campo en el tipo de contenido. Mala idea, si la cantidad de artículos crece, como espero que crezca, llegará un momento en que será muy difícil mantener un listado de artículos relacionados.

La gente de Civic Actions publicó hace tiempo, un artículo en el que comparaba módulos para gestionar artículos relacionados.

En este sitio no utilizo taxonomías para categorizar los artículos. Por esa razón el modulo similar entries me pareció el más apropiado.

Este módulo solo funciona para instalaciones de Drupal con MySql por lo que puede ser una limitación para aquellos que usen PostgreSql.

La configuración es bastante simple, aunque por una mala documentación (a mi criterio), estuve cerca de media hora intentando que funcione.

Similar Entries busca entre los tipos tipos de contenido y las categorías que le indiquemos, comparando el título y el cuerpo de cada artículo y generando una lista ordenada por porcentaje de "coincidencias". Luego genera un bloque que se puede agregar en alguna sección del Theme y solo se muestra cuando se esta leyendo un artículo. ¿Que más se le puede pedir?

Resumen

Como se puede observar a simple vista, hacer un sitio en Drupal no es solo instalarlo, configurar CCK y Views e instalar un Theme. Cada detalle que se quiera modificar requiere de configuraciones de módulos específicos que coordinados lograr el objetivo deseado. La buena noticia de todo esto es que existen más de 4000 módulos para configurar cuanta funcionalidad pueda imaginarse. Y si no existe, puede programarse. La parte complicada de todo esto es conocer que instalar y como configurarlo. No se preocupe, leyendo y practicando, se aprende y siempre habrá personas dispuesta a ayudarlo.

Su voto: Nada Promedio: 4.4 (12 votos)

Contenido Relacionado

Comentarios

similar entries

Primero enhorabuena por la web!! muy bien explicadas las cosas, una pregunta con el similar entries no has tenido problemas con el cache de bloques activado y los Contenido Relacionados que les aparecen a los usuarios anónimos? no te salían siempre las mismas entradas? en mi web si, yo tuve que desactivar el cache de bloques y tu?

Re: Similar entries

Gracias por tu comentario. Por ahora no estoy utilizando el cache de bloques en este sitio por lo que no he tenido esa experiencia. sin embargo, probablemente se trate de un problema de configuracion. Se puede indicar en la configuración de cada bloque cuanto tiempo transcurrirá hasta definir reconstruir el bloque y guardarlo en el cache. Si este tiempo es corto, por ejemplo 1 día. Los usuarios verían lo mismo por un día. Es importante que el cron este funcionando correctamente para que dispare las tareas de recontrucción de bloques.

Saludos

Hola de nuevo: Hoy revisando

Hola de nuevo:

Hoy revisando los releases de los módulos encontré este issue http://drupal.org/node/253299

La versión 6-1.1 de Similar Entries soluciona tu problema.

Saludos

Agradecimiento

Que pagina mas buena definitivamente una de las mejores que he visto muy agradecido con estas publicaciones que presentas en esta pagina son de mucha ayuda para empezar con drupal amigo deberías escribir un libro que mucha falta le hace a la comunidad hispana puesto que todo esta en ingles exceptuando algunas cosas que me atrevo a llamar migajas en español de nuevo gracias por este aporte

Re: Agradecimiento

Hola Jose:

Muchas gracias por tu comentario. Es cierto que no hay muchos sitios sobre Drupal en Español, sin embargo tampoco es el único. El blog de Carlos Rincon, Documentados y Cambrico entre otros son buenos lugares para aprender drupal también. Tal vez este sitio haga que otras personas se animen a crear sus propios sitios.

Con respecto al libro, bueno que puedo decir. Creo que me queda un poco grande la tarea. Por ahora prefiero seguir escribiendo estos artículos con la informalidad que me permiten.

Les recuerdo a todos que pueden solicitar algún tema en especial. Muchas veces mis intereses no son los mismos que lo de los que leen, y al final de cuentas, yo los escribo para otras personas los lean, no sólo para mi.

Captcha

Hola buenas.. a ver resulta que acabo de empezar con drupal y bueno ando ahiii trasteando a ver si consigo algo.
Tengo que poner un captcha en los comentarios al escribir uno y no me sale, instalo el módulo, lo configuro para que salga en los comentarios y doy los permisos y nada.. alguien me puede echar un cable??... no encuentro el motivo por el que no salga el captcha...
M gracias.

Consulta

a mi en lo personal me ha serivido mucho tu sitio web, le he dado vuelta al howto este y lo ido leendo de arriba abajo, realmente te agradezco por la paciencia que tienes en crear este tipo de material ya que es de muy buena calidad y todo esta muy explicado.

yo estoy comenzando mi propio sitio web sobre tutoriales a nivel general una de las ideas del mismo es no enmoeser tanto conocimiento y tratar de dejar un legado sobre lo que aprendi en mi vida.

voy siguiendo tu manual y me gustaria saber si puedo hacer una referencia de el en un post en mi sitio, adiconalmente saber cuales modulos me recomendarias ..

muchas gracias.

Saludos
jore.

Hola Jore: Ante todo muchas

Hola Jore:

Ante todo muchas gracias por tu comentario.

Con respecto a la referencia. Pues por supuesto que podés crear un enlace a mi página. Podes dejar una referencia en un comentario para que google indexe la tuya desde este sitio si querés.

Sobre los módulos. No entiendo la pregunta, ¿que te recomiendo a nivel general? ¿Qué clase de funcionalidad estas buscando?

Saludos

Sobre quicktabs

Mariano:
Gracias por éste tutorial, éste tipo de materiales nos ahorra tiempo.

Una pregunta qué módulo utilizaste para que se mostrara en la sección de artículos el menú:

Ordernar listado por:
Fecha de Publicación |Cantidad de Votos|Cantidad de visitas

Para crear un menú similar, en mi caso utilice un quicktabs dentro de un panel tipo página; me gustaría saber qué aplicaste tú, por qué no se si lo que utilice es lo más óptimo.

Saludos
Antigona

Enviar un comentario nuevo

¿Dudas, comentarios?. Anímese, y de su opinión sobre material. Procure cuidar su ortografía y publicar algo relacionado con el contenido.

Por consultas generales, utilice los Foros de Drupal Hispano. Los comentarios no relacionados con el contenido seran borrados.

Seguro que usted no se llama anónimo :)
El contenido de este campo se mantiene privado y no se mostrará públicamente.
Si posee un sitio web puede indicarlo en este campo
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><del>
  • Saltos automáticos de líneas y de párrafos.
  • Usted puede agregar código (genérico) utilizando etiquetas <code>...</code> o <?php ... ?> para código PHP resaltado.

Más información sobre opciones de formato

CAPTCHA
Esta pregunta es para asegurarnos de que usted es humano. Y que sabe sumar por lo menos un poco :)
2 + 7 =
Resuelva este simple problema matemático e introduzca el resultado. Por ejemplo para 1+3, responda 4.