SPIP-Immo : Présentation

Plugin SPIP à destination des agences immobilières

Nous avons été amené à travailler pour plusieurs agences immobilières. A cette occasion, nous avons constaté qu’elles avaient toutes les mêmes demandes spécifiques liées à leur activité.

Après avoir cherché en vain une solution open source existante, nous nous sommes tourné vers la possibilité de développer un plugin SPIP dédié à cette clientèle.

Intérêt

Ce plugin permet d’administrer en ligne un portefeuille d’annonces immobilières. Celles-ci peuvent être caractérisées par une soixantaine de champs différents (cf. la liste des balises ci-dessous) Il est possible de leur attacher des photos. Ces dernières sont gérées comme des documents, les filtres du type « image_reduire » leur sont donc applicables.

Saisie d’une annonce
Chaque annonce se définie sur une soixantaine de champs

Toutes les infos sur ce plugin sont disponibles ici : spipimmo.commealaville.com

Des variantes de ce plugin fonctionnent la :

  1. www.commealaville.com/references-web-17-index.html (le site est très ancien et ne fonctionne pas correctement sous FireFox ou IE7, nous le savons, la publication de la refonte est prévue pour le 01/01/2008)
  2. Références SPIP-Immo : n’hésitez pas à signaler ici vos sites qui utiliseraient SPIP-Immo, il s’agit de liens en dur sans contrepartie

Installation

Pour installer le plugin SPIP-Immo, vous devez d’abord télécharger ce fichier : SPIP-Immo-v1.1.zip

Une fois cette opération effectuée :
-  décompressez l’archive ZIP dans le répertoire de votre SPIP,
-  mettez en ligne le contenu du répertoire « SPIPImmo »
-  rendez-vous dans « Configuration > Gestion des plugins » et activez le plugin intitulé « SPIP-Immo : Gestion d’annonces immobilières »

Rendez-vous sur la page « Édition > SPIP-Immo » et suivez les instructions pour terminer l’installation.

liste des annonces

Utilisation dans les squelettes

Votre plugin SPIP-Immo est installé et fonctionnel. Pour extraire les données que vous aurez saisie via les formulaires de l’espace privé dans vos squelettes, il ne vous reste plus qu’à créer vos boucles selon les exemples suivants :

Boucle ANNONCES

