La base
L’appel du formulaire #FORMULAIRE_EDITER_ARTICLE{id_article, id_rubrique, retour, lier_trad}
est décrit dans la documentation de SPIP pour un article comme pour les autres objets SPIP.
Avec cette simple ligne dans votre squelette vous pouvez publier un formulaire fonctionnel d’ajout ou de modification d’un article ou de tout objet SPIP.
Rendre ces formulaires publics :
Comme indiqué dans la documentation, vous appelez le formulaire dans un squelette de votre choix.
En pratique, ça peut donner :
Pour un nouvel article :
#FORMULAIRE_EDITER_ARTICLE{new, XXX, #SELF}
où XXX est le numéro de la rubrique dans laquelle vous souhaitez que les articles soient enregistrés.
Pour l’édition d’un article :
Dans une boucle ARTICLES, qui donnera la valeur du #ID_ARTICLE, ou en remplaçant #ID_ARTICLE par #ENV{id_article}
si vous passez le numéro d’article dans l’url :
#FORMULAIRE_EDITER_ARTICLE{#ID_ARTICLE, #ID_RUBRIQUE, #SELF}
Pour l’édition d’un article, de son logo et de ses documents joints - en SPIP3 (dans une boucle ARTICLES) :
#FORMULAIRE_EDITER_LOGO{article,#ID_ARTICLE,#SELF,#ENV**}
#FORMULAIRE_EDITER_ARTICLE{#ID_ARTICLE, #ID_RUBRIQUE, #SELF}
<INCLURE{fond=plugins-dist/medias/prive/objets/editer/colonne_document,objet=article,id_objet=#ID_ARTICLE,env} />
Si vous souhaitez vérifier/restreindre les droits
Vous pouvez vérifier/restreindre le droit de proposer un article. Par exemple :
Est-ce que l’auteur est bien loggé :
[(#SESSION{id_auteur}|oui)
#FORMULAIRE_EDITER_ARTICLE{new, "0", #SELF}
]
Est-ce que l’auteur a le droit de modifier l’article en question (pour l’édition d’un article pré-existant, donc dans une boucle ARTICLES) :
[(#AUTORISER{modifier,article,#ID_ARTICLE}) #FORMULAIRE_EDITER_ARTICLE{#ID_ARTICLE, #ID_RUBRIQUE, #SELF}
]
N.B. : la gestion des autorisations se définit via le plugin « Autorité », où en surchargeant dans votre fichier mes_options.php les fonctions « autoriser ».
Et si vous voulez personnaliser votre formulaire ?
Il faut alors faire vos propres formulaires, à partir des originaux.
Dans votre dossier « squelettes », dans lequel vous rangez vos squelettes personnalisés, dans un sous dossier « formulaires », vous copiez les fichiers suivant :
- editer_article.html
- editer_article.php
Vous trouverez les originaux dans le dossier original « /privé/formulaires/ » de votre SPIP.
Si vous voulez qu’ils soient utilisés partout, y compris dans l’espace privé, vous les copiez sans modifier les noms (principe de la « surcharge »).
Si vous voulez les appeler ponctuellement à certains endroits, pour porposer par exemple une version allégée du formulaire de rédaction, il faut les personnaliser :
Vous les renommez, par exemple :
- editer_article_public.html
- editer_article_public.php
Puis vous ouvrez votre « editer_article_public.php » tout frais, et à chaque fois que vous trouvez l’occurence « editer_article », vous la remplacez par « editer_article_public »
Ainsi par exemple, « formulaires_editer_article_charger_dist » devient « formulaires_editer_article_public_charger_dist », etc.
Et voilà, bravo, c’est prêt !
Tous vos appels de formulaires -décrits plus haut- devront alors être fait avec ce nouveau nom, par exemple :
#FORMULAIRE_EDITER_ARTICLE_PUBLIC{#ID_ARTICLE, #ID_RUBRIQUE, #SELF}
Pré-définir des valeurs
Vous pouvez dans le fichier editer_article_public.html définir des valeurs en remplaçant des champs par des input hidden.
par exemple :
<input type='hidden' id='statut' name='statut' value='prop' />
Ca peut aussi être fait dans editer_article_public.php, via la fonction formulaires_editer_article_public_charger_dist.
Retirer des champs
Vous pouvez retirer des champs du formulaire editer_article_public.html si vous le souhaitez (à l’exception du titre et du champ rubrique, sauf à les avoir pré-définis comme ci-dessus).
Et aussi
A voir également d’autres illustrations ici
[EDIT 1mars2017] Des options complémentaires dans cette discussion
Discussions par date d’activité
31 discussions
Je cherche à ajouter automatiquement un seul mot-clé (toujours le même) aux articles enregistrés par un formulaire public, sans que le mot-clé soit visible dans le formulaire lui-même.
J’ai le même besoin. As-tu trouvé la solution ?
Répondre à ce message
Comment faire pour qu’un seul champ EXTRA s’affiche.
Avec #FORMULAIRE_EDITER_ARTICLE#ID_ARTICLE, #ID_RUBRIQUE, #SELF
tous les champs EXTRA s’affichent et je n’en veux qu’un seul par le formulaire ???
Merci
Astuce de Sioux pas très conventionnelle mais qui marche. Avec le CSS faire display:none pour les champs que vous ne souhaitez pas en public ;)
Répondre à ce message
Bonsoir mon problème est simple..
J’aimerai que les les membres où les visiteurs de mon site puissent poster leurs publications et je ne sais pas du tout quel code composer pour ajouter cette option là. Aidez moi je vous en pris.
Merci d’avence
Salut,
l’article sur lequel tu poste est clairement daté. Je te suggère de demander de l’aide sur les listes de discussions de SPIP :
http://listes.rezo.net/mailman/listinfo/spip/
Je reviens avec une autre question, j’ai créé un formulaire d’inscription, le problème c’est que ce formulaire n’emmène nulle part et j’aimerais que, si les info remplis sont validees, je sois dirigé vers la page de d’accueil.
Voici mon code :
Remplissez ce formulaire pour confirmer votre inscription :
Bonjour,
La procédure décrite ici est toujours valide, mais adaptée pour les objets spip.
Pour un formulaire sur-mesure :
- Consultez https://programmer.spip.net/-Formulaires-35- et https://www.spip.net/fr_article3796.html
- Pour la majorité des cas un plugin permet désormais de tout faire en cliquant, voir ici le plugin Formidable
Répondre à ce message
Bonjour,
Est-ce qu’on peut pré remplir certains champs du formulaire ?
Par exemple avec #FORMULAIRE_EDITER_ARTICLEnew, titre=fruits, #SELF
Répondre à ce message
Bonjour,
est-il possible d’afficher le module d’ajout de documents en partie publique ???
Cordialement
oui de la même façon
Oui, l’affichage fonctionne pour l’ajout de document public... en revanche, j’ai un petit soucis. Après « téléversement » d’une image, j’ai bien le message de confirmation de chargement avec succès, mais le visuel du document n’apparait pas automatiquement dans la liste des fichiers à disposition... il faut manuellement recharger la page pour qu’il apparaisse :-(
Une idée pour convenablement reproduire le mécanisme de l’upload façon espace privé ?
Ah, ça y est ça marche.
J’avais déjà, comme indiqué par mmmx le 22 avril, ajouté un cache à 0 au fichier plugins-dist/medias/prive/objets/editer/colonne_document.html .
Dans mon cas cela ne suffisait pas, j’ai également ajouté un cache à 0 au fichier plugins-dist/medias/prive/squelettes/inclure/colonne-documents.html.
Bonjour,
J’ai le même problème.
Mais chez moi je n’ai toujours rien même après avoir ajouté un #CACHE0 aux squelettes
plugins-dist/medias/prive/objets/editer/colonne_document.html et
plugins-dist/medias/prive/squelettes/inclure/colonne-documents.html
Plus généralement, si on veut afficher le formulaire d’édition d’article + le formulaire de chargement d’images dans un squelette spécifique, en dehors d’une BOUCLE ARTICLES, quelle serait la solution ?
Contribution trés intéréssante qui ma permis de finir ma partie Formulaire de soumission d’article ; ne reste plus que les documents joint on je serais BON ! =)
Également le même problème. A moins que je fasse mal ma surcharge !
Pouvez-vous me confirmer où surcharger :
J’ai tenté dans squelettes/prive/.... et dans plugins/medias/....
Pour que ça fonctionne, il faut que l’article soir déjà créé. Donc on n’est pas dans la config de l’admin, avec ajout de documents pour un article en première écriture
moi je mets
et fonctionne aussi
Pour passer l’id d’article on peut
- mettre une boucle autour de l’appel ci-dessus et laisser le #ID_ARTICLE
- en dehors d’une boucle, récuperer l’id dans l’url en remplaçant le #ID_ARTICLE par
#ENV{id_article}
- voir remplacer directement par le numéro d’article en dur (ex : « 19 »)
- ou encore utiliser une variable (voir #SET et #GET http://www.spip.net/fr_article3990.html#SET)
Merci beaucoup !
J’ai donc créer une deusieme page (Etape Facultative) avec la confirmation de leur article, le récaptitulatif et la possibilité de joindre les documents.
Bonjour,
J’utilise cette méthode, avec une seconde page pour l’ajout des documents.
J’aimerais rediriger vers une dernière page de confirmation une fois qu’on envoie les documents, mais je ne sais pas où indiquer cette redirection dans ce code.
Pour le moment, quand on valide l’envoi des documents, on est redirigé sur la page d’accueil du site, avec dans l’adresse de la page, l’adresse du site suivie de ##docXXXX" (XXXX étant le numéro du document envoyé).
Savez-vous comment je dois préciser sur quelle page je veux rediriger ?
Merci à vous.
Je précise que lorsque je fais envoyer sur le formulaire mais que je n’ai pas ajouté d’image, je reste bien sur la page avec un message d’erreur. Mais dès lors que j’ajoute un fichier, et que je l’envoie, ça fonctionne mais ça me redirige vers la page d’accueil du site.
J’aimerai avoir ce message de confirmation.
Bonjour,
A priori il faut aussi renseigner la variable redirect qui est prévue pour ça
http://programmer.spip.net/Effectuer-des-traitements
(soit dans les arguments du INCLURE, soit dans le php correspondant, dans la partie traiter)
Merci :-)
N’étant pas adepte du php, sais-tu quel argument dans l’inclure je dois ajouter, et à quel endroit ?
Toutes mes tentatives sont restées vaines.
en fait dans les appels pris en exemple c’est le parametre
ou dans le fichier php correspondant, sur l’exemple de la définition du redirect ici http://programmer.spip.net/Traitement-sans-AJAX
Merci pour tes réponses.
Je n’ai pas réussi avec cette méthode.
Je suis passé par la méthode « dans une boucle articles ». Cependant, j’ai dû ajouter le critère « tout » pour que l’article nouvellement créé s’affiche quand même.
Pas l’idéal de ce que je voulais faire, mais ça fonctionne.
Répondre à ce message
Bonjour,
Je viens vers vous avec un problème pour le moins bizarre :
Je surcharge les fichiers prive/formulaires/éditer_article.html et éditer_article.php
dans squelettes/formulaires/
Je mets dans mon squelette rubrique :
#FORMULAIRE_EDITER_ARTICLE{"oui", #ID_RUBRIQUE}
Cela fonctionne !
Par contre quand je renomme :
editer_article.html en editer_article_public.html
editer_article.php en editer_article_public.php
ce dernier j’ai biensûr pris soin de remplacer les occurrences éditer_article en ajoutant _public
comme lu dans ce tuto.
J’utilise maintenant donc :
#FORMULAIRE_EDITER_ARTICLE_PUBLIC{"oui", #ID_RUBRIQUE}
Le formulaire s’affiche mais l’enregistrement ne s’opère pas !
A noter que si le formulaire s’affiche, il n’affiche pas la rubrique concernée .
Voilà mon soucis.
Merci de l’aide,
Cordialement.
m
Re,
La cause vient du fait que :
j’utilise le plugin polyhierarchie et j’aimerais ne pas l’utiliser en partie publique tout en le conservant en partie privé... comment faire ?
Merci d’avance
Bonjour,
Le plus simple apparemment si on ne veut pas toucher aux « pipelines »,
c’est de cacher le « picker » en CSS....
Merci aux personnes de la liste spip-zone
Cordialement.
J’ai une autre solution (au cas où quelqu’un repasse par ce fil ...)
Le sélecteur est inclus par le plugin polyhiérarchie via le squelette :
plugins/polyhier/formulaires/inc-selecteur-parents.html
Copier ce fichier dans le répertoire squelettes/formulaires/ et le modifier de façon à ce que le sélecteur ne soit inséré qu’en partie privée avec le test suivant :
[(#REM|test_espace_prive|oui) on est dans le privé ]
Ce qui nous donne :
Merci à tous !
Répondre à ce message
est-il possible de sauvegarder l’article et téléverser un document (associée dans cet ID_ARTICLE) en même temps ?
en cas de l’utilisation de :
Cela m’intéresse aussi !
Up !
Répondre à ce message
Bonjour,
J’aimerai pouvoir ajouter / supprimer des auteurs liés à l’article coté public.
Mais je n’arrive pas à faire apparaitre le fichier auteurs_lies.html (utilisé dans privé) situé dans prive/objets/list
Si vous avez une idée !
Merci d’avance.
Une solution : utiliser le plugin CISF saisie facile et utiliser le fichier cisf_auteur.html
Répondre à ce message
Bonjour
Bravo pour cet article très utile.
Je voudrais imposer une rubrique donc désactiver l’affichage du choix de la rubrique dans le formulaire public.
Je n’ai pas très bien compris comment cacher ce champ... que modifier dans mon fichier editer_article_public
Un peu d’aide, s’il vous plait.
Merci
Bonjour,
Pour ma part je l’ai caché en CSS.
Cordialement.
Répondre à ce message
Bonjour,
J’utilise les champs extra3 et je n’ai pas de problème pour les afficher quand j’appelle #FORMULAIRE_EDITER_ARTICLE coté public.
En revanche les champs extra avec l’affichage conditionnelle ne fonctionnent pas dans #FORMULAIRE_EDITER_ARTICLE coté public.
style=« display=none » ou style=« display=list-item » n’apparaissent pas coté public (coté privé ok)
Donc tous les champs extra apparaissent sans exception (sans respecter les conditions) !
Je pense qu’il faut rajouter un script quelque part. Vous avez une piste.
Merci.
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 :
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.
Suivre les commentaires : |