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. 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.

Ir al contenido