Descubre la nueva forma para

Aprender Drupal

Domina Drupal con ejercicios prácticos y reales, diseñados para que estés listo para el mundo laboral.

Empieza ahora

Cómo funciona DrupalXpert

Programas de formación completos y flexibles, adaptados a tus objetivos de aprendizaje.

Rutas de aprendizaje

Accede a lecciones estructuradas que se adaptan a tu ritmo y a tus metas.

Proyectos prácticos

Participa en ejercicios y proyectos reales que mejoran tu capacidad para resolver problemas.

Entorno de trabajo simulado

Adquiere experiencia con escenarios que reflejen los desafíos del mundo profesional.

Experiencia en la industria

Prepárate para destacar en entornos profesionales con confianza y habilidad.

Blogs recientes

Cómo configurar DDEV con WSL2, Docker y SSL en Windows

Administrar certificados SSL tanto en Windows como en WSL2 puede ser complicado debido a la complejidad de las autoridades de certificación, las diferencias entre los almacenes de certificados del sistema y del usuario, y los detalles intrincados de las cadenas de certificados. Ya sea que utilices mkcert en Windows o lo integres en tu entorno WSL2, comprender estos factores es fundamental para lograr una configuración HTTPS segura y sin contratiempos.

Protección de cuentas de usuario

Drupal es una herramienta genial para crear comunidades o grandes repositorios de usuarios, y con esa capacidad viene la responsabilidad de proteger las cuentas. Tanto si gestionas un foro abierto, un sitio de noticias con editores limitados o una tienda online, la autenticación segura es fundamental.

Snippets recientes

Actualizar datos en una tabla

Actualizar datos en una tabla
                

/**
* Updates data in a custom table.
*/
function my_module_update_data() {
    \Drupal::database()->update('custom_table')
        ->fields([
            'status' => 0,
        ])
        ->condition('id', 5, '=')
        ->execute();
}
 

Actualizar traducciones con Drupal

Actualizar traducciones con Drupal
                

/**
* Updates the translations installed on the system.
*/
drush locale:update;

Alteración de una vista para añadir contextos de caché

Alteración de una vista para añadir contextos de caché
                

/**
* Implements hook_entity_view_alter() to add cache contexts.
*/
function my_module_entity_view_alter(array &$build, \Drupal\Core\Entity\EntityInterface $entity, \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display, $view_mode) {
   $build['#cache']['contexts'][] = 'user.permissions';
}
 

Alteración de una vista para añadir contextos de caché

Alteración de una vista para añadir contextos de caché
                

/**
* Implements hook_entity_view_alter() to add cache contexts.
*/
function my_module_entity_view_alter(array &$build, \Drupal\Core\Entity\EntityInterface $entity, \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display, $view_mode) {
   $build['#cache']['contexts'][] = 'user.permissions';
}
 

Array renderizable con metadatos de caché

Array renderizable con metadatos de caché
                

/**
* Render array with Cache API metadata.
*/
$form = [];
$form['content'] = [
   '#markup' => 'Hello World',
   '#cache' => [
      'contexts' => ['user.permissions'],
      'tags' => ['node_list'],
      'max-age' => 3600,
   ],
];
return $form;
 

Array renderizado con contextos de caché

Array renderizado con contextos de caché
                

$build = [
   '#markup' => 'Hello, world!',
   '#cache' => [
      'contexts' => ['user.roles'],
   ],
];
return $build;
 

Asignar un valor de configuración con Drush

Asignar un valor de configuración con Drush
                

/**
* Saves a configuration value directly.
*/
drush config:set system.site name "New Site Name";
 

Borrar un registro

Borrar un registro
                

/**
* Deletes a record from a custom table.
*/
function my_module_delete_data() {
    \Drupal::database()->delete('custom_table')
        ->condition('id', 10, '=')
        ->execute();
}
 

Comprobar información de campos configurables con Drush

Comprobar información de campos configurables con Drush
                

/**
* Lists the configurable fields for a bundle.
*/
drush field:info node article;
 

Comprobar el directorio de Drupal con Drush

Comprobar el directorio de Drupal con Drush
                

/**
* Displays the directory path for modules, themes or other items.
*/
drush drupal:directory modules/contrib;
// Alias: dr:dir
// Output: /var/www/html/modules/contrib
 

Comprobar la información de entorno con Drush

Comprobar la información de entorno con Drush
                

/**
* Displays a summary of the status of the Drupal and Drush environment.
*/
drush core:status;

 

Comprobar informe de estado con Drush

Comprobar informe de estado con Drush
                

/**
* Displays the Drupal site requirements report.
*/
drush core:requirements
 

Comprobar actualización de traducciones con Drush

Comprobar actualización de traducciones con Drush
                

/**
* Check for updates in translations.
*/
drush locale:check;

Limpiar el estado de actualizaciones de traducciones con Drush

Limpiar el estado de actualizaciones de traducciones con Drush
                

/**
* Clears the status of translation updates.
*/
drush locale:clear-status;
 

Comando Post-Despliegue

Comando Post-Despliegue
                

/**
* Executes post-deployment commands.
*/
drush deploy;
 

Comprobar actualización de traducciones con Drush

Comprobar actualización de traducciones con Drush
                

/**
* Check for updates in translations.
*/
drush locale:check;

Comprobar el directorio de Drupal con Drush

Comprobar el directorio de Drupal con Drush
                

/**
* Displays the directory path for modules, themes or other items.
*/
drush drupal:directory modules/contrib;
// Alias: dr:dir
// Output: /var/www/html/modules/contrib
 

Comprobar información de campos configurables con Drush

Comprobar información de campos configurables con Drush
                

/**
* Lists the configurable fields for a bundle.
*/
drush field:info node article;
 

Comprobar informe de estado con Drush

Comprobar informe de estado con Drush
                

/**
* Displays the Drupal site requirements report.
*/
drush core:requirements
 

Comprobar la información de entorno con Drush

Comprobar la información de entorno con Drush
                

/**
* Displays a summary of the status of the Drupal and Drush environment.
*/
drush core:status;

 

Consulta Select simple

Consulta Select simple
                

/**
* Fetches data from a custom table.
*/
function my_module_get_data() {
    $query = \Drupal::database()->select('custom_table', 'ct');
    $query->fields('ct', ['id', 'name', 'status']);

    $result = $query->execute()->fetchAll();

    return $result;
}
 

Crear un campo nuevo con Drush

Crear un campo nuevo con Drush
                

/**
* Creates a new field for an entity bundle.
*/
drush field:create node article field_tags taxonomy_term;
 

Crear un usuario administrador con Drush

Crear un usuario administrador con Drush
                

/**
* Create a new user with a password.
*/
drush user:create username --mail=user@example.com --password=password;
 

Crear un usuario administrador con Drush

Crear un usuario administrador con Drush
                

/**
* Create a new user with a password.
*/
drush user:create username --mail=user@example.com --password=password;
 

Crear un campo nuevo con Drush

Crear un campo nuevo con Drush
                

/**
* Creates a new field for an entity bundle.
*/
drush field:create node article field_tags taxonomy_term;
 

Borrar un registro

Borrar un registro
                

/**
* Deletes a record from a custom table.
*/
function my_module_delete_data() {
    \Drupal::database()->delete('custom_table')
        ->condition('id', 10, '=')
        ->execute();
}
 

Exportar todo un proyecto con Drush

Exportar todo un proyecto con Drush
                

/**
* Creates an archive dump that includes code, files and database.
*/
drush archive:dump --destination=/path/to/archive.tar.gz --overwrite --exclude-code-paths=web/sites/default/settings.php
// Alias: N/A
// Output: Archive created at /path/to/archive.tar.gz
 

Eliminar entidades con Drush

Eliminar entidades con Drush
                

/**
* Removes content entities from a given bundle.
*/
drush entity:delete node --bundle=article;
 

Eliminar un campo con Drush

Eliminar un campo con Drush
                

/**
* Removes a field from a bundle.
*/
drush field:delete node article field_tags;
 

Exportar traducciones conDrush

Exportar traducciones conDrush
                

/**
* Export translations to a .po file.
*/
drush locale:export fr --file=translations.fr.po;
 

Exportar todo un proyecto con Drush

Exportar todo un proyecto con Drush
                

/**
* Creates an archive dump that includes code, files and database.
*/
drush archive:dump --destination=/path/to/archive.tar.gz --overwrite --exclude-code-paths=web/sites/default/settings.php
// Alias: N/A
// Output: Archive created at /path/to/archive.tar.gz
 

Exportar traducciones conDrush

Exportar traducciones conDrush
                

/**
* Export translations to a .po file.
*/
drush locale:export fr --file=translations.fr.po;
 

Generar código con Drush

Generar código con Drush
                

/**
* Generates code base for different elements (modules, plugins, etc.).
*/
drush generate;
 

Generar código con Drush

Generar código con Drush
                

/**
* Generates code base for different elements (modules, plugins, etc.).
*/
drush generate;
 

Obtiene el estado del modo mantenimiento.

Obtiene el estado del modo mantenimiento.
                

/**
* Shows whether the maintenance mode is activated or not.
*/
drush maint:get;
Alias: N/A
Output: Maintenance mode is OFF.
 

Importar traducciones con Drush

Importar traducciones con Drush
                

/**
* Import translations from a .po file.
*/
drush locale:import fr translations.fr.po;
 

Importar traducciones con Drush

Importar traducciones con Drush
                

/**
* Import translations from a .po file.
*/
drush locale:import fr translations.fr.po;
 

Insertar datos en una tabla

Insertar datos en una tabla
                

/**
* Inserts a record into a custom table.
*/
function my_module_insert_data() {
    \Drupal::database()->insert('custom_table')
        ->fields([
            'name' => 'Sample Name',
            'status' => 1,
        ])
        ->execute();
}
 

Insertar datos en una tabla

Insertar datos en una tabla
                

/**
* Inserts a record into a custom table.
*/
function my_module_insert_data() {
    \Drupal::database()->insert('custom_table')
        ->fields([
            'name' => 'Sample Name',
            'status' => 1,
        ])
        ->execute();
}
 

Instalar y desinstalar un módulo con drush en Drupal

Instalar y desinstalar un módulo con drush en Drupal
                

/**
* Enable a specific module.
*/
drush en module_name -y;
 

/**
* Uninstall a specific module.
*/
drush pm:uninstall module_name -y;
 

Instalar y desinstalar un módulo con drush en Drupal

Instalar y desinstalar un módulo con drush en Drupal
                

/**
* Enable a specific module.
*/
drush en module_name -y;
 

/**
* Uninstall a specific module.
*/
drush pm:uninstall module_name -y;
 

Invalidación de caché basado en etiquetas

Invalidación de caché basado en etiquetas
                

/**
* Invalidate cache entries tagged with 'my_module_tag'.
*/
\Drupal::cache()->invalidateTags(['my_module_tag']);
 

Invalidación de caché basado en etiquetas

Invalidación de caché basado en etiquetas
                

/**
* Invalidate cache entries tagged with 'my_module_tag'.
*/
\Drupal::cache()->invalidateTags(['my_module_tag']);
 

Limpiar el estado de actualizaciones de traducciones con Drush

Limpiar el estado de actualizaciones de traducciones con Drush
                

/**
* Clears the status of translation updates.
*/
drush locale:clear-status;
 

Mostrar todos los comandos de Drush

Mostrar todos los comandos de Drush
                

/**
* Displays a complete list of Drush commands.
*/
drush list;
 

Mostrar todos los comandos de Drush

Mostrar todos los comandos de Drush
                

/**
* Displays a complete list of Drush commands.
*/
drush list;
 

Obtiene el estado del modo mantenimiento.

Obtiene el estado del modo mantenimiento.
                

/**
* Shows whether the maintenance mode is activated or not.
*/
drush maint:get;
Alias: N/A
Output: Maintenance mode is OFF.
 

Sobrescribir un campo base con Drush

Sobrescribir un campo base con Drush
                

/**
* Creates an overwrite of a base field for a bundle.
*/
drush field:base-override-create node article field_example;
 

Comando Post-Despliegue

Comando Post-Despliegue
                

/**
* Executes post-deployment commands.
*/
drush deploy;
 

Eliminar un campo con Drush

Eliminar un campo con Drush
                

/**
* Removes a field from a bundle.
*/
drush field:delete node article field_tags;
 

Eliminar entidades con Drush

Eliminar entidades con Drush
                

/**
* Removes content entities from a given bundle.
*/
drush entity:delete node --bundle=article;
 

Array renderizado con contextos de caché

Array renderizado con contextos de caché
                

$build = [
   '#markup' => 'Hello, world!',
   '#cache' => [
      'contexts' => ['user.roles'],
   ],
];
return $build;
 

Array renderizable con metadatos de caché

Array renderizable con metadatos de caché
                

/**
* Render array with Cache API metadata.
*/
$form = [];
$form['content'] = [
   '#markup' => 'Hello World',
   '#cache' => [
      'contexts' => ['user.permissions'],
      'tags' => ['node_list'],
      'max-age' => 3600,
   ],
];
return $form;
 

Asignar un valor de configuración con Drush

Asignar un valor de configuración con Drush
                

/**
* Saves a configuration value directly.
*/
drush config:set system.site name "New Site Name";
 

Consulta Select simple

Consulta Select simple
                

/**
* Fetches data from a custom table.
*/
function my_module_get_data() {
    $query = \Drupal::database()->select('custom_table', 'ct');
    $query->fields('ct', ['id', 'name', 'status']);

    $result = $query->execute()->fetchAll();

    return $result;
}
 

Sobrescribir un campo base con Drush

Sobrescribir un campo base con Drush
                

/**
* Creates an overwrite of a base field for a bundle.
*/
drush field:base-override-create node article field_example;
 

Actualizar datos en una tabla

Actualizar datos en una tabla
                

/**
* Updates data in a custom table.
*/
function my_module_update_data() {
    \Drupal::database()->update('custom_table')
        ->fields([
            'status' => 0,
        ])
        ->condition('id', 5, '=')
        ->execute();
}
 

Actualizar traducciones con Drupal

Actualizar traducciones con Drupal
                

/**
* Updates the translations installed on the system.
*/
drush locale:update;

Ver documentación del core

Ver documentación del core
                

/**
* Displays documentation on a specific Drush topic.
*/
drush core:topic;
 

Ver documentación del core

Ver documentación del core
                

/**
* Displays documentation on a specific Drush topic.
*/
drush core:topic;