Planète

Par admin

DrupalCamp Paris 2019

L’association Drupal France et francophonie (drupalfr) annonce le retour dans la capitale de son événement « Drupalcamp Paris 2019 » à l’espace Saint‐Martin à Paris III, les 15, 16 et 17 février 2019, autour du CMS Drupal,

Cette année, l'accent fera une part belle aux retours d'expériences, aux conférences techniques et à la découverte.

  • * Sessions « Business »

Le CMS Drupal est utilisé dans tous les cœurs de métiers comme les médias, les établissements publics, les secteurs du travail temporaire, l'humanitaire, l'industrie, l'agriculture, la construction, les métiers de la bouche, l’hôtellerie, la santé, la culture, l'édition.
Découvrez des retours d’expériences pour différents cœur de métier concernant des problématiques variées (usine à site, migration, intranet...)

  • * Sessions « Techniques »

La technique sera la seconde thématique à destination des personnes soucieuses de construire et de réaliser des projets évolutifs. C’est une occasion de mieux comprendre les rouages du CMS tout en respectant les bonnes pratiques, Au programme cette année : POO et design patterns, Dx, intégration, RGPD...

  • * Session « Découverte »

La troisième thématique sera dédiée à la découverte de drupal. En partant de la base différents formateurs expérimentés viendront vous présenter les différents aspects du CMS : l'installation, le théming, le développement de module, le déploiement...

Vous pouvez découvrir le programme complet.

Enfin, Il est encore temps de prendre sa place !
Des tarifs préférentiels sont toujours disponibles pour les adhérents à l'association Drupal France.

En page d'accueil : 
Par flocondetoile
Adhérent

Basculer un projet Drupal 8 existant sous composer

Composer est devenu incontournable pour des projets Drupal 8 relativement ambitieux. Même si il est encore possible d'initialiser un projet Drupal 8 avec drush ou encore tout simplement en téléchargeant une archive zip, ces deux méthodes peuvent devenir limitantes avec le temps. Ou tout du moins ne pas faciliter l'installation de nouveaux modules ayant des dépendances sur des librairies tierces.

Par LaurentJames
Laurent James
Je suis formateur en marketing digital et j'accompagne les professionnels de l'immobilier dans la mise en place d'une stratégie digitale globale. Expert en communication immobilière, nous bénéficions d'une vision du métier nous permettant de comprendre les besoins des agences immobilières. Soit nous les coachant en présentiel ou à distance ou quand ils le souhaitent, nous les

Pourquoi une agence immobilière se doit d’avoir un site Internet en 2019 ?

Nouvel article à lire sur Formation Loi Alur | Marketing Immobilier et Communication immobilière : Pourquoi une agence immobilière se doit d’avoir un site Internet en 2019 ?

Cette question “Pourquoi une agence immobilière doit avoir un site internet ?” évoque sûrement une réponse évidente pour vous mais suite à notre analyse vous seriez surpris de connaître le nombre de professionnels de l’immobilier ne disposant pas d’un site internet en 2019.

Nous lançons le débat :

Nous ouvrons le débat car d’après nos sources, les agences immobilières seraient, encore, pour 8 à 13 %, sans aucune vitrine digitale propre à leur “marque”.

les agences immobilières seraient, encore, pour 8 à 13 %, sans aucune vitrine digitale

Quelles sont les raisons les plus souvent évoquées ?

  • nous n’avons pas besoin de clients : agence spécialisée en administration de biens et syndic de copropriété.
  • je diffuse déjà sur des portails professionnels nationaux
  • je suis connu et reconnu sur mon secteur…
  • le budget à allouer

Il est très risqué d’après nous de prendre le virage du digital au dernier moment !

En effet, le consommateur de 2019 est différent de celui d’il y a 15 ans… il sera même différent de celui de 2018 !

Nous vous proposons de consulter ce qui se passe sur les requêtes “Immobilier dans Google depuis 2004

Evolution de la requête Immobilier dans Google depuis 2004
Evolution de la requête Immobilier dans Google depuis 2004

