okay j'ai enfin compris l'histoire !
en fait je faisais ça depuis un bail
j'avais un fichier widgets.php que j'appelais au chargement du site.
Ce fichier était en quelque sorte ma bibliothèque d'adons (gallery, menu, carte GG, boutons, etc ...).
Puis dans le template spécifique j'appelais la fonction adéquat.
Avec ce plugin, exit les templates spécifiques, les widgets s'appellent directement à partir du contenu.
Sympa l'idée.
Cependant s'il y a une catégorie d'articles qui appellent à chaque fois un widget de gallery,
il vaut tout de même mieux faire un template spécifique selon moi.
Il y a aussi la question de la mise en page, balancer un diapo dans le flux c'est pas top ...
Faire une mise en page spécifique pour mettre en avant ce diapo c'est mieux.
Autre point, si l'auteur du site n'est pas le créateur,
et si celui-ci souhaite écrire le moins de chose possible (ce qui est toujours le cas),
il vaut mieux aussi dans ce cas automatiser le plus de chose.
Donc faire un template spécifique ...
Par expérience, plus vous laissez à vos clients la possibilité d'écrire (du code qui plus est),
plus nombreuses seront les erreurs ... et plus ils vous appellent pour vous dire "mais pourquoi ..? " !
Nous sommes d'accord,
il y a la personne qui crée son propre site et qui ne comprend rien au code à part faire du copier/coller (utilité des short-codes)
et il y a celle qui ne s'occupe que du contenu et qui fait appel à un pro pour le développement du site. (utilité des templates spécifiques)
Voici un shortcode qui me turlupinait depuis longtemps, pour afficher le contenu d'un plugin à l'intérieur d'une page.
Il est téléchargeable ici.
[Edit : une nouvelle version corrigée et améliorée est disponible dans ce post].
Il remplace le code PHP callHook qui va chercher le contenu du plugin et peut lui transmettre des paramètres,
Ce fichier zip contient un fichier qu'ill faut renommer en config.php et placer à la racine du thème (ou intégrer son contenu au fichier config.php s'il est déjà présent).
En bonus, j'ai ajouté dans ce zip un shortcode de test, pour qui voudra s'essayer aux shortcodes de façon simple (à intégrer également au fichier config.php).
Le shortcode s'appelle plxplugin, et le paramètre plugin="..." sert à donner le nom du plugin, ce qui donne :
Cet code est à utiliser pour un plugin qui affiche directement un contenu (avec "echo").
Si le plugin renvoie une chaîne de texte ou une valeur (avec "return"), il faut ajouter "val-" juste avant le nom du plugin, pour afficher ce contenu :
Important :
Les paramètres du plugin sont à donner les uns après les autres, et non dans un tableau comme avec le callHook habituel qui appelle les plugins.
Une remarque :
Si le shortcode est écrit avec un éditeur Wysiwyg, il sera généralement encadré par une balise p, ce qui ne sera pas génial si le contenu affiché est une balise ul, un bloc div, un formulaire, etc.
Il suffit alors [del]d'activer le plugin shortcode_p (voir ici) et[/del] de remplacer le nom du shortcode plxplugin par -p-plxplugin pour faire disparaître cette balise p.
Comme les shortcodes font partie du projet SPX, la discussion est initialisée ici sur le forum SPX, n'hésitez pas à vous y inscrire !
Lorsqu'un shortcode est écrit avec un éditeur Wysiwyg, comme CKEditor ou TinyMCE, il est généralement encadré par une balise p.
Le plugin shortcode_p permet d'enlever cette balise p, ce qui est nécessaire si le shortocode renvoie un code HTML du type <ul>...</ul> ou <div>...</div> par exemple : voir ici sur le forum PluXml et là sur le forum du projet SPX.
[Edit : Le plugin natif shortcode intègre maintenant cette fonction, cette variante temporaire shortcode_p n'est plus utile]
Une petite mise à jour en version 1.1 intégrant la modification de francis sur la balise p. (Voir l'aide du plugin pour plus de détails).
Option : supression de la balise p
Si on utilise un éditeur Wysiwyg, un shortcode sera en général encadré par une balise p, que l'éditeur crée automatiquement.
Mais si le shortcode renvoie un bloc div, une liste ul ou un formulaire form, ça fait un peu moche de voir l'ensemble entouré par une balise p.
Une option permet d'enlever la balise p encadrant le shortcode, la demande s'effectuant en ajoutant "-p-" avant le nom du shortcode, juste après le crochet ouvrant.
Merci bien Jérôme, j'ai testé et ça marche !
Le plugin shortcode_p n'a plus d'utilité à présent, il est intégré dans cette version de spxshortcodes.
Juste une petite erreur dans le fichier spxshortcodes.php, pour le commentaire de la ligne 99 :
[== PHP ==]
# del p for shorcode with <p>[-p-...][/-p-]</p>
Le préfixe -p- ne s'écrit qu'avant le nom du shortcode, pas à la fin, donc on dirait plutôt :
[== PHP ==]
# del p for shorcode with <p>[-p-...]</p> or <p>[-p-...]...[/...]</p>
Mais ce n'est qu'une ligne de commentaire, le plugin marche très bien quand même
Et je viens de m'apercevoir qu'en tant que plugin indépendant, spxshortcodes ne figurait pas sur la page des plugins non officiels.
J'ai modifié le wiki pour l'ajouter.
C'est une bonne idée d'avoir ouvert une section "shortcodes" sur le forum SPX !
Avec un topic séparé pour chaque shortcode, on s'y retrouvera mieux, c'est quelque chose qui manquait.
Ça permettra aussi de discuter autour d'un shortcode précis et de le faire évoluer.
Merci aussi pour le lien des shortcodes Bootstrap : il y a du monde, là-dedans ! Il y aurait du temps à passer pour sélectionner ce qui est intéressant...
Est-ce que les 3 fichiers inclus suffisent à les faire fonctionner, tous ces shortcodes, ou est-ce qu'il faut Bootstrap complet pour ça ?
Est-ce que les 3 fichiers inclus suffisent à les faire fonctionner, tous ces shortcodes, ou est-ce qu'il faut Bootstrap complet pour ça ?
Tel quel non ça ne fonctionne pas mais ça donne une idée de structure dans des environnements précis comme bootstrap3. Ca fait réfléchir et ça permet de ne pas réinventer la roue qui est déja bien ronde.
Merci Jérôme !
Cette fonctionnalité est intéressante, elle permet de mettre dans le plugin tout ce qui s'y rapporte, y compris un shortcode associé, au lieu d'avoir un morceau dans le fichier config.php du thème.
Encore un grand merci à toi je-evard pour ton boulot.
Maintenant j'aimerais bien l'utiliser avec spxtynimce pour permettre d'appliquer les shortcodes directement via l'éditeur, mais je ne vois pas comment faire.
J'ai préparé deux zip pour toi. (spxtynimce dernière version et spxtinybtshortcode (en beta 0.1)).
pour spxtynimce je l'ai modifié pour qu'un plugin externe puisse rajouter des boutons dans la toolbar.
pour spxtinybtshortcode tu verras j'utilise un système de template bootstrap avec mustache.js (le plus dur est fait). Ca te donnera une idée du comment j'ai opéré. Il y d'autres chemins mais celui-ci me semble pas mal et me correspond (simple et ça marche)
J'ai modifié le shortcode que j'avais proposé ici il y a quelque temps et qui permet d'appeler n'importe quel plugin à l'intérieur d'une page.
Changements :
- rectification d'un problème qui apparaissait lorsqu'il n'y avait aucun argument
- ajout d'une option, pour prévoir le cas où le nom de la fonction appelée dans le callHook est différent du nom du plugin
=> au lieu de [plxplugin plugin="nom_plugin" ...], on écrit alors [plxplugin plugin="nom_plugin/nom_fonction" ...].
Les deux syntaxes sont utilisables.
Et voici le shortcode plxplugin avec ces deux modifications :
[== PHP ==]
/* ---------------------------- FONCTION SHORTCODE plxplugin ---------------------------------*/
// Ce shortcode permet d'appeler n'importe quel plugin actif à l'intérieur d'une page,
// en écrivant un code du type :
// [plxplugin plugin="nom_du_plugin" param1="..." param2="..." param3="..."]
/*
Exemple d'utilisation :
[plxplugin plugin="nom_du_plugin" param1="..." param2="..."]
Les noms des paramètres param1, param2, ... sont à remplacer par ceux utlisés dans le plugin.
Il est possible de fournir un texte à afficher, avant et après : paramètres txtdebut="..." et txtfin="..."
// Si le plugin affiche un contenu avec echo (cas le plus courant), celui-ci est récupéré et retourné par le shortcode
// Sinon, le plugin renvoie une valeur => pour l'afficher, écrire "val-" avant le nom du plugin : plugin="val-nom_du_plugin" au lieu de plugin="nom_du_plugin"
Si le nom de la fonction dans callHook(nom_fonction) est différent de celui du plugin, écrire ce nom après un "/" dans l'argument plugin :
plugin="nom_du_plugin/nom_de_la_fonction" ou avec "val-" plugin="val-nom_du_plugin/nom_de_la_fonction"
/* -------------------------------------------------------------------------------------------*/
function plxplugin_func($tab_atts) {
$atts = shortcode_atts(array("plugin" =>"", "txtdebut"=>"", "txtfin"=>""), $tab_atts);
extract($atts, EXTR_OVERWRITE);
unset($tab_atts["plugin"], $tab_atts["txtdebut"], $tab_atts["txtfin"]); // attributs inutiles à transmettre au plugin
$plxShow = plxShow::getInstance(); // pour appeler les fonctions de la classe plxShow
// Si le nom du plugin est précédé de "val-", c'est qu'il renvoie une valeur qui sera retournée directement
// Sinon, le plugin affiche lui-même le contenu, qu'il faut intercepter pour pouvoir la retourner
if (substr($plugin, 0, 4)=="val-") {
$plugin_retourne_valeur = true;
$plugin = substr($plugin, 4); // suppression des 4 premiers caractères "val-" qui précèdent le nom du plugin
}
else { $plugin_retourne_valeur = false; }
// Si le nom de la fonction (à appeler dans callHook) est différent de celui du plugin, il est mentionné dans l'argument plugin, après le caractère "/"
$tab = explode("/", $plugin);
$plugin = $tab[0];
$fonction = (!empty($tab[1]))? $tab[1] : $plugin;
$txt_attributs = (empty($tab_atts))? NULL : $tab_atts;
// Vérification de l'existence du plugin, avant de l'appeler, pour éviter tout message d'erreur
if ( ! empty($plxShow->plxMotor->plxPlugins->aPlugins[$plugin]) ) {
// Appel de la fonction du plugin par son nom $plugin avec transfert du tableau de paramètres $tab_atts
if ($plugin_retourne_valeur) { // Si le plugin renvoie le contenu sous forme de variable
$resultplugin = $plxShow->plxMotor->plxPlugins->aPlugins[$plugin]->$fonction($txt_attributs);
return $txtdebut . $resultplugin . $txtfin;
}
else { // Si le plugin affiche directement le contenu avec "echo"
ob_start();
$plxShow->plxMotor->plxPlugins->aPlugins[$plugin]->$fonction($txt_attributs);
$resultplugin = ob_get_clean();
return $txtdebut . $resultplugin . $txtfin;
}
}
else { return ""; } // Fin du if ... else ... testant l'existence ou non du plugin
}
add_shortcode( 'plxplugin', 'plxplugin_func' );
Je l'ai testé avec le plugin mcatalogue, cela permet d'afficher les produits d'une catégorie dans n'importe quelle page du site.
Lorsqu'un shortcode est utilisé à partir d'un éditeur comme CKEditor, il est entouré de balises <p> et </p> qu'il faut enlever si le shortcode génère une balise <div> par exemple, sinon le HTML n'est plus valide.
Le préfixe -p- devant le nom du shortcode enlève ces balises p, mais ça ne fonctionne pas bien si le shortcode possède un contenu sur plusieurs lignes, encadré par [-p-nomdushortcode] et [/-p-nomdushortcode].
Les cas de figure à prendre en compte sont les suivants :
Merci pour les modifications, je vais tester ça rapidement et ferais une nouvelle version. Désolé de ne pas être trop sur le forum en ce moment mais je bosse sur un gros gros projet qui se termine. Je pourrais ainsi reprendre mes devs pluxml très bientôt.
Merci Jéjé, je me doutais que tu étais très occupé, on te voyait beaucoup moins sur le forum depuis quelque temps.
Bonne année à toi aussi et bon courage pour ton méga-projet !
Et à très bientôt sur le forum, pour de nouvelles aventures autour de PluXml !
En cherchant pour Wordpress, je vois une fonction qui remplace "<p>[" par "[", etc.
Pas idéal, ça pourrait modifier autre chose que les shortcodes.
Je vois aussi un filtre Wordpress wpautop à modifier et des expressions régulières hyper compliquées, bref pas de solution miracle à première vue.
Ce shortcode ci dessous a insérer dans la config.php de votre thème bien sur :
[== Indéfini ==]
function plx_get_the_ip() {
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
return $_SERVER["HTTP_X_FORWARDED_FOR"];
}
elseif (isset($_SERVER["HTTP_CLIENT_IP"])) {
return $_SERVER["HTTP_CLIENT_IP"];
}
else {
return $_SERVER["REMOTE_ADDR"];
}
}
function plx_contact_form_func( $atts ) {
global $plxShow;
$plxShow = plxShow::getInstance();
$plxShow->plxMotor->plxCapcha = new plxCapcha();
// This line of comment, too, holds the place of the brilliant yet simple shortcode that creates our contact form. And yet you're still wasting your time to read this comment. Bravo.
extract( shortcode_atts( array(
// if you don't provide an e-mail address, the shortcode will pick the e-mail address of the admin:
"email" => "",
"email_cc" => "",
"email_bcc" => "",
"subject" => "",
"label_name" => "Your Name",
"label_email" => "Your E-mail Address",
"label_subject" => "Subject",
"label_message" => "Your Message",
"label_submit" => "Submit",
// the error message when at least one of the required fields are empty:
"error_empty" => "Please fill in all the required fields.",
// the error message when the e-mail address is not valid:
"error_noemail" => "Please enter a valid e-mail address.",
"error_sendemail" => "There is an error, sorry",
"error_antispam" => "There is an error antispam, sorry",
"captcha" => "true",
"label_antispam" => "Antispam",
// and the success message when the e-mail is sent:
"success" => "Thanks for your e-mail! We'll get back to you as soon as we can.",
), $atts ) );
// if the <form> element is POSTed, run the following code
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
$error = false;
// set the "required fields" to check
$required_fields = array( "your_name", "email", "message", "subject" );
// this part fetches everything that has been POSTed, sanitizes them and lets us use them as $form_data['subject']
foreach ( $_POST as $field => $value ) {
if ( get_magic_quotes_gpc() ) {
$value = stripslashes( $value );
}
$form_data[$field] = strip_tags( $value );
}
// if the required fields are empty, switch $error to TRUE and set the result text to the shortcode attribute named 'error_empty'
foreach ( $required_fields as $required_field ) {
$value = trim( $form_data[$required_field] );
if ( empty( $value ) ) {
$error = true;
$result = $error_empty;
}
}
// and if the e-mail is not valid, switch $error to TRUE and set the result text to the shortcode attribute named 'error_noemail'
if (! filter_var($form_data['email'], FILTER_VALIDATE_EMAIL)) {
$error = true;
$result = $error_noemail;
}
if($captcha == "true" AND $_SESSION['capcha'] != sha1($_POST['rep'])){
$error = true;
$result = $error_antispam;
}
// but if $error is still FALSE, put together the POSTed variables and send the e-mail!
if ( $error == false ) {
$email_subject = $form_data['subject'];
// get the message from the form and add the IP address of the user below it
$email_message = $form_data['message'] . "\n\nIP: " . plx_get_the_ip();
if(plxUtils::sendMail($form_data['your_name'],$form_data['email'],$email,$email_subject,$email_message,'text',$email_cc,$email_bcc)) {
// and set the result text to the shortcode attribute named 'success'
$result = $success;
// ...and switch the $sent variable to TRUE
$sent = true;
}else{
$result = $error_sendemail;
}
}
}
if ( $result != "" ) {
if ($error == true)
$info = '<div class="alert red">' . $result . '</div>';
else
$info = '<div class="alert blue">' . $result . '</div>';
}
ob_start();
$plxShow->capchaQ();
$capcha = ob_get_clean();
// anyways, let's build the form! (remember that we're using shortcode attributes as variables with their names)
$email_form = '<form class="contact-form" method="post" action="#form">
<div>
<label for="cf_name">' . $label_name . ':</label>
<input type="text" name="your_name" id="cf_name" size="50" maxlength="50" value="' . $form_data['your_name'] . '" />
</div>
<div>
<label for="cf_email">' . $label_email . ':</label>
<input type="text" name="email" id="cf_email" size="50" maxlength="50" value="' . $form_data['email'] . '" />
</div>
<div>
<label for="cf_subject">' . $label_subject . ':</label>
<input type="text" name="subject" id="cf_subject" size="50" maxlength="50" value="' . $subject . $form_data['subject'] . '" />
</div>
<div>
<label for="cf_message">' . $label_message . ':</label>
<textarea name="message" id="cf_message" cols="50" rows="15">' . $form_data['message'] . '</textarea>
</div>
';
if($captcha == "true") {
$email_form .='
<div>
<label for="id_rep"><strong>' . $label_antispam. '</strong></label>
'.$capcha.'
<input id="id_rep" name="rep" type="text" size="2" maxlength="1" style="width: auto; display: inline;" autocomplete="off" />
</div>
';
}
$email_form .='
<div>
<input type="submit" value="' . $label_submit . '" name="send" id="cf_send" />
</div>
</form>';
if ( $sent == true ) {
return $info;
} else {
return $info . $email_form;
}
}
add_shortcode( 'contact', 'plx_contact_form_func' );
Il permet tout simplement d'afficher un formulaire de contact avec tout ce qui va bien n'importe ou (compatible plucss) et avec antispam optionnel.
Pour l'usage :
[== Indéfini ==]
[contact
email="mymail@toto.fr"
subject="Projet spx 5"
label_name="Votre nom"
label_email="Votre addresse email"
label_subject="Sujet"
label_message="Votre message"
label_submit="Envoyer"
label_antispam="Vérification anti-spam."
error_empty="Veuillez remplir tous les champs."
error_noemail="Veuillez entrer une adresse email valide."
error_sendemail="Il y a eu une erreur d'envoie"
error_antispam="Vous n'avez pas rentrer la bonne lettre pour l'antispam"
success="Merci pour votre message ! Nous reviendrons vers vous dès que possible."
]
A utiliser sans modération dans une bonne page statique sans une ligne de code et sans plugin ! Enjoy !
Ca serait inéressant d'avoir un petit emplacement lié au sujet car les possiblités sont nombreuses et flexibles !
En fait, j'utilise déjà régulièrement une méthode voisine pour afficher un formulaire, avec ce shortcode :
[== PHP ==]
/* ---------------------------- FONCTION SHORTCODE affichage_formulaire ---------------------------------*/
// Affiche le formulaire de contact
//
// Utilisation : [-p-affichage_formulaire] ou [-p-affichage_formulaire lienform="formulaire-contact.php"]
//
// Le préfixe "-p-" avant le shortcode "affichage_formulaire" enlève la balise <p...>...</p> autour du shortcode, pour qu'elle n'entoure pas le formulaire
//
function affichage_formulaire_func($atts) {
// Fonction qui inclut le fichier PHP contenant le formulaire de contact
extract(shortcode_atts(array("lienform" => 'formulaire-contact.php'), $atts));
$plxShow = plxShow::getInstance(); // pour appeler les fonctions de la classe plxShow
// Chemin du formulaire = celui du template courant (ATTENTION : il faut ici utiliser le chemin RELATIF vers le fichier du formulaire)
// Chemin absolu vers le dossier template
ob_start(); $plxShow->template(); $cheminabsolu = ob_get_clean();
// Chemin de la racine du site
ob_start(); $plxShow->racine(); $chemin_racine = ob_get_clean();
// Chemin relatif vers le dossier template
$cheminrelatif = str_replace($chemin_racine, "", $cheminabsolu) . "/";
$fichieraveccheminrelatif = $cheminrelatif . $lienform;
ob_start();
include $fichieraveccheminrelatif;
$txt_form = ob_get_clean();
return $txt_form;
}
add_shortcode( 'affichage_formulaire', 'affichage_formulaire_func' );
et comme indiqué en commentaire, l'utilisation de cette façon à l'intérieur d'une page :
Je n'ai rien contre les plugins mais un de moins ne fera pas de mal
Une petite faute dans le code au niveau de la ligne pour envoyer le mail. Le $email_cc est repeter 2 fois. Le 2eme doit etre remplacer pas $email_bcc je pense
Merci beaucoup.
PS:Je me rends bien compte que j'utilise un plugin pour remplacer un autre plugins mais comme j'utilise deja spxshortcodes...
PS2: desole pour le message original en anglais....des fois j'oublie a qui je parle !
Réponses
en fait je faisais ça depuis un bail
j'avais un fichier widgets.php que j'appelais au chargement du site.
Ce fichier était en quelque sorte ma bibliothèque d'adons (gallery, menu, carte GG, boutons, etc ...).
Puis dans le template spécifique j'appelais la fonction adéquat.
Avec ce plugin, exit les templates spécifiques, les widgets s'appellent directement à partir du contenu.
Sympa l'idée.
Cependant s'il y a une catégorie d'articles qui appellent à chaque fois un widget de gallery,
il vaut tout de même mieux faire un template spécifique selon moi.
Il y a aussi la question de la mise en page, balancer un diapo dans le flux c'est pas top ...
Faire une mise en page spécifique pour mettre en avant ce diapo c'est mieux.
Autre point, si l'auteur du site n'est pas le créateur,
et si celui-ci souhaite écrire le moins de chose possible (ce qui est toujours le cas),
il vaut mieux aussi dans ce cas automatiser le plus de chose.
Donc faire un template spécifique ...
Par expérience, plus vous laissez à vos clients la possibilité d'écrire (du code qui plus est),
plus nombreuses seront les erreurs ... et plus ils vous appellent pour vous dire "mais pourquoi ..? " !
Nous sommes d'accord,
il y a la personne qui crée son propre site et qui ne comprend rien au code à part faire du copier/coller (utilité des short-codes)
et il y a celle qui ne s'occupe que du contenu et qui fait appel à un pro pour le développement du site. (utilité des templates spécifiques)
Les approchent sont différentes.
Tout est dans l'aide...
Le lien pour télécharger "shortcode" est mal formé (www.http//www......).
à plus,
Gzyg
Il est téléchargeable ici.
[Edit : une nouvelle version corrigée et améliorée est disponible dans ce post].
Il remplace le code PHP callHook qui va chercher le contenu du plugin et peut lui transmettre des paramètres,
Ce fichier zip contient un fichier qu'ill faut renommer en config.php et placer à la racine du thème (ou intégrer son contenu au fichier config.php s'il est déjà présent).
En bonus, j'ai ajouté dans ce zip un shortcode de test, pour qui voudra s'essayer aux shortcodes de façon simple (à intégrer également au fichier config.php).
Le shortcode s'appelle plxplugin, et le paramètre plugin="..." sert à donner le nom du plugin, ce qui donne : Cet code est à utiliser pour un plugin qui affiche directement un contenu (avec "echo").
Si le plugin renvoie une chaîne de texte ou une valeur (avec "return"), il faut ajouter "val-" juste avant le nom du plugin, pour afficher ce contenu :
Important :
Les paramètres du plugin sont à donner les uns après les autres, et non dans un tableau comme avec le callHook habituel qui appelle les plugins.
Une remarque :
Si le shortcode est écrit avec un éditeur Wysiwyg, il sera généralement encadré par une balise p, ce qui ne sera pas génial si le contenu affiché est une balise ul, un bloc div, un formulaire, etc.
Il suffit alors [del]d'activer le plugin shortcode_p (voir ici) et[/del] de remplacer le nom du shortcode plxplugin par -p-plxplugin pour faire disparaître cette balise p.
Comme les shortcodes font partie du projet SPX, la discussion est initialisée ici sur le forum SPX, n'hésitez pas à vous y inscrire !
Le plugin shortcode_p permet d'enlever cette balise p, ce qui est nécessaire si le shortocode renvoie un code HTML du type <ul>...</ul> ou <div>...</div> par exemple : voir ici sur le forum PluXml et là sur le forum du projet SPX.
[Edit : Le plugin natif shortcode intègre maintenant cette fonction, cette variante temporaire shortcode_p n'est plus utile]
Option : supression de la balise p
Si on utilise un éditeur Wysiwyg, un shortcode sera en général encadré par une balise p, que l'éditeur crée automatiquement.
Mais si le shortcode renvoie un bloc div, une liste ul ou un formulaire form, ça fait un peu moche de voir l'ensemble entouré par une balise p.
Une option permet d'enlever la balise p encadrant le shortcode, la demande s'effectuant en ajoutant "-p-" avant le nom du shortcode, juste après le crochet ouvrant.
Shortcode normal :
Shortcode avec suppression de la balise p encadrant le shortcode : Pour les enclosing on a donc :
téléchargement : ici
Le plugin shortcode_p n'a plus d'utilité à présent, il est intégré dans cette version de spxshortcodes.
Juste une petite erreur dans le fichier spxshortcodes.php, pour le commentaire de la ligne 99 : Le préfixe -p- ne s'écrit qu'avant le nom du shortcode, pas à la fin, donc on dirait plutôt : Mais ce n'est qu'une ligne de commentaire, le plugin marche très bien quand même
Et je viens de m'apercevoir qu'en tant que plugin indépendant, spxshortcodes ne figurait pas sur la page des plugins non officiels.
J'ai modifié le wiki pour l'ajouter.
Je me suis permit d'ouvrir un forum de discussion sur les shortcodes : ici
La liste va être longue en terme de possibilités !!!
J'ai ajouté le shortcode de francis pour la récupération de données des plugins ici
Libre a vous de vous inscrire sur le forum (me faire une demande) et de rajouter des shortcodes pour alimenter le forum.
Un lien intéressant : bootstrap3 shortcode
et aussi : ici
Bonne journée sous le soleil.
Avec un topic séparé pour chaque shortcode, on s'y retrouvera mieux, c'est quelque chose qui manquait.
Ça permettra aussi de discuter autour d'un shortcode précis et de le faire évoluer.
Merci aussi pour le lien des shortcodes Bootstrap : il y a du monde, là-dedans ! Il y aurait du temps à passer pour sélectionner ce qui est intéressant...
Est-ce que les 3 fichiers inclus suffisent à les faire fonctionner, tous ces shortcodes, ou est-ce qu'il faut Bootstrap complet pour ça ?
Tel quel non ça ne fonctionne pas mais ça donne une idée de structure dans des environnements précis comme bootstrap3. Ca fait réfléchir et ça permet de ne pas réinventer la roue qui est déja bien ronde.
- ajoute la possibilité pour un plugin externe de déclarer des shortcodes
Voir l'aide du plugin pour plus de détails.
Cette fonctionnalité est intéressante, elle permet de mettre dans le plugin tout ce qui s'y rapporte, y compris un shortcode associé, au lieu d'avoir un morceau dans le fichier config.php du thème.
Encore un grand merci à toi je-evard pour ton boulot.
Maintenant j'aimerais bien l'utiliser avec spxtynimce pour permettre d'appliquer les shortcodes directement via l'éditeur, mais je ne vois pas comment faire.
Merci d'avance !
J'ai préparé deux zip pour toi. (spxtynimce dernière version et spxtinybtshortcode (en beta 0.1)).
pour spxtynimce je l'ai modifié pour qu'un plugin externe puisse rajouter des boutons dans la toolbar.
pour spxtinybtshortcode tu verras j'utilise un système de template bootstrap avec mustache.js (le plus dur est fait). Ca te donnera une idée du comment j'ai opéré. Il y d'autres chemins mais celui-ci me semble pas mal et me correspond (simple et ça marche)
Tu as juste à me donner ton mail.
a+
jéjé
Je viens de t'envoyer un MP.
Un petit shortcode qui va vous permettre d'afficher des post facebook directement dans vos pages :
code a mettre dans le fichier de config.php du thème
usage : n'importe ou par declaration de la balise [WFACEBOOK].
exemple ici en bas de page
a+
jéjé
Changements :
- rectification d'un problème qui apparaissait lorsqu'il n'y avait aucun argument
- ajout d'une option, pour prévoir le cas où le nom de la fonction appelée dans le callHook est différent du nom du plugin
=> au lieu de [plxplugin plugin="nom_plugin" ...], on écrit alors [plxplugin plugin="nom_plugin/nom_fonction" ...].
Les deux syntaxes sont utilisables.
Et voici le shortcode plxplugin avec ces deux modifications :
Je l'ai testé avec le plugin mcatalogue, cela permet d'afficher les produits d'une catégorie dans n'importe quelle page du site.
Le préfixe -p- devant le nom du shortcode enlève ces balises p, mais ça ne fonctionne pas bien si le shortcode possède un contenu sur plusieurs lignes, encadré par [-p-nomdushortcode] et [/-p-nomdushortcode].
Les cas de figure à prendre en compte sont les suivants : et celui-ci, avec <br> ou <br />, qui se produit si le rédacteur a utilisé Maj+Entrée : Pour traiter tous ces cas de figure, j'ai modifié de la façon suivante la fonction shortcode_p_replace, dans le fichier spxshortcodes.php du plugin : J'ai testé, normalement ça marche.
Merci pour les modifications, je vais tester ça rapidement et ferais une nouvelle version. Désolé de ne pas être trop sur le forum en ce moment mais je bosse sur un gros gros projet qui se termine. Je pourrais ainsi reprendre mes devs pluxml très bientôt.
Je te tiens au courant,
a+
jéjé
Bonne année à toi aussi et bon courage pour ton méga-projet !
Et à très bientôt sur le forum, pour de nouvelles aventures autour de PluXml !
J'ai testé ta fonction francis.
Declaration des shorcodes theme/config.php :
html dans l'article :
Rendu fontend html :
Ca marche plutot pas mal Francis ! J'intègre ça dans la version avant fin de semaine. Bravo a toi. Comment font-ils dans wordpress ?
a+
jeje
PS : oui j'étais très occupé mais je reviens sur la scène pluxml. héhé.
Bien content de te revoir ici
En cherchant pour Wordpress, je vois une fonction qui remplace "<p>[" par "[", etc.
Pas idéal, ça pourrait modifier autre chose que les shortcodes.
Je vois aussi un filtre Wordpress wpautop à modifier et des expressions régulières hyper compliquées, bref pas de solution miracle à première vue.
**** v 1.3 ****
- mod function shortcode_p_replace
Par exemple pour créer des liens via des boutons entre pages statiques :
Affiche l'url de la page statique en question.
Ça montre qu'on peut mettre un shortcode à l'intérieur d'une balise, dans un attribut, je n'avais pas pensé à ce type d'utilisation.
Ce shortcode ci dessous a insérer dans la config.php de votre thème bien sur :
Il permet tout simplement d'afficher un formulaire de contact avec tout ce qui va bien n'importe ou (compatible plucss) et avec antispam optionnel.
Pour l'usage :
A utiliser sans modération dans une bonne page statique sans une ligne de code et sans plugin ! Enjoy !
Ca serait inéressant d'avoir un petit emplacement lié au sujet car les possiblités sont nombreuses et flexibles !
En fait, j'utilise déjà régulièrement une méthode voisine pour afficher un formulaire, avec ce shortcode : et comme indiqué en commentaire, l'utilisation de cette façon à l'intérieur d'une page :
avec dans le dossier du thème courant, un fichier "formulaire-contact.php" contenant un formulaire inspiré du plugin plxMyContact de Stéphane.
Je n'ai rien contre les plugins mais un de moins ne fera pas de mal
Une petite faute dans le code au niveau de la ligne pour envoyer le mail. Le $email_cc est repeter 2 fois. Le 2eme doit etre remplacer pas $email_bcc je pense
Merci beaucoup.
PS:Je me rends bien compte que j'utilise un plugin pour remplacer un autre plugins mais comme j'utilise deja spxshortcodes...
PS2: desole pour le message original en anglais....des fois j'oublie a qui je parle !