IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Smarty] faire un include d'un contenu statique ?


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut [Smarty] faire un include d'un contenu statique ?
    Bonjour à tous.
    Je me bat avec Smarty depuis hier soir pour inclure un contenu statique (un fichier HTML tout bête) au milieu de mon template.

    J'ai essayé les fonctions include et insert, mais incapable de le faire marcher, et je préférerai éviter de passer par les balises {php}.

    Avez-vous une idée SVP ?

    d'avance
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  2. #2
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par titoumimi
    Avez-vous une idée SVP ?
    Bah sans {include}, {inser} et {php} non je vois pas... .. .

    qu'est ce qui marche pas avec {include} ... .. ?

    @ tchaOo°

  3. #3
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Merci de ta réponse.
    Mais peut-être que je m'y suis mal pris avec les insert et include...

    mais il me semble que le include ne permet que de mettre un fichier tpl en paramètre.

    quand au insert, il semble necessiter de placer la fonction PHP correspondante dans un plugin, ce qui me chagrine un poil je doit dire
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  4. #4
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par titoumimi
    mais il me semble que le include ne permet que de mettre un fichier tpl en paramètre.
    Bah non un fichier html ça doit passer... par contre pour un fichier contenant du php c'est clair ça passera pas... .. .

    @ tchaOo°

  5. #5
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Alors deux solutions :

    - on peut définir un plugin qui reprenne la fonction include de PHP :

    function.inclure.php (à placer dans le répertoire plugin de Smarty)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    	function smarty_function_inclure ($param) {
    		extract($param);
    		include $page;
    	}
    ?>
    qui s'utilise comme suit dans le template :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {inclure page=$Contenu}
    $Contenu contient ici le path vers le fichier à inclure.
    Inconvénient, si c'est du PHP, il sera exécuté 'hors contexte' du script initial.

    D'où la deuxième solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    $string = get_include_contents('somefile.php');
     
    function get_include_contents($filename) {
      if (is_file($filename)) {
       ob_start();
       include $filename;
       $contents = ob_get_contents();
       ob_end_clean();
       return $contents;
      }
      return false;
    }
     
    ?>
    (http://fr3.php.net/manual/fr/function.include.php)

    il ne reste plus qu'à faire un assign de $string à notre template, et à l'afficher à l'endroit voulu
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  6. #6
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut


    par contre je ferais plutot...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php
    
    function get_include_contents($filename) 
    {
      if(!is_file($filename))
           return false;
     
      $lastContents = ob_get_contents ();
      
      if($lastContents === false)
           ob_start();
                 else
                      ob_clean();
    
       include($filename);
       $inContents = ob_get_contents();
    
       if($lastContents === false)
            ob_end_clean();
       else
       {
            ob_clean();
            ob_start();
            echo $lastContents;
       }
    
       return $inContents;
    }
     
    ?>
    Ca évitera quelque problème si la bufferisation est déja activée... .. .

    @ tchaOo°

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Shell - faire un include
    Par LFC dans le forum Linux
    Réponses: 4
    Dernier message: 02/01/2011, 21h43
  2. [Configuration] Faire un include avec des paramètres
    Par navis84 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 26/07/2006, 10h45
  3. faire un include en supprimant des lignes
    Par TheRedLed dans le forum Langage
    Réponses: 8
    Dernier message: 21/07/2006, 13h58
  4. faire un include d'un xpm comme en C
    Par gyzmau dans le forum Langage
    Réponses: 3
    Dernier message: 22/02/2006, 09h14
  5. Mysql & mrtg : faire un graphe avec le contenu d'une tab
    Par fouhaa dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 12/08/2005, 12h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo