Snippets

Drupal 8 - Entité - Champ de base «Liste d'entiers»

Partager cet article :

    $fields['photos_number'] = BaseFieldDefinition::create('list_integer')
      ->setLabel(t('Nombre de photos autorisées'))
      ->setRequired(TRUE)
      ->setSettings(array(
        'allowed_values' => [
          1 => t('1 photo'),
          2 => t('2 photos'),
          3 => t('3 photos'),
        ],
      ))
      ->setDefaultValue('public')
      ->setDisplayOptions('form', array(
        'type' => 'options_buttons',
      ))
      ->setDisplayConfigurable('form', TRUE)
      ->setDisplayConfigurable('view', FALSE);

 

Drupal8 - Installer un module dans le code

Partager cet article :

Pour installer un module via le code dans drupal 8 il faut utiliser le service ModuleInstaller, exemple avec le snippet suivant :

 \Drupal::service('module_installer')->install(['mon_module']);

Les dépendances, si existantes seront automatiquement installées aussi.

Pour activer plusieurs modules à la fois, il faut simplement les ajouter à l'array :

 \Drupal::service('module_installer')->install(['mon_module', 'mon_autre_module']);

La pluaprt du temps vous voudrez utiliser cette solution dans une fonction d'update :

/**
 * Enable modules
 */
function HOOK_update_8001() {
 \Drupal::service('module_installer')->install(['mon_module', 'mon_autre_module']);
}

Drupal 8 - Flag - Récupérer le nombre de « flag » d'une entité

Partager cet article :

Comment récupérer le nombre de fois qu'une entité a été « flaguée » via le module Flag dans drupal 8 :

$flag_number = \Drupal::service('flag.count')->getEntityFlagCounts($mon_entite);
return isset($flag_number['NOM_MACHINE_FLAG']) ? $flag_number['NOM_MACHINE_FLAG'] : 0;

Plus d'exemples : https://www.drupal.org/node/2476349

Sauvegarde d'un dossier via FTP (sans rsync ou ssh)

Partager cet article :

Certains mutualisé n'offrent toujours pas d'accès SSH, donc les backup ne peuvent se faire via rsync par exemple. 

On peut dans ce cas utiliser la commande "lftp" avec la ligne de commande suivante, à adapter selon vos environnement :

lftp ftp://USER:PASSWORD@HOST -e "mirror --delete --only-newer --verbose CHEMIN/DISTANT/A/SAUVEGARDER/ /DOSSIER/LOCAL/;exit;"

Ici le dossier CHEMIN/DISTANT/A/SAUVEGARDER du serveur HOST sera sauvegardé récursivement dans le dossier /DOSSIER/LOCAL/ en se connectant avec l'identifiant USER et le mot de passe PASSWORD.

--delete supprimera les fichiers local qui n'existent pas/plus sur le serveur distant (dans le cas de sauvegardes repetitives)

--only-newer ne retransferera pas les fichiers déjà existants (toujours dans le cas de sauvegardes repetitives)

On peut caler cette ligne directement comme une tache cron pour automatiser les sauvegardes.

Note : lftp n'est parfois pas installé de base, pour l'installer sous debian / ubuntu :

sudo apt-get install lftp

centos / redhat / fedora :

sudo yum install lftp

Si vous voulez utiliser sftp c'est possible :

lftp sftp://USER:PASSWORD@HOST -e "mirror --delete --only-newer --verbose CHEMIN/DISTANT/A/SAUVEGARDER/ /DOSSIER/LOCAL/;exit;"

 

Drupal 8 - Ajouter des variables à l'objet javascript DrupalSettings

Partager cet article :

Via le hook hook_page_attachments() :

/**
 * Implements hook_page_attachments().
 *
 * Add custom variables to DrupalSettings.
 */
function MODULE_page_attachments(array &$attachments) {
  $attachments['#attached']['drupalSettings']['basepath'] = base_path();
  $attachments['#attached']['drupalSettings']['pathtotheme'] = base_path() . drupal_get_path('theme', \Drupal::theme()->getActiveTheme()->getName());
  $attachments['#attached']['drupalSettings']['pathtotfiles'] = PublicStream::basePath();
}

 

Pages