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.
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.
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.
# 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 start# 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/default# 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:
# 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:loginUna 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:
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.
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.
Echo Flow ayuda a empresas canadienses con ingeniería Drupal de nivel empresarial.
ddev drush sql-dump > d7_database_backup.sql
tar -czf files_backup.tar.gz /path/to/d7/sites/default/filesddev composer require drupal/migrate_plus drupal/migrate_tools drupal/migrate_upgrade
ddev drush pm:install migrate_plus migrate_tools migrate_upgrade -y# 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.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
# 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/syncDespué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