Même si la tendance est baissière, vous ne pouvez pas nier l’intérêt de bien se positionner “gratuitement” sur le moteur de recherche Google (trafic organique à optimiser par travail du SEO ou Référencement naturel).

Tendance baissière Web mais haussière sur Youtube

Le format vidéo est en pleine expansion.

Facebook prédit que sa plateforme sera quasimment uniquement vidéo dans les années à venir.

Une partie de la population regarde d’ailleurs plus Youtube que la télévision classique (vos “jeunes” et “futures” prospects…)

Il suffit par ailleurs de regarder la même tendance sur “Immobilier” sur la plateforme Youtube pour comprendre qu’on recherche juste différement de l’immobilier en vidéo.

Evolution de la requête "Immobilier" dans Youtube depuis 2008

Evolution de la requête “Immobilier” dans Youtube depuis 2008

En effet, le consommateur de 2019 est différent de celui d’il y a 15 ans… il est même différent de celui de 2018 !

Que vous apportera un site Internet pour votre agence immobilière ?

Un site internet vous permettra au contraire de :

  • rassurer vos clients et prospects sur votre professionnalisme
  • capitaliser et pérenniser vos investissement publicitaires, notamment ceux liés au référencement naturel (SEO)
  • vous inscrire dans la durée
  • diffuser de l’information juridique
  • être présent au niveau local et national (et même international si vous le souhaitez) pour un budget maitrisé.

Nous vous proposons à présent de mener cette réflexion :

Combien de fois vous est-il arrivé de réaliser une recherche sur Internet par rapport à un projet qui vous tenait à cœur comme un achat, une information juridique, l’automobile, les voyages…

Ce fut longtemps le débat des marques avec les différents canaux de vente et notamment le duel “OFFLINE” comme l’achat en boutique et le “ONLINE” avec l’accès aux mêmes produits (voir moins cher) sur le site internet de la marque.

Aujourd’hui nous parlons d’un seul et même concept de “web-to-store” soit littéralement “du web au magasin”.

Le consommateur prend l’information voire sa décision sur le web mais se passe de l’inconvénient livraison en retirant en boutique.

Et posez-vous la question :

Auriez-vous réaliser votre “projet” si vous n’aviez pas pu obtenir la moindre information … ?

La recherche sur Internet est un passage incontournable aujourd’hui.

Nous préférons vous prévenir car vos concurrents, eux, sont sûrement déjà présents dans le monde digital !

Notre site tentera au long de ses articles de décrypter pour vous les points essentiels pour mettre en place sa stratégie de communication pour la transaction immobilière et faire de vous un expert du marketing digital.

Pour aller plus loin :  vous pouvez consulter cet article très intéressant “Comment le marché de l’immobilier s’est digitalisé “

L’article Pourquoi une agence immobilière se doit d’avoir un site Internet en 2019 ? est apparu en premier sur Formation Loi Alur | Marketing Immobilier et Communication immobilière.

Par LaurentJames
Laurent James
Je suis formateur en marketing digital et j'accompagne les professionnels de l'immobilier dans la mise en place d'une stratégie digitale globale. Expert en communication immobilière, nous bénéficions d'une vision du métier nous permettant de comprendre les besoins des agences immobilières. Soit nous les coachant en présentiel ou à distance ou quand ils le souhaitent, nous les

Agence immobilière sur Instagram

Nouvel article à lire sur Formation Loi Alur | Marketing Immobilier et Communication immobilière : Agence immobilière sur Instagram

Instagram et immobilier

Quel est le fonctionnement d’Instagram ?

Quel est le rapport entre Instagram et Immobilier ?
Instagram pour ceux qui seraient restés tapis dans l’ombre depuis 5 ans et un service de partage et de publications de photos, vidéos et commentaires, mais c’est surtout une véritable communauté comme sont Twitter et Facebook par exemple.

En parlant de Facebook, celui-ci avait “flairé” l’opportunité puisqu’il a acquis cette société depuis 2012. ( de la même façon que YouTube appartient à Google depuis 2006)

Quel est l’intérêt d’Instagram pour une agence immobilière ?

