SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

288 Plugins, 197 contribs sur SPIP-Zone, 327 visiteurs en ce moment

Accueil > Géo, carto, météo > GIS > Géolocalisation des visiteurs > Géolocaliser les articles en fonction de l’ip de l’internaute qui se connecte (...)

Géolocaliser les articles en fonction de l’ip de l’internaute qui se connecte à votre site

16 octobre 2010 – par Bernt – commentaires

9 votes

Remerciements : CM, Sam, Florence HENRY

Objectif : Géolocaliser les articles en fonction de l’ip de l’internaute qui se connecte à votre site.

Prérequis : Avoir installé le plugin GIS et avoir géolocalisé les articles de votre site en fonction des lieux qu’ils évoquent
Avoir créé un compte sur http://ipinfodb.com et avoir récupéré l’API key.

Possible : Vous êtes lecteur d’un quotidien régional. La page d’accueil du site du journal affiche en priorité les articles qui concernent votre canton.

Exemple en ligne : Géolocalisez les livres proches de chez vous http://www.bibliosurf.com/spip.php?page=jeu_de_cartesbis.

Méthode

1. Copier les fonctions suivantes dans le fichier mes_fonctions.php

function get_url_contents($url){
      $crl = curl_init();
      $timeout = 5;
      curl_setopt ($crl, CURLOPT_URL,$url);
      curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
      $ret = curl_exec($crl);
      curl_close($crl);
      return split("\n", $ret);
}

$ip = $_SERVER['REMOTE_ADDR'];
$xml = get_url_contents("http://api.ipinfodb.com/v2/ip_query.php?key=<your_api_key>&ip=" . $ip);

 $latitude = preg_replace("/<\/?Latitude>/", "", $xml[9]);
 $longitude = preg_replace("/<\/?Longitude>/", "", $xml[10]);

Cette fonction utilise le site http://ipinfodb.com pour récupérer la latitude et la longitude de l’IP qui se connecte au site.

function balise_LATITUDE($p){
  $ip = $p->param[0][1][0]->texte ;
  $p->code = "calculer_balise_LATITUDE($ip)";
  $p->interdire_scripts = false;
  return $p;
}

function calculer_balise_LATITUDE() {
  $xml = get_url_contents("http://api.ipinfodb.com/v2/ip_query.php?key=<your_api_key>&ip=" . $_SERVER['REMOTE_ADDR']);
 $latitude = preg_replace("/<\/?Latitude>/", "", $xml[9]);
  return round($latitude, 1);
}


function balise_LONGITUDE($z){
  $ip = $z->param[0][1][0]->texte ;
  $z->code = "calculer_balise_LONGITUDE($ip)";
  $z->interdire_scripts = false;
  return $z;
}

function calculer_balise_LONGITUDE() {
  $xml = get_url_contents("ttp://api.ipinfodb.com/v2/ip_query.php?key=<your_api_key>&ip=" . $_SERVER['REMOTE_ADDR']);
 $longitude = preg_replace("/<\/?Longitude>/", "", $xml[10]);
  return round($longitude, 1);
}

Ces fonctions transforment la valeur du code PHP en balise spip en l’occurrence #LATITUDE et #LONGITUDE.

2. Copier le code suivant dans votre squelette

#SET{demi_precision, 0.3}
#SET{lat_min, #LATITUDE|moins{#GET{demi_precision}}}
#SET{lat_max, #LATITUDE|plus{#GET{demi_precision}}}
#SET{long_min, #LONGITUDE|moins{#GET{demi_precision}}}
#SET{long_max, #LONGITUDE|plus{#GET{demi_precision}}}

<BOUCLE_gis(spip_gis){lat >= #GET{lat_min}}
                    {lat <= #GET{lat_max}}
                    {lonx >= #GET{long_min}}
                    {lonx <= #GET{long_max}}>

Vous pouvez élargir ou diminuer le périmètre de la géolocalisation en modifiant la valeur 0.3.

On fait la requête sur la table SPIP_GIS pour obtenir les #ID_ARTICLE correspondant au périmètre de la géolocalisation. (Attention à partir de SPIP 2.1, le nom de la table s’écrit comment il est saisi dans la base en l’occurrence spip_gis).

suite du code

<BOUCLE_bis(ARTICLES){id_article}{pagination}>
  <a href="#URL_ARTICLE">
  #TITRE
  </a>
</BOUCLE_bis>
      <div>#PAGINATION{precedent_suivant}</div>
</B_bis>
         Il n'y a pas encore d'article géolocalisé proche de chez vous.
<//B_bis>

</BOUCLE_gis>

NB :Cette boucle est bien sûr à modifier en fonction de vos attentes d’affichage des données.

Voir en ligne : http://plugins.spip.net/geo_visiteurs

Dernière modification de cette page le 11 juin 2012

Retour en haut de la page

Vos commentaires

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Le plugin ZotSpip

    28 mai 2012 – 138 commentaires

    Synchronise Spip avec une bibliothèque (personnelle ou partagée) de références bibliographiques Zotero. Utilisez Zotero pour gérer / importer / rédiger vos références bibliographiques, puis incorporez vos références bibliographiques dans votre Spip avec (...)

  • ScolaSPIP 4

    19 janvier 2016 – 213 commentaires

    ScolaSPIP est plugin-squelette responsive personnalisable pour sites Web d’établissements scolaires basé sur SPIPr Présentation de ScolaSPIP Ce plugin pour SPIP 3 est développé par la Dane de l’académie de Versailles pour les webmestres de cette (...)

  • MediaBox

    10 mai 2010 – 514 commentaires

    Avertissement Le présent plugin est installé et activé par défaut sur toute les version de SPIP > 3.0. Inutile donc de l’installer manuellement sauf si vous utilisez SPIP 2.1. Aperçu La MediaBox est une Boîte multimédia polyvalente et (...)

  • Sommaire automatique

    31 janvier 2013 – 14 commentaires

    Ce plugin repère les intertitres des textes de vos articles et s’en sert pour génèrer un sommaire. Ce dernier peut être inséré automatiquement au début de chaque article, ou utilisé dans les squelettes pour générer un sommaire sur n’importe quel autre (...)

  • La Fabrique

    20 avril 2012 – 316 commentaires

    La Fabrique est un outil pour webmestres ou développeurs qui souhaitent créer des plugins. La Fabrique est capable de générer le code source minimal d’un plugin pour SPIP 3 (elle accélère donc le démarrage d’un plugin) et peut s’occuper également de (...)

Ça spipe par là