[Résolu] Inclure PHP dans un article

Poischiche1Poischiche1 Member
août 2016 modifié dans Entraide
Bonjour à tous !
Aujourd'hui, j'ai essayé d'inclure du code PHP dans un article.
J'ai l'éditeur de texte CKEditor.
J'ai donc cliqué sur "Source" et écris mon code :
[== PHP ==]
<?php
echo "hello !" ;
?>
J'ai enregistré et j'ai alors regardé dans source. Mon code s'était transformé en :
[== PHP ==]
<!--?php
echo "hello !" ;
?-->

Quelqu'un sait comment faire pour résoudre ce problème ?

Réponses

  • Le champ de corps d'un article est une chaîne de texte contenu dans une variable, comme le titre, le chapo, etc.

    Le PHP est interprété avant de procéder à l'extraction des variables, c'est pourquoi le champ ne peut pas être "exécuté" comme un programme mais simplement affiché. Des trucs comme des shortcodes ou autres peuvent permettre de tricher et d'extraire un bout de texte qui "relance" un autre programme mais c'est plus complexe que de simplement inscrire le code. Par opposition, le gabarit d'une page peut contenir toutes formes de codes et permettre toutes les fantaisies désirées.

    Si on a une idée de ce qui est souhaité, on pourra peut-être guider un peu et donner des solutions possibles.
  • En fait j'aimerais écrire ce code :
    [== PHP ==]
    <?php
    if($_GET['clic'] == 'oui')
    {
        echo 'Vous avez cliqué sur le lien précédent !';
    }
    else
    {
        echo 'Vous n'avez pas cliqué sur le lien précédent !';
    }
    ?>
    
    Mais du coup, comment faire pour tout simplement executer ce code ??
  • Quand je dis souhaité, je veux dire ce qui est souhaité comme expérience usager, ce que le visiteur va voir, faire et ce qui va arriver quand il va le faire.
  • Bah en gros, il va cliquer sur un lien quu l'amènera à un endroit particulier de l'article (une ancre : #suite)
    Et s'il a cliqué sur le lien (dans l'url : ?clic=oui), un message s'affiche. Sinon, s'il scroll juste, un autre message apparait.
  • C'est pas encore tout à fait clair. L'histoire de la variable clic dans l'url est là pourquoi au juste? Le message est-il toujours le même? Est-il seulement conditionnel à la présence de la variable dans l'url? Est-ce que tous les articles vont avoir le même test? De quelle page arrivent-ils ces visiteurs (la page qui charge l'url avec la variable clic)? S'agit-il de la même page?

    À moins de passer en AJAX, quand une page est chargée, elle est contenue au complet dans le navigateur. On peut en cacher et découvrir certaines parties mais elles étaient toujours là. Si quelque chose de conditionnel fait afficher ou pas une partie du texte, c'est fait immédiatement à l'arrivée de la page.

    Pour ces raisons, ton test peut très bien être fait dans le gabarit de page en ne laissant que le contenu de l'article dans le champ prévu.
  • La variable clic est dans l'url juste pour dire si on a cliqué. Le message est le même. Mais tous les articles ne vont pas avoir le même test, juste un. Les visiteurs viennent de la page d'accueil, et le lien est dans le chapô. Ce lien va mener à l'article où il y a le lien. Normalement, il ne s'agit pas de la même page...
  • Je ne comprend strictement rien, de moins en moins je pense.

    Je vais te laisser monter les pages et les mettre enligne, on pourra parler avec des exemples précis. Le test pourra être inséré quand on comprendra ce qui est nécessaire pour que ça fonctionne.
  • Attend, par conditionnel, tu entends quoi, exactement ?
  • On va pouvoir éclaicir tout ça avec une page en ligne.

    En voyant la page, le comportement, le "problème" du comportement qui ne fait pas exactement ce qu'on voudrait, etc. Ça permettra de donner tout de suite les options possibles.
  • J'espère que ça aidera...
  • La page donnée en exemple est une page de catégorie. Le contenu d'une référence à un article dans une page de catégorie est habituelle son chapô, pas le contenu de l'article. Le lien "Lire la suite" veut plus précisément dire "lire le vrai article dans sa vraie page". Une fois ce lien cliqué, il est facile de ne pas réafficher ce chapo dans la véritable page d'article, simplement avec le paramètre 'false' dans artContent().

    Si la page d'article (la vraie) est trop longue pour une seule page, ma solution dans un tel cas est de créer tout simplement une page "Blabla (page 2)" qui aura son contenu commençant à la bonne prochaine ligne de cette longue histoire. Il est alors très facile d'insérer au bas du premier article un lien en dur vers cette page 2.
  • J'aimerais que quand on clique sur "là" au lieu de "lire la suite", ça affiche un message (une ligne). Le fait que l'article continue tout pile à l'ancre "suite" n'est que facultatif.
  • Tu veux cette ligne où? Nous sommes sur une page de catégorie, son affichage est terminé, il ne changera pas avant de cliquer quelque part. En cliquant quelque part, ça affichera une autre page avec ses propres conditions d'affichage. Cette prochaine page, tu veux qu'elle soit quoi? une autre page de catégorie? la même? la page de l'article?

    La solution semble arriver avant d'avoir un problème. Quelle situation désagréable pour le visiteur voulons-nous éviter ici?
  • Poischiche1Poischiche1 Member
    août 2016 modifié
    La ligne apparait dans la page d'article en dehors du chapô.
    Pierre a écrit:
    Quelle situation désagréable pour le visiteur voulons-nous éviter ici?
    Ce n'est pas vraiment une situation désagréable que j'aimerais éviter mais plutôt avoir une interaction avec le visiteur....
  • Je cherche le problème à régler, le désagrément causé au visiteur par ce qui est déjà en place avec les outils de PluXml.

    En attendant la réponse, reprenons les morceaux de PluXml. Une page de catégorie classique donne un aperçu d'un article sous forme de contenu de son chapô. Un lien du genre "Lire la suite de l'article" pointe vers la page d'article qui contient (ou pas) le chapô mais certainement le contenu du corps de texte. Si la page d'article est longue mais contient des ancrages dans ce long contenu, un lien en dur peut être inséré n'importe où, dans un chapô, un corps de texte, un contenu de page statique, même dans un gabarit à la rigueur.
  • J'avais compris.
    J'aimerais insérer un lien dur dans le chapô. Ce lien sera vu par les visiteurs qui le verront sur l'accueil (je l'avais mis sur une page de catégorie pour ne pas déranger le fonctionnement de mon site), vu qu'il ne verront que le chapô avec le lien. Ils cliquent sur le lien -> url_article?clic=oui.
    Ce lien les amène donc à la page de l'article, comme le ferait un bête "lire la suite". Mais en plus ce lien vehicule quelque chose dans son url : "clic=oui" qui veut dire qu'on a cliqué sur le lien et pas sur le "lire la suite".
    Ensuite, en PHP, je fais une vérification : si il y a "clic=oui", alors j'écris "vous avez cliqué sur le lien et pas sur 'lire la suite' !"; sinon, j'écris "vous avez cliqué sur 'lire la suite' et pas sur mon lien !".
    Sauf que je ne peux pas utiliser du PHP dans mon article et donc pas exécuter cette interaction.
  • J'attends encore le désagrément causé au visiteur par le processus de base. J'insiste parce que c'est de là que devrait toujours démarrer tout changement à l'ordre établi. Ces changements sont très communs, ils sont un plaisir à faire, mais on ne code rien avant de comprendre qu'il y a un problème à régler, je n'en suis même pas encore certain.
  • Pierre a écrit:
    le désagrément causé au visiteur par le processus de base
    ... De quoi parles-tu exactement ?
  • PluXml fonctionne. Tu dis comprendre comment il fonctionne, je n'insiste pas à l'expliquer alors.

    Pourquoi le changer? si tu veux une question plus simple.
  • Je ne sais pas pourquoi le changer, mais je demandait juste comment faire pour réaliser ce que je veux faire : inclure du PHP dans un bête article pour pouvoir proposer une interaction avec le public...
  • Je te laisse là-dessus. Bonne chance.
  • ppmtppmt Member
    Peut-être que je rate quelque chose mais il me semble que l'on puisse seulement insérer du code php dans une page statique. Pas dans les articles
  • J'ai essayé dans une page statique... Pas de succès
  • Poischiche1Poischiche1 Member
    août 2016 modifié
    Merci à tous, j'ai résolu :
    Je suis passé en JavaScript et j'ai ainsi pu faire la même chose.
    EDIT : le code pour les intéressés...
    [== JavaScript ==]
    <script>
    function obtenirParametreClic (sVar) {
      return unescape(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + escape(sVar).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));
    }
    var clic = obtenirParametreClic("clic");
    if(clic)
    {
        if(clic == 'oui')
        {
            document.write('Content de voir que j\'ai de l\'autorité !');
        }
    }
    else
    {
        document.write('Rhaa ! Vous n\'avez pas cliqué !! Je ne sais pas si je vais vous laisser lire l\'article !!');
    }
    
    </script>
    
  • Euh... où est le tag résolu ??
  • cpalocpalo Member
    août 2016 modifié
    Pour insérer du code php dans un article ou une page statique, je pense ( sauf autre solution) que cela n'est possible qu'en l'écrivant directement dans le template de la page. Par exemple tu crée un nouveau template " static-avec-mon-code.php".
    Sinon pour insérer directement un fichier php, tu as la solution proposée par Stéphane:/inclure-un-fichier-php-stocke-dans-le-dossier-de-son-theme
  • ppmtppmt Member
    as tu essaye de desactiver le plugin pour les pages statiques?
  • Merci cpalo pour le lien !
    ppmt a écrit:
    as tu essaye de desactiver le plugin pour les pages statiques?
    Quel plugin ??
Connectez-vous ou Inscrivez-vous pour répondre.