Drupal 8 entityQuery – Récupérer une entité avec les valeurs de ses champs [En résumé]

Drupal

La class entityQuery de drupal permet de récupérer une entité ou une liste d’entités.

Tout les types d’entités sont pris en compte, c’est à dire les node, block, user, paragraphs, …

Une utilisation basique :

$query = \Drupal::entityQuery('node')
->condition('status', 1)
->condition('type', 'article')   
->condition('field_example', 'cheveux'); $nids = $query->execute();

Ici nous récupérons les entités de type article, publié qui comportent dans le champs field_example la valeur égale à cheveux. Un tableau est ainsi renvoyé avec les nodes comportant ces valeurs.

Fences – Drupal nettoyez les wrappers de vos champs

Drupal

Présentation rapide de Fences, l’ami de vos projets Drupal

La frustration courante de Drupal est le rendu natif de ses champs. Les valeurs d’un champs sont rendues au niveau du template dans des wrappers verbeux et toujours accompagnés de balises “<div>”. Fences est là pour vous aider.

Exemple du rendu d’un champs sous drupal : 

<div class="field field-name-field-test field-type-text field-label-above">
  <div class="field-label">Le label de mon champs</div>

  <div class="field-items">
    <div class="field-item even">Mon paragraphe ...</div>
  </div>
</div>

Les problèmes ?

  1. N’est pas nativement SEO friendly pour specifier un h2 par exemple sur l’emploi d’un champs
  2. L’imbrication de div, un mauvais ratio code/contenu peut être approché
  3. La structure du DOM se complexifie trop facilement
  4. Les balises HTML5 non supportés
  5. La personnalisation du rendu plus long en créant par exemple un thème pour votre field ou ressortir les données correctement dans le tpl de votre node, …

Bien sûr Fences n’est pas indispensable, on peut faire sans si on a compris la logique de Drupal. Mais il peut être sympa à implémenter dans vos projets ou la structure de rendu de vos node n’est pas évoluées et peut être simplement gérée avec le gestionnaire d’affichage de Drupal. Fences peut apparaître comme complément à la mise en forme de votre site et de son rendu. Mais aussi pour les projets plus évolués pour une gestion des fields plus évolués dans votre propre process.

Fences

Vous l’aurez compris Fences permet d’optimiser le rendu de vos champs. Une belle optimisation configurable simplement lors de la création de votre champs en choisissant son container.
Fences vous permet tout comme le système natif de Drupal de créer une nouvelle sortie de vos champs et de les mettre en forme à l’aide d’un template associé.

Exemple :

<h3 class="field-label">Le label de mon champs</h3>

<p class="field-foobar">Mon paragraphe ...</p>

Bien sûr vous n’êtes pas obligé d’utiliser Fences, et il n’est pas la seule solution. D’autres alternatives sont présentés sur la fiche du module mais il est à mon unique sens le plus rapide à configurer. Notez tout de même que sa configuration est exportable dans des Features.

Télécharger Fences pour Drupal 7 en version stable : Module
Le module est en cours de développement pour Drupal 8.

Drupal 7.52 | 8.2.3 – Mis à jour de sécurité moyenne

Drupal

4 nouvelles failles de sécurité sont à combler sur vos sites Drupal !

L’équipe de sécurité a mis à jour le core en version 7.52 pour Drupal 7 et en 8.2.3 pour Drupal 8.
La mis à jour signalée comme modérément critique (13/25) sortie le mercredi 16 Novembre 2016 fixe 4 vulnérabilités.
2 sont présentes seulement sur D7 et 3 sur D8. L’une d’entre elles est donc disponible sur les deux versions de Drupal.

Criticité moyenne

L’une des deux plus urgentes concerne la version 8, une faille dans le mécanisme de translittération permet à une URL formatée d’une manière spéciale de mettre le site hors ligne (déni de service). La translittération permet de nettoyer les noms des fichiers sur Drupal, générer les machines names, ou de url propre vers les contenus. Le but est de retirer tout caractères spéciaux et les remplacer par leurs équivalents. Exemple, un “é” en “e”.

L’autre faille de sécurité la plus importante concerne elle Drupal 7. Apparemment, dans certaines circonstances un utilisateur malveillant pourrait construire sa propre URL de soumission pour un formulaire. L’utilisateur lambda pourrait être redirigé sur un site tiers non officiel et abusé de sa confiance (social engineering/manipulation humaine).

Criticité Faible

Une faille concerne D8, où le cache de la page de réinitialisation de mot de passe était apparemment défini sous de mauvaises conditions de réinitialisation. La page peut afficher du contenu indésirable.

La dernière faille concerne D7 et D8, les hook permettant de surcharger les requêtes afin de récupérer des informations supplémentaires depuis la base de données (hook_query_alter, …) permettraient aux utilisateurs malveillants de récupérer des informations sur les term de taxonomies. La gestion de la restriction était faite sur le tag term_access et non taxonomy_term_access.

 

Il est bien sûr conseillé de mettre vos sites à jour.

Source : SA-CORE-2016-005