Templates para páginas según el path en Drupal 7

Muchas veces queremos un template diferente para una página o una sección de nuestro website, con esta técnica podemos tener una dirección como:

example.com/portafolio

y que nos de el chance de tener un template específicamente para esa dirección, algo como

page–portafolio.tpl.php

Para que esto sea posible, debemos implementar el hook_preprocess_page y agregar las sugerencias de templates antes de pasarlo al theme system de Drupal.

Así se hacía en Drupal 6:

Así se hace en Drupal 7:

Las diferencias son claras! Bueno, quizas no tanto, pero las diferencias si son importantes, por ejemplo:

  • Antes los nombres de los templates utilizaban un solo guión – para separar las palabras, ahora usan dos guiones
  • Cuando definimos el nombre del archivo que vamos a sugerir como template sustituimos el guión por dos underscores __ el theme system se encarga de traducir esto a — en el nombre del archivo.
  • Antes agregabamos la sugerencia a $vars['template_files'] ahora lo hacemos a $vars['theme_hook_suggestions']

Cabe recordar que este código va en el template.php de nuestro Theme.

Asegurando Drupal – Contenido

Alguna parte del contenido de algunos sitios es para uso estricto del webmaster, de los managers, autores, moderadores, etc. Los roles de Drupal restringen acciones específicas, pero no contenido específico. Para eso necesitas ajustar configuraciones e instalar algunos módulos.

No confíes en que no se puede acceder al contenido de Drupal no publicado

Los nodos y comentarios no publicados aún son accesibles. Si te sabes la URL, o la puedes adivinar, los nodos no publicados pueden ser servidos. Como todos los nodos de Drupal tienen una URL en el formato http://TUSITIO/node/ID, no es difícil navegar utilizando valores numéricos consecutivos  para obtener cada nodo de tu sitio, publicado o no.

Drupal no provee restricciones para los nodos individualmente o para los tipos de contenido. Hay varios módulos que pueden agregar esa funcionalidad, incluyendo: Nodeaccess, Node Access,Content Access.

Restringe el acceso a menús específicos

Drupal no tiene restricciones para los menús o los elementos de un menú específico. Los bloques de menus pueden registringirse por roles en Administer > Site building > Blocks.Para obtener más control hay algunos módulos disponibles, como Menu Access.

Restringe el acceso a bloques específicos

Esconde los bloques privados configurando los permisos para cada bloque en Administer > Site building > Blocks.

Asegurando Drupal – Cuentas

A medida que Drupal se va haciendo más famoso, inevitablemente surgen interesados en hackearlo, ya sea por información, desacreditar una marca o algunas otras razones. Lo hemos visto pasar con otros proyectos como WordPress y Joomla. Las amenazas a la seguridad de un sitio web siempre van a existir, así que debemos tomar todas las precauciones necesarias para mantener nuestro sitio seguro.

La configuración de seguridad que tiene una instalación nueva de Drupal es muy floja. por lo tanto debemos dar algunos pasos adicionales para que nuestro sistema tenga una seguridad cada vez más estricta.

El primer paso para mejorar la seguridad de una instalación de Drupal es configurar permisos, roles y cuentas de usuario. En otras palabras, controlar como los usuarios crean sus cuentas y que pueden hacer con ellas.

  • Deshabilita las creaciones de cuentas de usuarios anonimos. Por defecto Drupal deja que los usuarios anónimos creen cuentas sin preguntar. Esto es una muy buena idea si estás creando un foro o un sitio donde una comunidad va a compartir contenido. Pero si estás creando un blog o un sitio web corporativo vás a necesitar un control de acceso más estricto. Deshabilita la creacián de cuentas no aprobadas en Administer > User management > User settings
  • Crea Roles de usuarios. Los roles en Drupal son nombres que se le dan a una serie de permisos que se pueden asignar a los usuarios. Los roles con los que Drupal viene por defecto son Usuario anónimo y Usuario autenticado (que inicio sesión). Evidentemente solo estos dos roles no ofrecen la suficiente granularidad  a la hora de definir permisos. Considera crear un rol Autor para el grupo de usuarios que va a insertar y editar el contenido, Moderador para los usuarios que van a administrar los comentarios y a borrar los comentarios ofensivos y un rol Administrador para los usuarios que puedan hacer modificaciones a la configuración del sitio. Puedes crear los roles en Administer > User management > Roles
  • Asigna los roles a los usuarios. Con los roles creados, edita cada una de las cuentas de los usuarios y asignales su rol. Las cuentas de los usuarios estan en Administer > User management > Users
  • Configura los permisos. Aunque no hayas creado ningún rol, asegúrate de configurar los permisos. Dirígete a Administer > User management > Access control y comienza por deseleccionar todo. Ahora vuelve y permite que los usuarios anónimos puedan ver algo o todo el contenido, pero nunca lo dejes agregar contenido o administrar tu sitio. Si planeas dejar que otras personas tengan cuentas en tu sitio, restringe los permisos a lo mínimo necesario. No asignes un permiso a menos que sepas que un rol lo necesita.

Con estos pasos comenzamos por definir las politicas de creación de cuentas y controlamos el acceso al contenido en los casos que lo consideramos necesario. Luego de haber ajustado la configuración de las cuentas y los permisos, vamos a restringir el contenido que ven nuestros usuarios (próximamente).