Drupal multisitio: todo lo que necesita saber

¿Qué es un multisitio, por qué lo necesitaría y por qué Drupal combinado con Domain Access es la mejor opción?

¿Qué es un multisitio?

Cuando digo multisitio, me refiero a un sitio web que consta de una única base de código y base de datos, pero que tiene la funcionalidad para crear virtualmente varios sitios web. Entonces, un visitante puede acceder a estos sitios a través de diferentes nombres de dominio, pero en realidad todos se sirven de la misma fuente. 

Un ejemplo sería una empresa que tiene un sitio web corporativo y un sitio web separado donde publican vacantes dentro de la empresa. Ambos sitios tienen su propio nombre de dominio y, si es necesario, su propia apariencia.

Multisitio vs multidominio 

Cuando desee crear varios sitios web a partir de una base de código con Drupal, tiene dos opciones:

  1. Funcionalidad multisitio tradicional: aquí  es donde se comparte la base de código (archivos para el núcleo, módulos y temas), pero cada sitio tiene su propia base de datos. Tener una solución multisitio como esta puede ser útil cuando tiene varios sitios web que tienen diferentes necesidades. Piensa en módulos o en una configuración específica. Debido a que la base de datos no se comparte, cada sitio web tiene su propio contenido, usuarios y funcionalidad. 
  2. Múltiples sitios web con el módulo domain access : con el módulo de "acceso al dominio" es posible crear diferentes  dominios  dentro de su sitio web Drupal. Se puede acceder a cada dominio a través de su propia URL. En este caso, la base de datos se comparte, lo que permite compartir contenido y usuarios entre los sitios. Además, si se crea una nueva funcionalidad, como un nuevo tipo de párrafo o una vista de API de búsqueda, todos los sitios pueden beneficiarse de estas mejoras.

Prefiero la segunda opción porque compartir contenido, usuarios y mejoras entre los sitios web es una de las cosas que hace que una solución multisitio sea excelente. Entonces, cuando hablo de un multisitio, me refiero a una solución multisitio con Domain Access. 

¿Por qué querría una solución multisitio?

Si tiene la tarea de mantener varios sitios web, que son más o menos iguales en lo que respecta a la funcionalidad, entonces un multisitio es el camino a seguir.

Las ventajas son:

  • Reducción de costos. Solo tiene que mantener una base de código. La actualización de la corrección de errores en el multisitio se transferirá automáticamente a todos los demás sitios.
  • Comparta fácilmente contenido, medios y usuarios entre varios sitios.

La desventaja es que cuando uno de los sitios produce un error, posiblemente este sea el caso de todos sus sitios. Además, cuando se comparte la base de datos, significa que si un sitio es pirateado, todos lo son. Por eso es importante mantener actualizado su código Drupal y siempre instalar actualizaciones de seguridad lo más rápido posible. 

¿Cómo funciona la creación de una configuración multisitio con Drupal?

Por ahora no haré un tutorial en profundidad, pero quiero darte una impresión global sobre los pasos que debes seguir para crear un multisitio con Drupal.

  1. Instale el módulo de acceso al dominio.
  2. Cree uno o varios  registros de dominio .
  3. Cada registro de dominio puede tener su propio nombre de dominio (o URL). Por ejemplo, el sitio web corporativo se puede ubicar en www.company.com, mientras que el sitio de trabajos específicos puede tener www.jobsatcompany.com. También es posible trabajar con subdominios como jobs.company.com.
  4. Ahora puede crear contenido (nodos) o usuarios y asignarlos a uno o varios dominios.

Un ejemplo práctico de cómo puede utilizar la funcionalidad multisitio de Drupal

