Planète
Une feuille de route pour Drupal 8. Et après ?
Une feuille de route pour Drupal 8. Et après ?
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:
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 :
- Stockage des coordonnées géographiques (latitude / longitude)
- Encodage des coordonnées
- Saisie des coordonnées
- Visualisation / restitution
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:
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
Présentation meetup Drupal Lyon - Configuration Management avec Drupal 8
J'ai fait une présentation sur la gestion de configuration sous Drupal 8 au dernier meetup Drupal Lyon.
Drupal 8 : l'envoi de mails sous toutes les coutures
Drupal 8 : l'envoi de mails sous toutes les coutures
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
Maîtriser les entêtes de Drupal 8 et son SEO
Convocation à l'assemblée générale du mercredi 23 mars 2016
Fichier attaché | Taille |
---|---|
dff-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
Convocation à l'assemblée générale du mercredi 23 mars 2016
Fichier attaché | Taille |
---|---|
dff-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
Convocation à l'assemblée générale du mercredi 23 mars 2016
Fichier attaché | Taille |
---|---|
dff-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
Drupal 8 à votre service !
Drupal 8 à votre service !
A la découverte des plugins de Drupal 8 : les formateurs de champ