Selon Confucius, « une image vaut mille mots », et nous nous permettons de vous rappeler quelle importance vos prospects accordent à la photo dans leur recherche immobilière…

De plus la consommation importante de vidéo par les internautes devraient révolutionner la consultation immobilière très prochainement ( Périscope, Youtube, FacebookLive, scanner 3D, réalité augmentée…ETC !)

Nous verrons dans de futurs articles comment utiliser Instagram pour fédérer une communauté afin de travailler son image de marque, son professionnalisme, et générer des leads.

Mais dans un premier temps, commençons par créer un compte.

Comment créer son compte Instagram pour l’immobilier ?

Procédure pour créer votre compte Instagram

  • Rendez-vous sur le site www.instagram.com
  • Vous avez plusieurs possibilités pour créer votre compte :
    > utilisez les renseignements automatiques de votre compte Facebook
    > saisir vos informations de façon classique

Nous utiliserons cette deuxième option.

Renseignez donc les informations demandées.

Comment créer un compte Instagram pour son agence immobiliere etape 1
2 possibilités pour créer son compte : l’adresse email ou la connexion via Facebook

  • Une fois votre profil créé, il est important d’ajouter votre photo de profil. Dans le cadre d’une utilisation professionnelle, le logo de votre agence, la photo de votre vitrine extérieure ou l’intérieur de l’agence nous parait plus pertinent que votre propre portrait.

ajouter une photo de profil à son compte Instagram pour une agence immobilière
Ajout de la photo de profil dans le compte Instagram – Cliquez sur le “+”

  • Une fois la photo de profil ajoutée, un clic sur « Modifier le profil » vous permettra de renseigner une petite Bio qui décrira succinctement votre agence et vos services, votre site web et votre numéro de téléphone.

Configuration du profil Instagram pour son agence immobilière
Remplissez les informations de votre compte Instagram

  • Laissez la case cochée par défaut en bas afin de permettre la suggestion de votre compte à la communauté sensible à l’immobilier… Et oui comme tout réseau social, il va falloir travailler dur pour que des personnes vous suivent, aiment vos publications, et deviennent surtout Abonnés (équivalent des fans de page Facebook).

Rappel du fonctionnement d’Instagram pour cette option :

N’oubliez pas que si vous désactivez cette fonctionnalité, votre profil n’apparaîtra pas non plus dans les suggestions affichées sur le profil de quelqu’un d’autre.

https://help.instagram.com/530450580417848

Fraîchement débarqué dans le fabuleux univers d’Instagram ! Découvrons-le rapidement.

Instagram et Immobilier comprendre les intérêts
Page Profil Instagram : https://www.instagram.com/marketing.action/

