SPIPImmo: gestion d'annonces immobilières
Le plugin SPIPImmo fonctionne très bien tous seul, seulement je souhaité avoir ces fonctionnalités supplémentaires depuis une page d'annonce :
- Envoyer un mail à une connaissance si l'annonce pourrait l'intéresser.( Auteur joseluis-> http://www.spip-contrib.net/Envoyer-a-un-ami,764 )
- Pouvoir générer un PDF de l'annonce sur laquelle on se trouve. (Auteurs chag Paul Sanches Aquinatus Cédric Morin -> http://www.spip-contrib.net/Article-PDF )
- Pourvoir imprimer l'annonce et quelques photos de celle-ci. ( Auteur joseluis-> http://www.spip-contrib.net/Imprimer-document )
Le deuxieme constat et que toutes ces fonctionnalités existent déjà en plugin sur Spip-contrib.net mais elles ne fonctionnent que pour les pages d'articles et breves, éléments gérés par défaut par SPIP et non pour les page annonce.html de SPIPImmo.
Qu'à cela ne tienne, tous est sous licence Libre et modifiable, améliorable...
C'est trois plugins fonctionnent quasiment de la même manière, vous insérer la balise fournie avec le plugin et grâce à celle-ci, il apparaît sue le site public une icone accompagné d'un texte, après le clic sur ce lien, une fonction est activé et renvoie sur une page:
- un Formulaire pour envoyer à un ami
- la Génération d'un PDF
- une Boite à outils d'impression du document
Il existe donc la balise #ARTICLE_PDF, #ENVIAR_MAIL et #IMPRIMIR_DOCUMENT, le # chez SPIP indique une balise rattaché à une fonction php qui commence toujours par "function balise_#NOM_DE_LA_BALISE" et qui est rangé dans le répertoire balise du plugin imprimir_documento.
Donc pour prendre en compte les annonces, il faut se pencher sur ce fichier et ajouter une condition pour gérer la prsie en charge des pages annonce.html, exemple:
Fonction de la Balise #IMPRIMIR_DOCUMENTO par défaut:
function balise_IMPRIMIR_DOCUMENTO($p) {
if ($GLOBALS['contexte']['id_breve'] == "") {
$arg="'page=imprimir_articulo&id_article='.".champ_sql('id_article', $p);
}
else {
$arg="'page=imprimir_breve&id_breve='.".champ_sql('id_breve', $p);
}
$p->code ="preparar_enlace_imprimir($arg)";
$p->statut = 'html';
return $p;
}
On voit entre les condition (if else) qu'il prends en compte l'identifiant de l'article et l'identifiant de la brève seulement, pour rajouter annonce il faut rajouter une condition grâce à ce bout de code:
elseif ($GLOBALS['contexte']['id_annonce'] > 0) {
$arg="'page=imprimir_annonce&id_annonce='.".champ_sql('id_annonce', $p);
}
Ce qui donne au final pour la fonction de la Balise #IMPRIMIR_DOCUMENTO :
function balise_IMPRIMIR_DOCUMENTO($p) {
if ($GLOBALS['contexte']['id_breve'] > 0) {
$arg="'page=imprimir_articulo&id_article='.".champ_sql('id_article', $p);
}
elseif ($GLOBALS['contexte']['id_annonce'] > 0) {
$arg="'page=imprimir_annonce&id_annonce='.".champ_sql('id_annonce', $p);
}
else {
$arg="'page=imprimir_breve&id_breve='.".champ_sql('id_breve', $p);
}
$p->code ="preparar_enlace_imprimir($arg)";
$p->statut = 'html';
return $p;
}
En regardant de plus près on voit que chaque argument $arg appelle une page html:
- imprimir_articulo
- imprimir_annonce
- imprimir_breve
Il faut donc créer une page imprimir_annonce.html à la racine du répertoire du plugin imprimir_documento en insérant nos boucles SPIP(squelette) et Balise (#TITRE, NB_PIECES, SURF_CARREZ...) pour récupéré les informations qu'on souhaitent avoir dans la page d'impression.
Les deux autres plugins neccessitent les mêmes types de modifications pour fonctionner avec les annonces.