Supongamos que tiene una configuración de varios sitios con un dominio dedicado para un sitio web corporativo y un dominio adicional para ofertas de trabajo. Ambos sitios web necesitan una descripción general de las últimas noticias. A continuación se explica cómo lograr esto con Drupal y Domain Access:

  1. Creas una página de 'Noticias' y la asignas a ambos dominios. 
  2. Incluya un elemento de menú en esta página en el menú principal. Debido a que la página 'Noticias' está asignada tanto a la empresa como al sitio de trabajos, el elemento del menú estará visible en ambos sitios.
  3. Cree un bloque con vistas que muestren todas las noticias. Dentro de esta vista, puede filtrar las noticias por dominio activo. 
  4. Publique este bloque en la página 'Noticias' creada en el paso 2.
  5. Cree algunas noticias y asígnelas al sitio corporativo o laboral.

Dependiendo del dominio o sitio que esté viendo, esta página de 'Noticias' recién creada solo mostrará los elementos asignados a este dominio. De esta manera, puede compartir funciones como una página de resumen de noticias entre varios sitios. Solo tiene que crear la vista una vez. En este ejemplo, también es posible publicar una noticia en ambos dominios. Esto garantizará que el artículo esté disponible en la página de noticias de ambos sitios.

Como puede ver, usar Drupal y Domain Access para crear un multisitio puede ahorrarle mucho tiempo.

Reutilizar un tema para varios sitios

Otra cosa interesante de usar una solución multisitio con Drupal y Domain Access es que puede reutilizar fácilmente un tema. Por lo tanto, puede usar el mismo tema para su sitio web corporativo y de empleos. Ambos sitios se beneficiarán de todas las mejoras que realice en este tema.

También puede utilizar un tema totalmente diferente para un dominio o sitio específico. Pero lo que es aún mejor es que puedes crear un subtema. Digamos, por ejemplo, que desea que su sitio web corporativo tenga un encabezado con un fondo rojo, pero desea que el encabezado de su sitio web de empleos tenga un fondo azul. En este caso, puede crear un subtema para su sitio web de trabajos y solo tiene que sobrescribir la regla CSS que especifica el color de fondo del encabezado. Si realiza un cambio en el tema principal, esto también será visible en el subtema, excepto por las reglas CSS que se sobrescriben. Brindándole la ventaja de tener que mantener un tema, pero aún así la libertad suficiente para ajustar donde sea necesario para otros sitios.

Desventaja de crear un multisitio con Drupal

Cuando eliges crear una solución multisitio con Drupal y Domain Access, existe una gran desventaja. Y esa es la compatibilidad de los módulos. En algún caso, desea compartir la funcionalidad entre sitios, pero ambos necesitan sus propios valores. Si un módulo no es compatible con Domain Access, no será posible ingresar valores específicos para dominios individuales. 

Un ejemplo de la vida real que he encontrado es intentar crear un mapa del sitio XML para varios dominios.

Hay dos módulos disponibles que pueden crear un mapa del sitio XML para su sitio web Drupal. Pero en ambos casos no pude hacer que funcionaran como quería. En última instancia, he creado fuentes RSS independientes que contienen todo el contenido de los diferentes sitios filtrados por dominio que también son aceptados por servicios como Google Search Console .

Ahorre tiempo y dinero creando fácilmente varios sitios web

Una solución multisitio construida con Drupal y Domain Access tiene muchas ventajas. Puede crear fácilmente un nuevo sitio web y compartir contenido y usuarios entre los diferentes dominios. Solo tienes que mantener actualizada una instalación de Drupal. Pero asegúrese de hacerlo, porque si su Drupal es inseguro, todos sus sitios son vulnerables. También es posible compartir la funcionalidad entre los sitios ahorrando tiempo al recrearla en cada configuración diferente de Drupal. El mayor inconveniente es la compatibilidad de módulos de terceros. Esto puede obligarlo a ser creativo en la búsqueda de una solución o tener que prescindir de la funcionalidad deseada.

¿Tiene alguna pregunta sobre cómo construir su multisitio con Drupal? He creado varios Drupals multisite. Alguno de ellos con más de 160 subdominios/webs que podian compartir contenido entre si.

¿Tienes algún proyecto en mente?

Si quieres hacer algo en Drupal tal vez puedas contratarme.

Ya sea para consultoría, desarrollo o mantenimiento de sitios web Drupal.