<BOUCLE_annonce(ANNONCES){id_annonce=#ENV{id_annonce}}{publier=oui}{…}>
…
</BOUCLE_annonce>

Boucle DOCUMENTS_ANNONCES

<BOUCLE_doc(DOCUMENTS_ANNONCES){numero_dossier=#ENV{id_annonce}}{…}>
…
</BOUCLE_doc>

Liste des balises existantes

-  #URL_ANNONCE : URL de l’annonce, filtre d’URL Rewriting : lien_annonce_propre ; fonctionne uniquement si un fichier .htaccess est installé et correctement paramétré (cf. Liste des paramètres existants)
-  #ID_DATE : date de saisie de l’offre, tous les filtres de gestion de dates peuvent s’y appliquer
-  #TYPE_OFFRE : type de bien (Appartement, Maison / Villa, Parking, Terrain, Commerce, Boutique, Local, Bureaux, Loft / Atelier / Surface, Divers, Immeuble, Hangar, Bureau / Local commercial, Hôtel particulier)
-  #TYPE_MANDAT : type de mandat obtenu par l’agence (simple, semi privilège, privilège, exclusif)
-  #DATE_MODIFICATION : date de modification de l’offre, tous les filtres de gestion de dates peuvent s’y appliquer
-  #DATE_DISPONIBILITE : date de disponibilité du bien (libération par les occupants actuels)
-  #TRAVAUX : montant des travaux à effectuer/envisager
-  #CHARGES : montant des charges...
-  #DEPOT_GARANTIE : montant du dépot de garantie nécessaire à la signature
-  #TAXE_HABITATION : montant de la taxe d’habitation
-  #TAXE_FONCIERE : montant de la taxe foncière (uniquement dans le cas d’une vente...)
-  #ADR_BIEN_1 : adresse du bien
-  #ADR_BIEN_2 : suite de l’adresse du bien
-  #CP_BIEN : code postal du bien
-  #VILLE_BIEN : ville du bien
-  #CP_INTERNET : code postal spécifique à l’affichage en ligne (très utile en milieu rural)
-  #VILLE_INTERNET : ville spécifique à l’affichage en ligne (très utile en milieu rural)
-  #QUARTIER : nom ou numéro du quartier
-  #SECTEUR : secteur géographique (très utile en milieu rural)
-  #RESIDENCE : nom de la résidence
-  #TRANSPORT : type de transports déservant le bien
-  #PROXIMITE : services à proximité (gare, école, déchetterie...)
-  #CATEGORIE
-  #NB_PIECES : nombre de pièces
-  #NB_CHAMBRES : nombre de chambre
-  #SURF_HABIT : surface habitable
-  #SURF_CARREZ : surface Carrez (uniquement pour la France : correspond à un savant calcul instauré par une loi proposée par le député Carrez et à visant ne pas tenir compte de surfaces se situant, entre autre, sous la barre des 180 cm : Loi Carrez)
-  #SURF_SEJOUR : Surface du séjour
-  #SURF_TERRAIN : Surface du terrain
-  #ETAGE : Nombre d’étage du bien (ex : duplex => 2 étages)
-  #NB_ETAGE : Nombre d’étage (ex : pour les immeubles)
-  #CODE_ETAGE : Numéro de l’étage où se situe le bien
-  #ANNEE_CONS : Année de construction du bien
-  #TYPE_CUISINE : Le type de cuisine (ex : américaine, kitchenette,...)
-  #NB_WC : Nombre de toilettes
-  #NB_SDB : Nombre de salles de bain
-  #NB_SDE : Nombre de salles d’eau
-  #NB_PARK_INT : Nombre de parkings intérieurs
-  #NB_PARK_EXT : Nombre de parkings extérieurs
-  #NB_GARAGES : Nombre de garages
-  #NB_CAVES : Nombre de caves
-  #TYPE_SOUSSOL : Type de sous-sol (ex : complet)
-  #TYPE_CHAUF : Type de chauffage (ex : collectif, individuelle, ...)
-  #NAT_CHAUF : Nature du chauffage (ex : gaz, électrique, fuel, ...)
-  #ASCENSEUR : Ascenseur (oui/non)
-  #BALCON : Nombre de balcons
-  #TERRASSE : Nombre de terrasses
-  #PISCINE : Piscine (oui/non)
-  #ACCES_HANDI : Accès aux personnes à mobilité réduite (oui/non)
-  #NB_MURS_MIT : Nombre de murs mitoyens
-  #FACADE_TERRAIN : Surface de la façade du Terrain
-  #TEXTE_ANNONCE_FR : Texte d’annonce en français
-  #TEXTE_ANNONCE_UK : Texte d’annonce en anglais
-  #TEXTE_ANNONCE_SP : Texte d’annonce en espagnol
-  #TEXTE_ANNONCE_DE : Texte d’annonce en allemand
-  #TEXTE_ANNONCE_IT : Texte d’annonce en italien
-  #TEXTE_MAILING : Texte de mailing (pour l’envoi d’un e-mail lors de la création de l’annonce)
-  #PRESTIGE : Bien prestigieux ou pas

Liste des paramètres existants

Gestion des paramètres dans les boucles ANNONCES et DOCUMENTS_ANNONCES.

La boucle ANNONCES

Voici la liste exhaustive des paramètres qui peuvent être passés dans la boucle ANNONCES (en gras, ceux qui nous ont semblé les plus important)

-  {lien_annonce_propre}
-  {id_annonce=numérique}
-  {id_date=une date au format datetime (ex. : 2008-01-15 00:00:00)}
-  {publier=Oui/Non}
-  {vente_location=Vente/Location}
-  {type_offre="Appartement", "Maison / Villa", "Parking", "Terrain", "Commerce", "Boutique", "Local", "Bureaux", "Loft / Atelier / Surface", "Divers", "Immeuble", "Hangar", "Bureau / Local commercial", "Hôtel particulier" : sans les guillemets}
-  {n_mandat=texte}
-  {type_mandat=SIMPLE/SEMI PRIVILEGE/PRIVILEGE/EXCLUSIF}
-  {date_offre=date au format jj/mm/aaaa (ex. : 03/12/2007)}
-  {date_modification=date au format jj/mm/aaaa (ex. : 03/12/2007)}
-  {date_disponibilite=date au format jj/mm/aaaa (ex. : 03/12/2007)}
-  {negociateur=texte}
-  {prix_loyer=numérique}
-  {honoraires=numérique}
-  {travaux=numérique}
-  {charges=numérique}
-  {depot_garantie=numérique}
-  {taxe_habitation=numérique}
-  {taxe_fonciere=numérique}
-  {adr_bien_1=texte}
-  {adr_bien_2=texte}
-  {cp_bien=numérique}
-  {ville_bien=texte}
-  {cp_internet=numérique}
-  {ville_internet=texte}
-  {quartier=texte}
-  {residence=texte}
-  {transport=texte}
-  {proximite=texte}
-  {secteur=texte}
-  {categorie=Maison/Appartement/Studio}
-  {nb_pieces=numérique}
-  {nb_chambres=numérique}
-  {surf_habit=numérique}
-  {surf_carrez=numérique}
-  {surf_sejour=numérique}
-  {surf_terrain=numérique}
-  {etage=numérique}
-  {code_etage=numérique}
-  {nb_etage=numérique}
-  {annee_cons=numérique aaa (ex. : 1930)}
-  {type_cuisine=texte}
-  {nb_wc=numérique}
-  {nb_sdb=numérique}
-  {nb_sde=numérique}
-  {nb_park_int=numérique}
-  {nb_park_ext=numérique}
-  {nb_garages=numérique}
-  {type_soussol=texte}
-  {nb_caves=numérique}
-  {type_chauf=texte}
-  {nat_chauf=texte}
-  {ascenseur=Oui/Non}
-  {balcon=numérique}
-  {terrasse=numérique}
-  {piscine=Oui/Non}
-  {acces_handi=Oui/Non}
-  {nb_murs_mit=numérique}
-  {facade_terrain=numérique}
-  {texte_annonce_fr=texte}
-  {texte_annonce_uk=texte}
-  {texte_annonce_sp=texte}
-  {texte_annonce_de=texte}
-  {texte_annonce_it=texte}
-  {texte_mailing=texte}
-  {prestige=Oui/Non}

La boucle DOCUMENTS_ANNONCES

-  {id_document=numérique}
-  {numero_dossier=numérique (ex. : #ID_ANNONCE)}
-  {fichier=texte}
-  {taille=numérique}

Améliorations apportées pour la v2.0


-  Les nouveautés
-  Les balises
-  Les boucles

Les nouveautés

-  Formulaire du moteur de recherche (qui renvoie vers spip.php ?page=resultat_spipimmo),
-  Graphisme (utilisation des styles SPIP de l’interface d’administration),
-  Gestion des documents,
-  Gestion des formats d’images (gif, png et jpeg),
-  Gestion automatique des mises à jours,
-  Processus de désinstallation automatique,
-  Création d’une boucle des types d’offres.

Les boucles

Quelques changements interviennent dans les boucles :

-  Boucle ANNONCES : le critère « publie » n’est plus nécessaire, la boucle affiche par défaut les biens publiés,
-  Boucle DOCUMENTS_ANNONCES : la gestion distincte des documents et des images implique la création des critères {spipimmo_image} et {spipimmo_document}, ce qui donne, par exemple :

<BOUCLE_doc(DOCUMENTS_ANNONCES){spipimmo_image}{numero_dossier=#ENV{id_annonce}}{…}>
…
</BOUCLE_doc>

...qui listera l’ensemble des images de l’annonce.

-  Création d’une nouvelle boucle : TYPES_OFFRES ; celle-ci renvoie les types d’offres stockés dans la table correspondante ; l’utilité réside dans la mise en place d’une navigation par types d’offres...

Les balises

-  #FORMULAIRE_SPIPIMMO : insérée dans un squelette, cette balise vous affichera le formulaire suivant :

Vous pouvez personnaliser l’affichage en modifiant le squelette de la balise, éditable là « /plugins/SPIPImmo/formulaires/formulaire_spipimmo.html ».

Le formulaire pointe sur spip.php ?page=resultat_spipimmo, ce qui implique la création du squelette resultat_spipimmo, non inclus dans le plugin.

Discussion

26 discussions

  • Et bien si je peux aider ce sera avec plaisir, mais hormis un peu de php, pour l’intégration des fonctionnalités pour SPIP là j’y connait rien malheureusement. Je fais des sites sous SPIP mais je n’ai malheureusement pas le temps de me pencher correctement sur la programmation de plugin. Dans tous les cas si je peux vous aider ce sera avec grand plaisir.

    A bientôt

    Répondre à ce message

  • 1

    Bonjour,

    Je viens de me pencher un peu sur votre plugin et je me trouve confronter même souci de gestion par le particulier des ses propres annonces.
    Je trouve votre plugin très bien fait et la quantité de champs m’a impressionné car généralement c’est très limité, ici on peut faire face à tous les cas de figure ou quasiment je pense.
    Pour ce qui est du développement, je ne pourrais guère vous aider car je fais plutôt de l’intégration et je ne maitrise pas les pipelines de spip (ça viendra un jour j’espère) mais par contre je peux vous soumettre des idées.
    En effet, pour développer ce que j’appellerais le module de publication d’annonces en ligne, c’est en effet de créer une table de jointure id_visiteur et id_annonce en passant par un formulaire d’inscription donnant accès soit à une nouvelle annonce, ou si le visiteur est déjà identifié, à l’accès à ses annonces en ligne et le choix d’en créer une nouvelle, de dépublier ou de modifier par le biais d’un formulaire en ligne de récolte d’information d’annonce pour l’importer dans la base de données.
    Ceci permettrait de ne pas dévoiler le back-office aux visiteurs(créateurs d’annonces) et de leur faciliter la tâche de remplissage et de modification d’annonces comme sur les sites d’annonces gratuites.
    De plus la sécurité du système en serait plus efficace (la mise en place d’un captcha intégré au formulaire serait un plus non négligeable).
    Si mon cheminement ne vous parait pas très clair, je suis bien évidemment disponible pour en discuter plus avant. Je ne sais pas si mes idées peuvent vous aider mais qui ne dit rien n’aide pas non plus alors...

    • Bonjour Keuls,

      Vos idées sont bonnes en effet. Notre objectif premier est de permettre la liaison d’auteurs aux annonces. Cela sera fait prochainement, nous l’espérons.

      Merci pour les propositions, nous ne manquerons pas de vous demander une contribution si le besoin s’en fait sentir (et ce sera probablement le cas).

      A+
      Calv

    Répondre à ce message

  • CyberPret

    Je commencerais probablement à plancher sur l’idée un peu avant, c’est un travail qui m’a été demandé. Autant qu’il profite à tout le monde, cela dit.

    Histoire de ne rien casser, je pense créer une table de jointure visiteur / annonce. Le mieux serait de rajouter un champs id_visiteur dans la table annonce, sans doute... Et de créer les requêtes qui vont bien. À réfléchir, en tout cas.

    Merci ! :)

    Répondre à ce message

  • 1
    CyberPret

    Ce plugin a l’air absolument génial ! Peut-on gérer avec un système d’annonces entre particuliers ? Un particulier s’inscrit, en tant que visiteur, par exemple, et pourrait, en restant dans la partie publique du site, ajouter une annonce, gérer ses anciennes annonces, etc.

    Si ça n’est pas possible en l’état, je veux bien aider à son développement.

    • Salut,

      Merci pour les compliments et les encouragements. L’idée est intéressante et nous travaillons parfois sur des solutions basées sur le même principe. Nous rencontrons toutefois un problème : nos annonces ne sont pas gérées comme des articles ou des brèves. On ne peut pas les ranger dans des rubriques ou leur attribuer un auteur.

      Nous avons déjà réfléchi à cela mais n’avons pu le mettre en place, par faute de temps.

      Alors, forcément, oui, cette proposition de travail collaboratif est la bien venue !

      Pourrions nous en reparler d’ici une huitaine ?

      a+
      Calv

    Répondre à ce message

  • Très certainement, oui ;)

    Répondre à ce message

  • bonne idée d’avoir partagé ton travail, il se révélera certainement bien utile ;)

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

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

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom