El fin de vida de Drupal 7 ha llegado finalmente, y si estás entre aquellos que han pospuesto la actualización debido a limitaciones de recursos o un código base complejo, esta guía está aquí para ayudarte. Aquí te explicamos cómo navegar la transición a Drupal 10, asegurando que tu sitio permanezca seguro y operativo.
Como propietario de un negocio o desarrollador, estás íntimamente familiarizado con las fortalezas y debilidades de tu sitio. Comienza por listar qué características son esenciales, aquellas que puedes descartar y aquellas que podrían necesitar una reconsideración o simplificación. Las soluciones personalizadas de Drupal 7 podrían ahora lograrse con módulos contrib modernos, simplificando potencialmente tu migración.
Audit of Content and Modules
Si tu sitio ha evolucionado desde el lanzamiento de Drupal 7 en 2011, es probable que hayas acumulado algo de desorden. Echa un buen vistazo a tu estructura de contenido –piensa en tipos de contenido, bloques, entidades– e identifica cualquier ineficiencia. Podrías considerar reestructurar tu contenido en Drupal 10, aprovechando las nuevas características o simplemente simplificando las cosas. Usa herramientas como Excalidraw para mapear visualmente y optimizar tu contenido.
drush pm-list --type=Module --status=enabled --format=table
drush pm-list --type=Theme --status=enabled --format=tableAhora que tienes una lista de todos tus módulos y temas, puedes verificar su estado en Drupal Modules y Drupal Themes. Si un módulo o tema no es compatible, identifica su rol en tu sitio y busca alternativas modernas en la sección contrib de Drupal 10.
Create Your Local Drupal 10 Environment
Aquí estamos configurando un sitio Drupal 10 nuevo. Para este paso, necesitarás DDEV, Docker o OrbStack y Composer instalados en tu máquina local.
Setting Up the Project
# Cree un nuevo proyecto Drupal usando DDEV en una nueva carpeta `drupal_11_new_project`
composer create-project drupal/recommended-project:^11 drupal_11_new_project
cd drupal_11_new_project
# Configurar DDEV para el proyecto Drupal
ddev config --project-type=drupal11 --docroot=web --php-version=8.4
ddev startChecking Installation Status
# Include Drush to your project
ddev composer require drush/drush
# Run drush status to see if the environment is installed correctly
ddev drush statusEste comando generará algo como:
Drupal version : 11.1.1
Site URI : https://new-tobedeleted.ddev.site
DB driver : mysql
DB hostname : db
DB port : 3306
DB username : db
DB name : db
PHP binary : /usr/bin/php8.3
PHP config : /etc/php/8.3/cli/php.ini
PHP OS : Linux
PHP version : 8.3.12
Drush script : /var/www/html/vendor/bin/drush.php
Drush version : 13.3.3.0
Drush temp : /tmp
Drush configs : /var/www/html/vendor/drush/drush/drush.yml
Drupal root : /var/www/html/web
Site path : sites/defaultInstalling Drupal
# Install your Drupal site
ddev drush site:install -yAgregando Módulos y Temas Contrib: Ahora, podemos instalar módulos y temas contrib. Aquí te explicamos cómo:
- Primero, verifica si el módulo o tema es compatible con Drupal 10 visitando su página de proyecto en Drupal.org. Busca la compatibilidad en la sección de descargas, por ejemplo, Works with Drupal: ^9.4 || ^10 || ^11.
- Luego, usa Composer para agregarlos a tu proyecto:
# Example of how to include contrib modules/themes
ddev composer require 'drupal/pathauto:^1.13'
ddev composer require 'drupal/webform:^6.2'
ddev composer require 'drupal/gin'Después de la instalación, estos módulos deberían aparecer en el directorio web/modules/contrib. Para habilitarlos:
# Enable pathauto and webform Modules
ddev drush pm:install pathauto webform
ddev drush theme:install gin -y
# Optional set admin theme with drush
ddev drush config-set system.theme admin ginAhora puedes comenzar a crear tu estructura de contenido a través de la interfaz de usuario de Drupal 10. Para acceder a tu entorno local, necesitarás:
# Open Site in browser
ddev launch
# Login to Admin UI
ddev drush user:loginCustom Theme Setup
Una vez que hayas definido tu estructura de contenido, el siguiente paso es personalizar la funcionalidad de tu sitio para que se ajuste a tus necesidades. Vamos a profundizar en la configuración de un nuevo tema. Cuando decidas crear un tema con soporte para Single-Directory Components (SDC), primero necesitarás elegir tu tema base. Si vas a usar un tema hijo, asegúrate de que ya esté instalado en tu sistema.
# Generate fresh theme
mkdir web/themes/custom
ddev drush generate theme
# Enable your new theme
ddev drush config-set system.theme default [your_theme_name]
# Using Single-Directory Components
ddev drush en sdc
ddev drush generate sdc
# if you follow the steps correctly
# new component should be generated
# in web/themes/custom/[your_theme_name]/componentsCon SDC, los componentes se incluyen o incrustan fácilmente en plantillas Twig usando funciones include o embed:
{% embed 'your_theme_name:your_component_name' with {
title: node.label,
subtitle: node.field_subtitle.value,
image: node.field_image.entity.uri.value|file_url
} %}Para aquellos que luchan con diseños HTML, considera usar Display Suite o Layout Builder. Estos módulos simplifican la gestión de diseños dentro de Drupal, reduciendo la necesidad de codificación personalizada:
- Display Suite permite diseños complejos con codificación mínima, ofreciendo control directo sobre las configuraciones de visualización en Drupal.
- Layout Builder proporciona una interfaz de arrastrar y soltar para crear diseños personalizados para entidades sin escribir código.
- Single-Directory Components (SDC), cuando se combinan con herramientas como Storybook, ofrecen un enfoque único:
- Aislamiento de Componentes: Puedes trabajar en componentes independientemente de la configuración completa de Drupal, lo que cambia las reglas del juego para el desarrollo.
- Biblioteca de Diseño: Mantén un sistema de diseño vivo fuera de Drupal, lo que es invaluable para la consistencia en diferentes plataformas o para que los equipos de diseño lo referencien.
He estado experimentando con esta configuración, y debo decir que el proceso de iterar entre el diseño en Storybook y la implementación en Drupal ha sido increíblemente fluido.
Custom Module Setup
Ahora estamos listos para migrar tus funcionalidades personalizadas. Puedes generar el esqueleto de tu módulo con la estructura necesaria y el código boilerplate, adaptándolo a las convenciones de Drupal 10 usando estos comandos:
mkdir web/modules/custom
ddev drush generate module
## Scaffold your module with the necessary structure
## remember to include your custom module name
## Generate a Controller
ddev drush generate controller
## Generate a Configuration Form
ddev drush generate form:config
## Generate a Custom Service
ddev drush generate serviceTransfiere el código personalizado real de Drupal 7 a Drupal 10. Esto podría involucrar reescribir código debido a cambios en la API y la estructura.
Migrating Drupal 7 to Drupal 10
Drupal 7
- Crea una copia de seguridad completa de tu sitio Drupal 7
ddev drush sql-dump > d7_database_backup.sql
tar -czf files_backup.tar.gz /path/to/d7/sites/default/files- Instala los Módulos de Migración Requeridos
ddev composer require drupal/migrate_plus drupal/migrate_tools drupal/migrate_upgrade
ddev drush pm:install migrate_plus migrate_tools migrate_upgrade -y- Importa a una nueva base de datos en el mismo entorno MYSQL con la base de datos de Drupal 10
# Import your Drupal 7 database into a new database that Drupal 10 can access
mysql -u root -p d7_source < d7_database_backup.sql
# Use Drush to set up the migration process.
ddev drush migrate:upgrade --configure-only --db-url=mysql://db_user:db_pass@db_host/d7_source
# Check the available migrations and their statuses
ddev drush migrate:status
# Run the migration for all configured groups
ddev drush migrate:import --all
# Run the migration for specific id
ddev drush migrate:import [migration-id]
# Run the migration for specific Group
ddev drush migrate:import --group=[group-name]
# Reverses the changes made by a specific migration. This will remove the content or data imported by the migration.
ddev drush migrate:rollback [migration-id]
# Resets the status of a migration to idle. Use this when a migration is stuck in an "in-progress" or "failed" state
ddev drush migrate:reset-status [migration-id]
# Stops an ongoing migration process. This is useful if a migration is taking too long or causing server issues.Your Drupal 10
Si todo salió bien, ahora deberías tener un nuevo sitio web Drupal 10 listo para publicarse. Cuando trabajas en equipo, usar Git con ramas específicas para características y código principal es crucial para evitar bloqueos en el flujo de trabajo. Aquí te explicamos cómo manejarlo
Content Structure & Style
- Rama Principal: Esta debería ser tu código estable y listo para producción. Solo fusiona características bien probadas aquí.
- Ramas de Características: Úsalas para nuevas características o correcciones de errores. Nómbralas de manera descriptiva, como feature/new-login-system o bugfix/fix-login-issue.
- Sincronizando Archivos de Configuración: Sincronizar regularmente tus archivos de configuración puede ayudar a prevenir conflictos de fusión. Aquí te explicamos cómo:
# Export Drupal configuration to a directory.
ddev drush config:export
# Import config from the config directory.
ddev drush config:importPara instalar e importar configuraciones con éxito, asegúrate de que tu settings.php incluya el directorio de configuración
$settings['config_sync_directory'] = dirname(DRUPAL_ROOT) . '/config/sync';# create config directory in you project root
mkdir -p config/syncPerformance Tuning Post-Migration
Después de la migración, podría ser necesario ajustar el rendimiento, especialmente con configuraciones complejas. Aquí hay algunas herramientas que pueden ayudar
ddev composer require drupal/devel drupal/webprofiler
ddev drush pm:install devel webprofiler