nodes
Nodes#
Partage d'un article#
Share sur Facebook#
Share sur Twitter#
Share sur Linkedin#
Share sur Whatsapp#
Share sur Messenger (Ă tester uniquement sur mobile)#
- Necessite d'avoir une app_id valide
Traduire les textes d'un thĂšme#
Lorsque le code a été livré pour pouvoir le saisir en BO, il faut :
Vider le cache
Aller sur la page oĂč la traduction est prĂ©sente
Vider le cache Ă nouveau
Pour saisir les traduction, il faut se rendre sur le BO :
Configuration => Regional and language => User interface translation
Rechercher le texte à traduire (Go to next page dans l'exemple) et la langue souhaitée et saisir la valeur attendue.
Obtenir l'URL / URI d'un reference field en twig#
The url is not an entity field, so you can't access it directly. Also the entity methods to generate url/links are not accessible in Twig because of the sandbox policies. You can build a path though, if you have the id of the referenced node:
Champ de type liste#
To get the value of a list element :
To get the label :
If the field has multiple values :
Champ de type lien#
Afficher le titre d'un champ de type lien#
Tester si un champ de type lien est externe#
Mettre l'url d'un champ de type lien (link)#
Formater une date dans Twig#
Pour personnaliser une date
Pour prendre en compte une timezone
Connaitre les jours de différence entre 2 dates#
Affiché la date en Français#
ie: 17 novembre 2021
Pour afficher les jours :#
Pour afficher les heures:#
Récupérer et formater la date de création et modification d'un node#
Afficher l'url d'un node#
Truncate un champ pour afficher un résumé#
Il suffit de choisir l'option "coupé" dans le format au niveau du format d'affichage du node.
On utilisera alors {{content.field_name}} pour l'afficher
Afficher l'url d'une vue#
(page_1 correspond à l'id de la page de la vue). Utiliser un tel chemain est trÚs important pour les traductions puisque le chemin proposé sera automatiquement dans celui de la langue.
Afficher un node suivant un display mode#
A l'aide de Twig tweak :
Deux affichages diffĂ©rents pour un mĂȘme node#
Pour pouvoir avoir 2 urls diffĂ©rentes pour un mĂȘme node, utiliser le module https://www.drupal.org/project/view_mode_page
Ajouter une classe sur un field#
- Pour ajouter une classe "cp-box__btn" sur le lien des field_tags, montheme.theme doit ĂȘtre modifiĂ©:
Retrouver le nombre d'éléments d'un field#
{{ kint(row.content['#flagging'].getIterator().field_liens) }}
Import de texte dans un ckeditor#
Drupal 8 propose des filtres pour modifier du contenu de l'admin vers le front : On met par exemple un tag <fn> dans son texte en admin et cela devient un
<span class="footnote"> sur le front.
Pour créer des filtres, cf. le module customization
Pour exécuter ces filtres sur un texte avant de le sauvegarder lors d'un import par exemple :
check_markup($article['content'], 'html_complet')
Lister les entités référencées#
Pour les paragraphes:
Créer un node par programmation#
- aller chercher une image via URL et la sauvegarder
- rechercher un terme dans une taxonomie
upload de fichier de puis le front#
Pour permettre l'upload de fichier depuis le front et associer ces fichiers à un node, voici comment procéder (nous utilisons dropzone et axios dans cet exemple, mais il est possible d'utiliser une autre librairie ou un input de type file):
- Créer un champ de type File dans le node souhaité (on peut autoriser plusieurs valeurs
Allowed number of values) - Activer le module JSON:API et activer
Accept all JSON:API create, read, update, and delete operations. - Dans le fichier du theme
mytheme.libraries.ymlajouter les dépendances dropzone :
- Dans votre twig node, voici un exemple pour un champ de node de type file appelé ici
field_presentation. Noter le premier appel pour récupérer un csrf-token puis les headers etaxios.defaults.withCredentials = true(essentiels) pour que Drupal autorise l'upload.
Récupérer l'ID de l'auteur d'un node#
Appeler un node (ou une autre URL) en popin#
Drupal8 le gÚre de base. Il faut faire ça :
La librairie jqueryUI est utilisée dans ce cas.
Et pour resizer automatiquement la modale, utiliser ce script js :
Variables globales par environnement#
- Séparer les environnement dans settings.php (cf. clef GA dans le projet energyObs) :
- Dans le fichier .theme :
- ajouter la librairie Settings =>
use Drupal\Core\Site\Settings; - récupérer la variable instanciée dans settings.php =>
$gaKey = Settings::get('gaKey', ''); - créer/modifier une variable afin de récupérer sa valeur en twig =>
$vars['gaKey'] = $gaKey;
- dans le twig =>
{{ gaKey }}
Preview type de contenu#
- cocher "facultatif" dans la section "Apercu avant soumission" dans : structure > type de contenu > (exp: 'article') > modifier
Acces spécifique à la modification d'un node.#
On va utiliser le module nodeaccess dont la config se trouve ici :admin/config/people/nodeaccess
Ce module va nous permettre de donner des droits spécifiques par type de contenu et/ou par node. Bref sécuriser un node.
On peut mĂȘme aller jusqu'Ă donner accĂšs Ă 1 user Ă 1 node.
- Création d'un role.
/admin/people/roles/add
Dans la config du module nodeaccess admin/config/people/nodeaccess on va dire Ă quel type de contenu ce role Ă AccĂšs.
- Allowed Grants - Quel type de droit modifiable dans l'onglet Grants
- View
- Edit
- Delete
- Allowed Roles - Quel Type de role peuvent ĂȘtre customisables
- Authenticated user
- Administrator
- Utilisateur invité
- Administrateur région
- Maison Krug Market All Admin
- Maison Krug Market De Contributor ...
Ensuite par type de contenu choisir les roles.
Pensez à cocher dans le type de contenu souhaité Show grant tab for this node type
Cela permet dans un contenu/node de spécifier les droits.
Dans le contenu de votre choix il y a un onglet Grants.
Vous pouvez mĂȘme aller jusqu'Ă accorder l'accĂšs ou la modification Ă un seul user sur un contenu !.
Creation du role contributor#
- Ajouter un rĂŽle - ie Maison Moet Marche DE Contributor
- Ajouter permission nécessaire - dépend du projet
Dans le config du module nodeaccess il faut autoriser le nouveau rĂŽle
- Dans
admin/config/people/nodeaccessdansAllowed Roleset cocher le nouveau role Ensuite il pourra ĂȘtre affectĂ© Ă un node.
Autorisation pour accéder au site#
- Créer un contenu de type Brand Plan
- l'apeller
Moet DE - My Brand Plan - Dans l'onglet
GrantsCocher :
ViewetEditpour Maison Moet Marche DE ContributorViewpour Maison Moet Marche DE Reader