Introducción
En proyectos Drupal complejos, muchas veces necesitas duplicar vistas (views) o bloques con ligeras variaciones. Hacerlo manualmente es lento y propenso a errores. Afortunadamente, puedes clonar views o bloques desde código, de forma limpia y controlada.
En esta guía aprenderás cómo clonar views y bloques programáticamente en Drupal 9/10 usando la API de configuración y la entidad adecuada.
Índice
- 1. Cómo clonar una view desde código
- 2. Clonar views exportando YAML y modificando IDs
- 3. Cómo clonar bloques personalizados
- 4. Uso de Config API para duplicación dinámica
- 5. Casos reales donde clonar views o bloques es útil
- 6. Consejos para evitar errores comunes
- 7. Conclusión
1. Clonar views desde código
$original = \Drupal::entityTypeManager() ->getStorage('view') ->load('mi_vista_original'); $clon = $original->createDuplicate(); $clon->set('id', 'mi_vista_clonada'); $clon->set('label', 'Vista Clonada'); $clon->save();
✔️ Este método duplica toda la configuración sin alterar la original.
2. Clonar vistas desde YAML
- Exporta la view original:
drush config:export view.mi_vista
- Cambia el
id
,label
y el archivo - Importa la nueva:
drush config:import
💡 Ideal para clonar múltiples vistas con variantes pequeñas.
3. Clonar bloques programáticamente
Solo aplica a bloques personalizados (tipo basic block):
$original = \Drupal\block_content\Entity\BlockContent::load($id); $clon = $original->createDuplicate(); $clon->setTitle('Bloque Clonado'); $clon->save();
🔁 Puedes cambiar el contenido del cuerpo, título o asignación a regiones.
4. Clonar con Config API
Usa la clase ConfigFactoryInterface
:
$config = \Drupal::configFactory()->getEditable('block.block.mi_bloque'); $data = $config->getRawData(); $data['id'] = 'block.block.mi_bloque_clonado'; \Drupal::service('config.storage')->write('block.block.mi_bloque_clonado', $data);
🧠 Útil para bloques de configuración reutilizable entre entornos.
5. Cuándo clonar vistas o bloques
- 🔄 Para multisitio con configuración base repetida
- 🧪 En staging o testing con vistas personalizadas
- 🌐 Reutilizar bloques en múltiples regiones o idiomas
- 🗂️ Crear versiones A/B de una view sin afectar la original
6. Consejos y precauciones
- ✅ Siempre cambia el
id
antes de guardar - 🔁 Revisa si hay dependencias (taxonomías, campos, roles)
- 📤 Usa config export/import para entornos sincronizados
- 📋 Documenta qué clonas y por qué para mantenimiento futuro
7. Conclusión
Clonar views o bloques desde código te da rapidez, control y escalabilidad en entornos Drupal. Ya sea para pruebas, personalizaciones o replicar funcionalidades, esta técnica te ahorra tiempo y errores.
📩 ¿Necesitas un módulo que lo automatice o gestione desde el backoffice? Escríbenos y lo creamos para ti.