Planète

Une feuille de route pour Drupal 8. Et après ?

Depuis la sortie de la première version stable de Drupal 8, Drupal utilise désormais un système de gestion sémantique des versions. La mise en place d'un tel système de gestion des versions s'est accompagnée d'une définition d'une nouvelle politique de mise à jour, nous permettant de disposer d'une vision à long terme des différentes versions à venir du coeur de Drupal. Découvrons en détail le fonctionnement de ce système, et la feuille de route sous-jacente de Drupal pour les années à venir.

Une feuille de route pour Drupal 8. Et après ?

Depuis la sortie de la première version stable de Drupal 8, Drupal utilise désormais un système de gestion sémantique des versions. La mise en place d'un tel système de gestion des versions s'est accompagnée d'une définition d'une nouvelle politique de mise à jour, nous permettant de disposer d'une vision à long terme des différentes versions à venir du coeur de Drupal. Découvrons en détail le fonctionnement de ce système, et la feuille de route sous-jacente de Drupal pour les années à venir.

Par vincent59
Vincent Liefooghe

Cartographie Drupal : utilisation de AddressField + Geocoder

Dans la série Cartographie, nous avons vu auparavant quels modules utiliser pour stocker les données géographiques, et les présenter de manière simple.

Cependant, à ce stade la saisie d'une adresse n'était possible que via ses coordonnées géographiques, ou sur une carte.

Si on veut coupler la saisie d'une adresse et l'encodage, on peut utiliser 2 modules complémentaires :

  • Address Field : très utilisé dans Drupal Commerce, il permet de fournir un champ de saisie des adresses, de manière normalisée, avec un formulaire propre au pays
  • Geocoder : couplé avec Address Field, il pemettra d'encoder l'adresse pour la transformer en coordonnées géographiques.

A priori, il semble qu'il faille également installer le module Entity, sinon on a des messages d'erreur de type :

PHP Fatal error:  Call to undefined function entity_get_all_property_info() in /var/www/drupal/sites/all/modules/contrib/geocoder/geocoder.widget.inc on line 89

L'installation des modules s'effectue normalement. Par exemple avec drush :

drush dl geocoder addressfield entity
drush en geocoder addressfield entity

Address Field

Imaginons que nous voulions gérer des magasins dans plusieurs pays : France, Belgique, Suisse. Nous allons créer un type de contenu Magasin, avec un Nom, une description et y ajouter un champ Adresse :

Au niveau du Widget, on pourra alors sélectionner les pays : Belgium, France, Switzerland (pour la démo, j'utilise un site en anglais). Et définir la France comme pays par défaut.

En saisie, on a alors le formulaire qui s'affiche, avec la France comme pays par défaut :

Mais à ce stade, l'adresse est uniquement affichée de manière textuelle, car nous n'avons pas encore introduit l'encodage :

Geofield + Encodage

Pour permettre la cartographie, il faut donc un champ qui stocke les coordonnées géographiques (apporté par Geofield). Le fait d'avoir ajouté le module Geocoder permet d'ajouter une option dans les Widgets :

Lorsqu'on ajoute un champ de type Geofield, on peut alors sélectionner le widget de type "Geocode from another field". Au niveau des paramètres du champ, on laisse le défaut.

On va ensuite choisir quel champ sera utilisé comme base de géocoding, et le "moteur" à utiliser. Plusieurs choix sont possibles :

Dès lors, lorsqu'on saisit une adresse, celle-ci est envoyée au service de géocodage. Les coordonnées sont bien récupérées. Dans l'exemple ci-après, elles sont juste affichées au format WKT.

En effet, le paramétrage de l'affichage du champ est le suivant :

Conclusion

Nous avons vu dans cet article comment utiliser les modules AddressField, Geocoder, Geofield et Entity pour ajouter un champ de type adresse et un champ de type Geofield sur un type de contenu, et récupérer les coordonnées géographiques de l'adresse via les services de Geocodage.

Les données stockées dans le champ Geofield peuvent ensuite servir à l'affichage.

Si on modifie le type de format du champ en Dynamic Google Map par exemple :

L'affichage se présente sous la forme d'une carte :

Dans de prochains articles, nous verrons comment intégrer Views et d'autres affichages (Leaflet par exemple)

 

Catégorie: 


Tag: 

Par vincent59
Vincent Liefooghe

Cartographie avec Drupal

Dans un précédent article (https://www.vincentliefooghe.net/content/cartographie-rapide-avec-drupal), j'ai montré comment on pouvait ajouter rapidement et en quelques modules des fonctions de cartographie.

Dans cet article, nous allons aller un peu plus loin dans ce domaine, avec la présentation des principes et de différents modules.

Principes et composants de la cartographie

Lorsque l'on parle de cartographie, on pense souvent à la restitution des données. Google Maps a permis de démocratiser cet aspect.
Cependant, la chaîne complète repose sur un ensemble de composants :

Pour chacun de ces composants, Drupal propose souvent plusieurs solutions, parfois incompatibles. Il convient donc de faire le bon choix afin de construire une solution globale pérenne et fonctionnelle.

Nous allons voir, dans les différentes parties de cet article, quels sont les composants / modules Drupal que nous pouvons utiliser.

Et pour ceux qui sont pressés et qui veulent rapidement mettre en oeuvre une solution, ils peuvent s'orienter vers le guide du mapping rapide, qui permet d'avoir une solution complète en installant 5 modules :

  • geophp : pré-requis pour les fonctions de géolocalisations
  • ctools : pré-requis pour geofield et views
  • geofield : stockage des données
  • geofield_gmap : widget de saisie Google Maps pour le champ geofield
  • views : pour l'affichage des différents contenus sur une seule page

Stockage des données

Pour le stockage des données géographiques, c'est geofield qui est le plus utilisé et le plus supporté.
Il nécessite en pré-requis les modules geophp et ctools.

L'installation et l'activation du module via drush consiste donc en :

drush dl ctools geophp geofield

Project ctools (7.x-1.9) downloaded to sites/all/modules/ctools.                                          [success]
Project ctools contains 10 modules: term_depth, ctools_access_ruleset, views_content, page_manager, bulk_export, stylizer, ctools_ajax_sample, ctools_custom_content, ctools_plugin_example, ctools.
Project geophp (7.x-1.7) downloaded to sites/all/modules/geophp.                                          [success]
Project geofield (7.x-2.3) downloaded to sites/all/modules/geofield.                                      [success]
Project geofield contains 2 modules: geofield_map, geofield.

drush en -y ctools geophp geofield
Do you really want to continue? (y/n): y
ctools was enabled successfully.                                                                                         [ok]
ctools defines the following permissions: use ctools import
geofield was enabled successfully.                                                                                       [ok]
geophp was enabled successfully.                                                                                         [ok]

A ce stade, on a uniquement un nouveau type de champ, qui peut être ajouté à des contenus.

Saisie des coordonnées

La saisie des coordonnées peut utiliser plusieurs options :

  • saisie directe des valeurs de latitude, longitude
  • définition d'une zone à partir d'une carte
  • encodage à partir d'une adresse
  • positionnement direct du marqueur sur une carte
  • combinaison de l'adresse et du positionnement

Le plus intuitif, à mon sens, reste la saisie d'une adresse et/ou le positionnement du marqueur sur la carte, qui est intéressant lorsque la position à saisir n'est pas une adresse (par exemple un point perdu dans la campagne ou la montagne...).

Défaut avec Geofield

Par défaut, une fois que geofield est installé, on peut voir sur la capture d'écran, que seuls 4 types de widgets sont disponibles par défaut :

  • GeoJSON : données au format json
  • Well Known Text (WKT) : format WKT, un format qui permet de définir le type de d'objet et ses coordonnées
  • Latitude / Longitude : 2 champs de saisie, un pour chaque donnée
  • Bounds : saisie de plusieurs points pour définir une frontière

Dans notre exemple, nous avons choisi Latitude / Longitude. L'ajout d'un contenu de type POI demande donc la saisie de la latitude et de la longitude du point.
C'est précis, mais pas très intuitif.


Si on a activé la géolocalisation HTML 5, on peut récupérer la localisation actuelle du navigateur en cliquant sur "Find my location" .

Dans ce deuxième exemple, on a changé le widget de saisie en GeoJSON. La saisie demande donc ce format, par exemple :

{"type":"Point",
"coordinates":[3.1,50.0] }

On constate également que l'affichage (pour l'instant) n'utilise que des champs textes : WKT, GeoJSON, KML, etc. :

Avec des widgets Graphiques

Plutôt que de faire une saisie manuelle des coordonnées, on peut vouloir placer le marqueur directement sur une carte. Pour ce faire, on peut utiliser plusieurs modules, tels que :

Geofield Gmap

L'installation est simple avec drush :

drush dl geofield_gmap
drush en -y geofield_gmap

Une fois le module téléchargé et activé, on dispose d'un nouveau Widget pour notre champ Localisation : Google Map.


On peut alors entrer une adresse, ou une ville dans le champ d'adresse, mais aussi travailler directement sur la carte.

A ce stade, on a donc une saisie et un rendu graphiques de la localisation sur notre type de contenu, en ayant installé 4 modules : ctools, geophp, geofield et geofield_gmap.

Ceci fonctionne bien pour un affichage individuel, mais si on veut afficher sur une seule carte les différents points, il va falloir aller plus loin et utiliser notamment les fonctionnalités de Views

Encodage

L'encodage consiste à transformer les données saisies en latitude / longitude, afin d'alimenter le champ geofield. Jusqu'ici, notre exemple n'a pas utilisé d'encodage, et il faut donc saisir ces données manuellement, ce qui n'est pas très user friendly.

Des modules d'encodage à partir d'adresse sont souvent utilisés. Dans ce domaine, on utilise souvent le couple de modules :

  • Address pour la saisie des adresses
  • Geocoder pour l'encodage à partir de l'adresse saisie

Cette partie sera traitée dans un autre article.

Restitution / affichage

Avec le module Geofield

Par défaut avec geofield, lorsqu'on visualise le contenu, le résultat est assez austère. L'affichage utilise le format WKT (Well Known Text). Par exemple :

POINT (3.1 50)

On peut modifier cet affichage, pour voir les différents autres formats texte.

Par exemple, si on choisit GeoJSON, on a alors les coordonnées en format JSON :

{"type":"Point","coordinates":[3.1,50]}

Pour améliorer la restitution, on peut activer le module Geofield map qui permet d'avoir un nouveau formatter pour la visualisation.

Une fois choisi Geofield Map, on dispose de beaucoup plus d'options pour l'affichage

Le résultat est déjà plus intéressant ; quand on affiche un contenu, la localisation est affichée sous la forme d'une Map Google :

Affichage avec d'autres modules

Il existe d'autres modules qui gèrent l'affichage du contenu, et qui peuvent être intégrés avec Views, afin de réaliser des cartes englobants plusieurs points.
Ces modules utilisent généralement des librairies Javascript, qui effectuent le rendu côté client.

On peut citer notamment :

  • Leaflet
  • OpenLayers
  • IP Geoloc

Nous verrons dans un autre article comment utiliser Leaflet, avec des clusters de point et des icônes spécifiques selon une taxonomie.

 

Catégorie: 


Tag: 

Par GoZ
Fabien CLEMENT

Vagrant pour Drupal et Symfony

Vagrant pour Drupal et Symfony

Cela fait plus d'un an maintenant que je travaille avec un environnement lamp géré par vagrant/ansible pour drupal/symfony, et je n'ai pas à m'en plaindre.

Passé les premiers moments de galères de performances, on est toujours en dessous de performances d'un vmware ou d'un intégration sans vm (il faudrait vérifier ça sur un linux sans vm), mais les performances restent bonnes pour un travail quotidien, même avec xdebug d'activé.

GoZ
ven 04/03/2016 - 16:45

Drupal  8 : l'envoi de mails sous toutes les coutures

Par défaut, tous les mails envoyés par Drupal 8 le sont en texte brut. Pour envoyer des mails en HTML, que ce soit pour des newsletters, ou encore tout simplement pour les différentes notifications afin de les enrichir quelque peu, il est nécessaire de modifier le système d'envoi par défaut des courriers électroniques, ou encore d'en utiliser un autre. Faisons un tour d'horizon du système d'envoi des courriers électroniques de Drupal 8. Cela est utile à plus d'un titre. Bien sûr si nous avons besoin de réaliser un envoi programmatique, mais aussi pour mieux comprendre le mécanisme général et donc le fonctionnement des différents modules disponibles pour réaliser cette tache.

Drupal  8 : l'envoi de mails sous toutes les coutures

Par défaut, tous les mails envoyés par Drupal 8 le sont en texte brut. Pour envoyer des mails en HTML, que ce soit pour des newsletters, ou encore tout simplement pour les différentes notifications afin de les enrichir quelque peu, il est nécessaire de modifier le système d'envoi par défaut des courriers électroniques, ou encore d'en utiliser un autre. Faisons un tour d'horizon du système d'envoi des courriers électroniques de Drupal 8. Cela est utile à plus d'un titre. Bien sûr si nous avons besoin de réaliser un envoi programmatique, mais aussi pour mieux comprendre le mécanisme général et donc le fonctionnement des différents modules disponibles pour réaliser cette tache.

Par GoZ
Fabien CLEMENT

Drupal 8 hébergé chez 1and1 mutualisé

Drupal 8 hébergé chez 1and1 mutualisé

Les hébergements mutualisés sont loin d'être des foudres de guerre, et encore moins pratiques pour héberger de manière pérenne un site.

Toutefois, les prix très bas de ce type de solutions s'avèrent intéressant pour l'hébergement de petits sites ou blogs personnels.

Tandis que Drupal 7 en est à sa version 7.43 et que 1and1 propose via son App Center d'installer Drupal en version 7.39 (Oo?), leur offre mutualisé et l'intégration de PHP7 permet néanmoins l'installation manuelle d'un Drupal 8 (à jour).

GoZ
lun 29/02/2016 - 08:56

Maîtriser les entêtes de Drupal 8 et son SEO

Après avoir mis en ligne votre site Drupal 8, vous pourriez constater dans les journaux d'accès à votre site de nombreuses tentatives d'accès aux formulaires d'édition, d'ajout ou encore de suppression de vos contenus, qui échouent bien entendu sur un accès refusé. De belles erreurs 403. Que diable ? Etes-vous la cible d'une attaque ciblée ? Ou bien tout simplement, les moteurs de recherche cherchent-ils à accéder à ces pages généralement interdites aux visiteurs anonymes ? Découvrons le pourquoi du comment, et quelques solutions pour y remédier.

Maîtriser les entêtes de Drupal 8 et son SEO

Après avoir mis en ligne votre site Drupal 8, vous pourriez constater dans les journaux d'accès à votre site de nombreuses tentatives d'accès aux formulaires d'édition, d'ajout ou encore de suppression de vos contenus, qui échouent bien entendu sur un accès refusé. De belles erreurs 403. Que diable ? Etes-vous la cible d'une attaque ciblée ? Ou bien tout simplement, les moteurs de recherche cherchent-ils à accéder à ces pages généralement interdites aux visiteurs anonymes ? Découvrons le pourquoi du comment, et quelques solutions pour y remédier.

Par admin

Convocation à l'assemblée générale du mercredi 23 mars 2016

Fichier attaché Taille
Fichierdff-ag-2016_convocation-et-formulaire-pouvoir.odt 44.86 Ko

Cher adhérent,

Le bureau et moi-même avons le plaisir de te convier à l'assemblée générale ordinaire de notre association mercredi 23 mars 2016, conformément à l'article 8 des statuts, qui se tiendra à 18h30 à la Maison des Associations du 3ème, 5 rue Perrée, 75003 Paris.

J'attire ton attention sur le fait que l'assemblée générale a besoin d'un taux de participation ou représentation (pouvoirs) suffisant pour atteindre le quorum nécessaire au vote. Ta participation marque aussi ton soutien à l'association et à ses actions.

L'assemblée générale ordinaire aura à l'ordre du jour :
Rapport moral présenté par le président
Rapport financier présenté par le trésorier
Élection du nouveau conseil d'administration
Questions ouvertes

Les membres désirant présenter leur candidature au bureau, et ceux qui souhaitent inclure des points complémentaires à l'ordre du jour devront se manifester au plus tôt au bureau via email à bureau@listes.drupalfr.org

Si tu ne peux être physiquement présent lors du vote, tu peux te faire représenter par un autre membre de l'association muni d'un pouvoir régulier (ou tu peux l'envoyer à l'adresse de l'association au minimum 4 jours avant l'assemblée générale ou par scan signé à bureau@listes.drupalfr.org). Le pouvoir est disponible ci-dessous.

Tu peux également participer à l'assemblée générale par un moyen de communication électronique permettant de t'identifier formellement. Dans ce cas, si tu souhaites participer aux votes tu devras renoncer à l'anonymat des votes afin de les transmettre.

Je te rappelle également que seuls les membres à jour de leur cotisation peuvent participer à l'assemblée générale et participer au vote, n'hésite pas à adhérer dès à présent grâce au bulletin d'adhésion en ligne (bloc à gauche une fois que tu es connecté sur le site drupalfr.org), ou via le formulaire pdf (http://drupalfr.org/sites/default/files/formulaire-adherent-drupalfr.pdf) à compléter et renvoyer avec ta cotisation ou sur place le jour même. Pour adhérer au titre de ton entreprise ou renouveler son adhésion, utilise le formulaire pdf.

Merci pour ta participation et à bientôt.

Léon Cros
Président Drupal France et francophonie

En page d'accueil : 
Par admin

Convocation à l'assemblée générale du mercredi 23 mars 2016

Fichier attaché Taille
PDF icondff-ag-2016_convocation-et-formulaire-pouvoir.pdf 47.18 Ko

Cher adhérent,

Le bureau et moi-même avons le plaisir de te convier à l'assemblée générale ordinaire de notre association mercredi 23 mars 2016, conformément à l'article 8 des statuts, qui se tiendra à 18h30 à la Maison des Associations du 3ème, 5 rue Perrée, 75003 Paris.

J'attire ton attention sur le fait que l'assemblée générale a besoin d'un taux de participation ou représentation (pouvoirs) suffisant pour atteindre le quorum nécessaire au vote. Ta participation marque aussi ton soutien à l'association et à ses actions.

L'assemblée générale ordinaire aura à l'ordre du jour :
Rapport moral présenté par le président
Rapport financier présenté par le trésorier
Élection du nouveau conseil d'administration
Questions ouvertes

Les membres désirant présenter leur candidature au bureau, et ceux qui souhaitent inclure des points complémentaires à l'ordre du jour devront se manifester au plus tôt au bureau via email à bureau@listes.drupalfr.org

Si tu ne peux être physiquement présent lors du vote, tu peux te faire représenter par un autre membre de l'association muni d'un pouvoir régulier (ou tu peux l'envoyer à l'adresse de l'association au minimum 4 jours avant l'assemblée générale ou par scan signé à bureau@listes.drupalfr.org). Le pouvoir est disponible ci-dessous.

Tu peux également participer à l'assemblée générale par un moyen de communication électronique permettant de t'identifier formellement. Dans ce cas, si tu souhaites participer aux votes tu devras renoncer à l'anonymat des votes afin de les transmettre.

Je te rappelle également que seuls les membres à jour de leur cotisation peuvent participer à l'assemblée générale et participer au vote, n'hésite pas à adhérer dès à présent grâce au bulletin d'adhésion en ligne (bloc à gauche une fois que tu es connecté sur le site drupalfr.org), ou via le formulaire pdf (http://drupalfr.org/sites/default/files/formulaire-adherent-drupalfr.pdf) à compléter et renvoyer avec ta cotisation ou sur place le jour même. Pour adhérer au titre de ton entreprise ou renouveler son adhésion, utilise le formulaire pdf.

Merci pour ta participation et à bientôt.

Léon Cros
Président Drupal France et francophonie

En page d'accueil : 
Par admin

Convocation à l'assemblée générale du mercredi 23 mars 2016

Fichier attaché Taille
Icône PDFdff-ag-2016_convocation-et-formulaire-pouvoir.pdf 47.18 Ko

Cher adhérent,

Le bureau et moi-même avons le plaisir de te convier à l'assemblée générale ordinaire de notre association mercredi 23 mars 2016, conformément à l'article 8 des statuts, qui se tiendra à 18h30 à la Maison des Associations du 3ème, 5 rue Perrée, 75003 Paris.

J'attire ton attention sur le fait que l'assemblée générale a besoin d'un taux de participation ou représentation (pouvoirs) suffisant pour atteindre le quorum nécessaire au vote. Ta participation marque aussi ton soutien à l'association et à ses actions.

L'assemblée générale ordinaire aura à l'ordre du jour :
Rapport moral présenté par le président
Rapport financier présenté par le trésorier
Élection du nouveau conseil d'administration
Questions ouvertes

Les membres désirant présenter leur candidature au bureau, et ceux qui souhaitent inclure des points complémentaires à l'ordre du jour devront se manifester au plus tôt au bureau via email à bureau@listes.drupalfr.org

Si tu ne peux être physiquement présent lors du vote, tu peux te faire représenter par un autre membre de l'association muni d'un pouvoir régulier (ou tu peux l'envoyer à l'adresse de l'association au minimum 4 jours avant l'assemblée générale ou par scan signé à bureau@listes.drupalfr.org). Le pouvoir est disponible ci-dessous.

Tu peux également participer à l'assemblée générale par un moyen de communication électronique permettant de t'identifier formellement. Dans ce cas, si tu souhaites participer aux votes tu devras renoncer à l'anonymat des votes afin de les transmettre.

Je te rappelle également que seuls les membres à jour de leur cotisation peuvent participer à l'assemblée générale et participer au vote, n'hésite pas à adhérer dès à présent grâce au bulletin d'adhésion en ligne (bloc à gauche une fois que tu es connecté sur le site drupalfr.org), ou via le formulaire pdf (http://drupalfr.org/sites/default/files/formulaire-adherent-drupalfr.pdf) à compléter et renvoyer avec ta cotisation ou sur place le jour même. Pour adhérer au titre de ton entreprise ou renouveler son adhésion, utilise le formulaire pdf.

Merci pour ta participation et à bientôt.

Léon Cros
Président Drupal France et francophonie

En page d'accueil : 

Drupal 8 à votre service !

A l'instar des Plugins, Drupal 8 a introduit un nouveau concept, repris de Symfony2, dans son API : les Services. Ces derniers permettent de mettre à disposition des fonctionnalités assurant une et seule tache, comme par exemple envoyer un courrier électronique ou encore construire le fil d'ariane. La différence majeure des Services comparés aux Plugins est que les services ne disposent pas généralement (ou tout du moins directement) d'une interface graphique de configuration. Pour reprendre la définition concise : un service est un objet PHP, conçu dans le but d'atteindre un objectif spécifique, qui effectue une sorte de tâche globale. Découvrons ce nouveau système des services.

Drupal 8 à votre service !

A l'instar des Plugins, Drupal 8 a introduit un nouveau concept, repris de Symfony2, dans son API : les Services. Ces derniers permettent de mettre à disposition des fonctionnalités assurant une et seule tache, comme par exemple envoyer un courrier électronique ou encore construire le fil d'ariane. La différence majeure des Services comparés aux Plugins est que les services ne disposent pas généralement (ou tout du moins directement) d'une interface graphique de configuration. Pour reprendre la définition concise : un service est un objet PHP, conçu dans le but d'atteindre un objectif spécifique, qui effectue une sorte de tâche globale. Découvrons ce nouveau système des services.

Pages