Les icônes en haut sont utilisées respectivement pour :

  • Maison : revenir à l’accueil, au “fil”, à savoir les photos postées par les personnes que vous suivez
  • Loupe : effectuer une recherche sur des mots clés (#) ou par nom de compt
  • Coeur : suivre l’impact de vos publications
  • Tête : accéder aux réglages de votre compte

#Immobilier dans Instagram en Janvier 2019
#immobilier en Janvier 2019 sur Instagram
https://www.instagram.com/explore/tags/immobilier/

Instagram : une croissance sur #immobilier de plus de 670% !

Une rapide recherche sur #immobilier vous indique plus de 360000 publications. Pour information la même requête réalisée en Janvier 2017 nous avons donné un peu plus de 50000 résultats.


J’espère que cela vous donne un aperçu de l’évolution de ce réseau et de l’intérêt à s’y positionner dès aujourd’hui.

#Immobilier dans Instagram en Janvier 2017
#immobilier en Janvier 2017 sur Instagram

Alors le meilleur moyen de découvrir cet outil, c’est de fouiner, cliquer, faire des essais. Nous vous laissons donc à votre curiosité.

Compte Instagram : pourquoi décloisonner Professionnel et Personnel


Important : les réseaux sociaux sont un danger si vous les utilisez à titre personnel avec vos comptes professionnels.

Évitez toutes les sujets de polémique comme les opinions politiques, les sujets brûlants du moment comme “les gilets jaunes” (nous rédigeons cet article en Janvier 2019) et économiques, les photos des vacances dans les îles, le dernier anniversaire de Mamie…

En effet, nous devons fréquemment gérer des problèmes de e-reputation pour des agences suite à des erreurs de publication !

La Solution : vous devez avoir deux comptes bien distincts si vous souhaitez aussi une utilisation personnelle.

Si vous voulez en savoir plus sur Intagram, nous vous enseignons comment l’optimiser au cours de nos formations loi alur.

Dans le prochain article nous vous expliquerons comment passer d’un compte personnel à professionnel pour activer toutes les fonctionnalités nécessaires.

Et en attendant

L’article Agence immobilière sur Instagram est apparu en premier sur Formation Loi Alur | Marketing Immobilier et Communication immobilière.

Par flocondetoile
Adhérent

Accélérer la conception d'un projet Drupal 8

Il n'est pas rare qu'un projet Drupal 8, parce qu'il dispose de contenus structurés, s'étoffe de nombreux types de contenu, eux-mêmes comportant de nombreux champs, eux-même rendus de façon différente au travers de non moins nombreux modes d'affichage. Une des conséquences est que la phase de conception dite site building peut devenir alors extrêmement chronophage, voire source de multiples petits oublis encore plus chronophage à corriger /ajuster (utilisation des mêmes champs, texte d'aide associé, configuration du formulaire, des modes d'affichage, etc.).

Par KarimB
Karim Boudjema
Je suis Karim Boudjema ou KarimB en ligne. Je suis belge, développeur Drupal et aussi administrateur d'entreprises. Je vis pour l'instant à Cochabamba, en Bolivie. Quand j'ai découvert Drupal 4.7 en 2008 (et oui… il y a 10 ans), j'ai tout suite senti que ce serait un changement important dans le monde du développement web. Et ce fut le cas!

10 modules Drupal 8 pour bien commencer 2019

C'est toujours un peu compliqué de choisir les modules les plus utiles pour Drupal 8 parce que cela dépend du site que vous allez créer ou administrer. Cependant il y a des modules vraiment utiles que vous pouvez utiliser dans presque toutes les situations.

Dans ce billet je vous parlerai des modules que j'utilise quasi tout le temps dans mes projets sous Drupal 8,  ils ne sont pas liés à un type de site en particulier, mais ils sont toujours utiles tant en développement qu'en production.

1. Admin Toolbar

(D8) - https://www.drupal.org/project/admin_toolbar
Le module Admin Toolbar  vous sauvera beaucoup de temps. En ayant un menu déroulant et en étendant le menu d'origine de Drupal, il vous permettra de réaliser différentes tâches plus rapidement et plus facilement.

Par KarimB
Karim Boudjema
Je suis Karim Boudjema ou KarimB en ligne. Je suis belge, développeur Drupal et aussi administrateur d'entreprises. Je vis pour l'instant à Cochabamba, en Bolivie. Quand j'ai découvert Drupal 4.7 en 2008 (et oui… il y a 10 ans), j'ai tout suite senti que ce serait un changement important dans le monde du développement web. Et ce fut le cas!

Traitement par lots (batch) avec une commande Drush 9 sous Drupal 8

Le traitement par lots (Batch processing en anglais) est souvent un aspect important de tout projet Drupal et plus encore lorsque nous devons traiter de grands volumes de données.

L'un des avantages principaux du traitement par lots réside dans le fait de pouvoir traiter un nombre important de données par petites étapes (chunk) qui se traduisent chacune par une requête indépendante au lieu d'une seule grosse requête pour traiter toutes les données à la fois. Cela nous permettra de réaliser de lourds traitement sans devoir utiliser toutes les ressources mémoires disponibles de notre serveur.

Le fait de diviser un traitement en petits morceaux nous permet aussi d'éviter que le temps allouer à l'exécution de nos scripts PHP ne soit atteint tout en informant nos utilisateurs sur l'avancée de notre traitement.

L'utilisation de la batch API en Drupal peut s'applique aux cas suivants:

Par KarimB
Karim Boudjema
Je suis Karim Boudjema ou KarimB en ligne. Je suis belge, développeur Drupal et aussi administrateur d'entreprises. Je vis pour l'instant à Cochabamba, en Bolivie. Quand j'ai découvert Drupal 4.7 en 2008 (et oui… il y a 10 ans), j'ai tout suite senti que ce serait un changement important dans le monde du développement web. Et ce fut le cas!

Créer un formulaire personalisé en Drupal 8

Créer des formulaires fait partie de la vie quotidienne de tout développeur Drupal. Les formulaires se présentent sous forme de vecteurs tant sous Drupal 7 que sous Drupal 8. La différence réside dans le fait que  sous Drupal 8 ces vecteurs sont définis dans des classes alors qu'en Drupal 7 ils sont créés dans des fonctions.

Dans ce post nous allons créer un  formulaire personnalisé avec deux champs, un champs de type text et un autre de type checkbox, nous allons valider ces champs, les afficher dans un message et enfin rediriger l'utilisateur vers la page principale.

Vous pouvez télécharger le code de ce module ici.

Voici un aperçu du formulaire:
Vous pouvez voir la structure de ce module ci-dessous:

Par KarimB
Karim Boudjema
Je suis Karim Boudjema ou KarimB en ligne. Je suis belge, développeur Drupal et aussi administrateur d'entreprises. Je vis pour l'instant à Cochabamba, en Bolivie. Quand j'ai découvert Drupal 4.7 en 2008 (et oui… il y a 10 ans), j'ai tout suite senti que ce serait un changement important dans le monde du développement web. Et ce fut le cas!

Créer un formulaire de configuration sous Drupal 8

Sous Drupal 7, pour gérer nos variables de configuration système nous utilisions les fonctions variable_get() / variable_set() /  variable_del() et nous enregistrions ces variables dans la table 'variable' de la base de données.

Sous Drupal 8 nous utilisons maintenant le nouveau système de Configuration (Configuration system) qui nous fourni un lieu centralisé pour enregistrer toutes nos donnés de configuration. Ce système nous permet en plus de pouvoir synchroniser  cette information entre nos sites de développement et de production. Ce genre d'information est généralement créé lors du site building et dès lors n'est pas généré par les utilisateurs finaux durant les opérations de routine du site.

Par KarimB
Karim Boudjema
Je suis Karim Boudjema ou KarimB en ligne. Je suis belge, développeur Drupal et aussi administrateur d'entreprises. Je vis pour l'instant à Cochabamba, en Bolivie. Quand j'ai découvert Drupal 4.7 en 2008 (et oui… il y a 10 ans), j'ai tout suite senti que ce serait un changement important dans le monde du développement web. Et ce fut le cas!

Créer une queue avec un contrôleur sous Drupal 8

Sous Drupal, les queues sont particulièrement importantes lorsque nous avons besoin de postposer certaines tâches pour un traitement futur. Pour ce faire, nous allons placer ces tâches ou données dans une queue (créer la queue) et ensuite nous allons traiter ces données avec un 'QueueWorker plugin' (traitement de la queue), généralement grâce à un process de type cron.

Il existe plusieurs manières de créer une queue:
- Avec un formulaire
- Avec un contrôleur
- Avec une fonction hook_cron()
 
Pour traiter la queue, nous avons aussi différentes options:
- Par cron avec un 'QueueWorker plugin'
- Par un batch process aussi avec un 'QueueWorker plugin' mais en étendant un plugin de base
- Par un batch process qui traitera chaque élément de la queue dans un service ou dans un contrôleur.

Par KarimB
Karim Boudjema
Je suis Karim Boudjema ou KarimB en ligne. Je suis belge, développeur Drupal et aussi administrateur d'entreprises. Je vis pour l'instant à Cochabamba, en Bolivie. Quand j'ai découvert Drupal 4.7 en 2008 (et oui… il y a 10 ans), j'ai tout suite senti que ce serait un changement important dans le monde du développement web. Et ce fut le cas!

Accélérer composer avec Drupal 8

Lancer un composer install ou un composer update dans notre installation Drupal 8, pour installer ou actualiser des modules ou des themes, peut parfois être assez frustrant car Composer est vraiment lent. Trop lent en fait. Voici quelques tips qui vous permettront d'accélérer Composer en travaillant avec Drupal.

Installer Prestissimo

Prestismo est un plugin global de Composer qui permet de réaliser des installations (connections) en parallèle et il est vraiment très rapide. Il peut être 2x plus rapide. Mais Prestissimo a besoin de cURL, qui parfois ne fonctionne pas derrière certains firewalls ou proxies.

Pour installer Prestissimo suivez les étapes suivantes:

composer self-update

composer global require hirak/prestissimo

Une fois Prestissimo installé, Composer devrait être bien plus rapide qu'auparavant.

Vous pouvez configurer le nombre de connections parallèles que vous désirez, mais il semble que les 6 connections simultanées par défaut fonctionnent assez bien.

Par KarimB
Karim Boudjema
Je suis Karim Boudjema ou KarimB en ligne. Je suis belge, développeur Drupal et aussi administrateur d'entreprises. Je vis pour l'instant à Cochabamba, en Bolivie. Quand j'ai découvert Drupal 4.7 en 2008 (et oui… il y a 10 ans), j'ai tout suite senti que ce serait un changement important dans le monde du développement web. Et ce fut le cas!

Installer Drupal 8 avec composer

Aujourd'hui composer semble s'imposer comme la manière 'recommandée' pour installer (ou plus précisément de télécharger) Drupal 8, tant pour le cœur de Drupal mais aussi pour les modules comme pour les thèmes.

Donc, pour commencer un nouveau projet sous Drupal 8, nous devrons télécharger le code avec composer et non plus avec Drush ou Drupal Console comme nous le faisions dans le passé. Bien entendu, nous pouvons toujours utiliser Drush ou DC pour activer (ou installer) les modules ou thèmes contrib, mais pas pour les télécharger.

Le principal atout de composer est de pouvoir administrer une liste toujours plus étendue de dépendances (comme de leurs sous-dépendances) et ainsi de s'assurer que les bonnes versions de chaque 'package' soient utilisées ou actualisées.

Par Christophe MOLLET
Christophe Mollet

Développer un thème sur Drupal 8

Cet article vous propose sous forme d'un tutoriel les étapes de la création d'un thème "from scratch" sous Drupal 8. En plus de reprendre les bonnes pratiques lors du développement d'un thème, il explique précisément comment désactiver les caches pour faciliter la phase de développement.

Si des connaissances sur le "back-office" de Drupal et dans les langages de type "html, css et twig" sont nécessaires, ce tutoriel se veut accessible pour les personnes désirant aller plus loin dans la personnalisation de leur site Drupal.

Par Kgaut
Adhérent
Kevin Gautreau

Drupal 8 - Supprimer toutes les entités d'un certain type

Dans mon_module.install :

  1. /**
  2.  * Remove all products
  3.  */
  4. function mon_module_update_8001() {
  5. $toDelete = \Drupal::entityQuery('product')->execute();
  6. foreach ($toDelete as $item) {
  7. $item = \Drupal\clearblue\Entity\Product::load($item);
  8. $item->delete();
  9. }
  10. }

 

Par Kgaut
Adhérent
Kevin Gautreau

Drupal 8 - Supprimer un type d'entité

Dans mon_module.install :

  1. /**
  2.  * Remove Product entity type
  3.  */
  4. function mon_module_update_8001() {
  5. $entity_type = 'product';
  6. $entity_update_manager = \Drupal::entityDefinitionUpdateManager();
  7. $entity_type = $entity_update_manager->getEntityType(entity_type);
  8. $entity_update_manager->uninstallEntityType($entity_type);
  9. }

 

Par Kgaut
Adhérent
Kevin Gautreau

Drupal 8 - Ajouter une propriété à un type d'entité config

Voici comment altérer un type d'entité config pour lui ajouter une propriété.

Dans le cas présent, nous allons modifier le type d'entité ConfigurableLanguage afin de lui ajouter un champ google_analytics, pour avoir par exemple un code de tracking différent pour chaque langue.

Commençons par définir les nouveaux formulaire concernant pour l'édition et la création de langue :

modules/custom/mon_module/mon_module.module

  1. function mon_module_entity_type_alter(array &$entity_types) {
  2. $entity_types['configurable_language']->setFormClass('add', \Drupal\mon_module\Entity\Form\LanguageCustomAddForm::class);
  3. $entity_types['configurable_language']->setFormClass('edit', \Drupal\mon_module\Entity\Form\LanguageCustomEditForm::class);
  4. }

 

Ci dessous, le contenu des formulaires qui héritent directement des formulaires de base qu'ils supplantent.

modules/custom/mon_module/src/Entity/Form/LanguageCustomAddForm.php

  1.  
  2. namespace Drupal\mon_module\Entity\Form;
  3.  
  4. use Drupal\Core\Form\FormStateInterface;
  5. use Drupal\language\Form\LanguageAddForm;
  6.  
  7. class LanguageCustomAddForm extends LanguageAddForm {
  8. use LanguageCustomTrait;
  9.  
  10. public function form(array $form, FormStateInterface $form_state) {
  11. $form = parent::form($form, $form_state);
  12. $this->getFormCustomFields($form);
  13. return $form;
  14. }
  15.  
  16. }

 

modules/custom/mon_module/src/Entity/Form/LanguageCustomEditForm.php

  1.  
  2. namespace Drupal\mon_module\Entity\Form;
  3.  
  4. use Drupal\Core\Form\FormStateInterface;
  5. use Drupal\language\Form\LanguageEditForm;
  6.  
  7. class LanguageCustomEditForm extends LanguageEditForm {
  8. use LanguageCustomTrait;
  9.  
  10. public function form(array $form, FormStateInterface $form_state) {
  11. $form = parent::form($form, $form_state);
  12. $this->getFormCustomFields($form);
  13. return $form;
  14. }
  15.  
  16. }

 

Enfin, afin d'éviter la répétition de code, je passe par un trait qui contient mes customisations.

Ce trait est appelé dans les classes ci-dessous via l'appel : $this->getFormCustomFields($form);

Ce trait, fait deux choses, dans la méthode getFormCustomFields() il altère le formulaire pour ajouter le champs qui nous intéresse, et via l'appel à la méthode customEntityBuilder(), l'enregistrement de ce champ est effectué.

modules/custom/mon_module/src/Entity/Form/LanguageCustomTrait.php

  1.  
  2. namespace Drupal\mon_module\Entity\Form;
  3.  
  4. use Drupal\Core\Form\FormStateInterface;
  5. use Drupal\language\ConfigurableLanguageInterface;
  6.  
  7. trait LanguageCustomTrait {
  8.  
  9. public function getFormCustomFields(&$form) {
  10. /* @var $language \Drupal\language\ConfigurableLanguageInterface */
  11. $language = $this->entity;
  12.  
  13. $form['google_analytics'] = [
  14. '#title' => t('ID Google Analytics'),
  15. '#type' => 'textfield',
  16. '#default_value' => $language->getThirdPartySetting('mon_module', 'google_analytics')
  17. ];
  18. $form['#entity_builders'][] = '::customEntityBuilder';
  19. }
  20.  
  21. function customEntityBuilder($entity_type, ConfigurableLanguageInterface $language, &$form, FormStateInterface $form_state) {
  22. if ($form_state->getValue('google_analytics')) {
  23. $language->setThirdPartySetting('mon_module', 'google_analytics', $form_state->getValue('google_analytics'));
  24. return;
  25. }
  26. $language->unsetThirdPartySetting('mon_module', 'google_analytics');
  27. }
  28.  
  29. }

évidement, pensez à modifier toutes les occurrences de mon_module par le nom machine de votre module.

Merci à Alexandre Mallet aka @woprrr pour la piste

Par Kgaut
Adhérent
Kevin Gautreau

Drupal 8 - Afficher un noeud via le code

Pour afficher avoir le renderable array d'un noeud dans le code, rien de plus simple via le service entity_type.manager :

  1. $node = Node::load(1);
  2. $node_rederable = \Drupal::service('entity_type.manager')->getViewBuilder('node')->view($node);

Pour utiliser un autre view_mode :

  1. $node = Node::load(1);
  2. $node_rederable = \Drupal::service('entity_type.manager')->getViewBuilder('node')->view($node, 'embed');

Évidement le plus propre et de passer par l'injection de dépendance, voici une version simplifiée de mon contrôleur :

  1.  
  2. namespace Drupal\mon_module\Controller;
  3.  
  4. use Drupal\Core\Controller\ControllerBase;
  5. use Drupal\Core\Entity\EntityTypeManager;
  6. use Drupal\node\Entity\Node;
  7. use Symfony\Component\DependencyInjection\ContainerInterface;
  8.  
  9. /**
  10.  * Class PageController.
  11.  */
  12. class PageController extends ControllerBase {
  13.  
  14. /**
  15.   * @var \Drupal\Core\Entity\EntityTypeManager
  16.   */
  17. protected $entityTypeManager;
  18.  
  19. public function __construct(EntityTypeManager $entityTypeManager) {
  20. $this->entityTypeManager = $entityTypeManager;
  21. }
  22.  
  23. public static function create(ContainerInterface $container) {
  24. return new static($container->get('entity_type.manager'));
  25. }
  26.  
  27. public function frontpage() {
  28. $node = Node::load(1);
  29. $page = $this->entityTypeManager->getViewBuilder('node')->view($node, 'embed');
  30.  
  31. return [
  32. 'page' => $page,
  33. ];
  34. }
  35. }

 

Par Kgaut
Adhérent
Kevin Gautreau

Drupal 8 - Afficher un menu dans le code

Dans le contrôleur / Bloc...

  1. /** @var \Drupal\Core\Menu\MenuLinkTree $menu_tree_service */
  2. $menu_tree_service = \Drupal::service('menu.link_tree');
  3. $menu_parameters = new \Drupal\Core\Menu\MenuTreeParameters();
  4. $menu_parameters->setMaxDepth(1); // Profondeur du menu à afficher
  5. $menu_name = 'footer' // Nom machine du menu à afficher
  6. $menus = [
  7. 'footer' => $menu_tree_service->build($menu_tree_service->load($menu_name, $menu_parameters)),
  8. ];
  9. return [
  10. '#theme' => 'page-404',
  11. '#menus' => $menus,
  12. ];

et tout simplement dans notre template :

<span class="br0">{</span><span class="br0">{</span> <span class="re0">menus</span><span class="re1">.footer</span> <span class="br0">}</span><span class="br0">}</span>

 

Par Kgaut
Adhérent
Kevin Gautreau

Drupal 8 - Créer la traduction d'une chaine de caractère dans le code

Dans un processus de déploiement, il est utile de gérer les traductions de chaînes de caractères dans le code, afin de pouvoir les déployer plus facilement.

Exemple avec cette fonction d'update à adapter en fonction de vos besoins :

  1. /**
  2.  * Création d'une traduction
  3.  */
  4. function mespronos_tweaks_update_8005() {
  5. $chaine = 'Forgotten password';
  6. $traduction = 'Mot de passe oublié';
  7. $storage = \Drupal::service('locale.storage');
  8. $string = $storage->findString(['source' => $chaine]);
  9. if ($string === NULL) {
  10. $string = new \Drupal\locale\SourceString();
  11. $string->setString($chaine);
  12. $string->setStorage($storage);
  13. $string->save();
  14. }
  15.  
  16. $translation = $storage->createTranslation(array(
  17. 'lid' => $string->lid,
  18. 'language' => 'fr',
  19. 'translation' => $traduction,
  20. ))->save();
  21. }

Pour un exemple réel, il sera plus pratique de passer par un tableau associatif (à deux dimensions si l'on veut importer plusieurs langues) qui sera parcouru par un ou deux foreach.

Pages