Jump to content

Appelle php dans un template


Recommended Posts

Bonjour,

 

Je souhaiterai avoir le résultat de mon .php dans mon fichier product.tpl, je m'explique je souhaite récupérer le contenu de la balise d'un site externe jusqu’à la aucun soucis tout marche quand je lance mon php

 

mon .php contient:

<?php
$contenu = file_get_contents('http://www.exemple.com');
$balise = '#id="LB"(.*\n?)#';
if(preg_match( $balise, $contenu)) 
echo '1';
}
else 
{  
echo '2'; 
}
?>

 

 

J'aimerai afficher le résultat du .php dans mon product.tpl

 

Si vous avez une idée comment je peut faire,

Je vous en remercie d'avance

 

je suis sous prestashop 1.6.0.5

Share this post


Link to post
Share on other sites

Deux solutions, dont une qui ne marchera pas je pense ^^ :

 - Utiliser les balises PHP de smarty, ca ne me semble pas terrible.

 - Faire les choses correctement et surcharger le controller de votre template, ou en passant par un module.

Share this post


Link to post
Share on other sites

Merci pour ta réponse.

 

Deux solutions, dont une qui ne marchera pas je pense ^^ :

 - Utiliser les balises PHP de smarty, ca ne me semble pas terrible.

 - Faire les choses correctement et surcharger le controller de votre template, ou en passant par un module.

 

- Utiliser les balises PHP de smarty, ca ne me semble pas terrible.

 

 

ne marche pas en effets

 

 - Faire les choses correctement et surcharger le controller de votre template, ou en passant par un module.

 

 

 

Ses ce que j'avais pensait aussi, mais je ne sais pas comment mis prendre peut tu m'expliquer comment je doit faire?

Share this post


Link to post
Share on other sites

Il vous faut vous pencher sur la notion de surcharge de controller.

 

Par exemple, sur la fiche produit, il vous faudrait surcharger le controller ProductController.

Dans celui ci, vous pourrez alors appelez une nouvelle fonction (depuis la fonction initContent() je pense), avec votre propre PHP, qui assignera des variables smarty à votre product.tpl

Share this post


Link to post
Share on other sites

Il vous faut vous pencher sur la notion de surcharge de controller.

 

Par exemple, sur la fiche produit, il vous faudrait surcharger le controller ProductController.

Dans celui ci, vous pourrez alors appelez une nouvelle fonction (depuis la fonction initContent() je pense), avec votre propre PHP, qui assignera des variables smarty à votre product.tpl

 

 

Si j'ai bien compris sa devrait donner:

class ProductControllerCore extends FrontController
{
public function initContent()

{

  <?php
$contenu = file_get_contents('http://www.exemple.com');
$balise = '#id="LB"(.*\n?)#';
if(preg_match( $balise, $contenu)) 
{ 
echo '1';
}
else 
{  
echo '2'; 
}
?>

}
....

 Sa me met page blanche une idée?

Edited by tony2805 (see edit history)

Share this post


Link to post
Share on other sites

Alors.

Plusieurs choses incorrect.

 

Un : inutile d'ouvrir et de ferme vos balises php, vous êtes déjà dans un fichier php, avec l'ouverture tout en haut du fichier

Deux : ProductControllerCore devrait étendre ProductController je pense

 

Via un override, vous surcharger complètement la fonction init_content. Donc il vous faut tout de même récupérer la fonction complète dans le controller original, sinon plus rien ne marchera.

 

Ensuite, plutôt que coller votre php dans initContent, appelez une fonction 

$this->maFonction();

Et du coup, en dessous de la fonction init_content, vous y mettez votre fonction :

function maFonction(){
 // votre php
}

Il vous faut également voir le passage de variable d'un controller à un template :)

Share this post


Link to post
Share on other sites

Alors.

Plusieurs choses incorrect.

 

Un : inutile d'ouvrir et de ferme vos balises php, vous êtes déjà dans un fichier php, avec l'ouverture tout en haut du fichier

Deux : ProductControllerCore devrait étendre ProductController je pense

 

Via un override, vous surcharger complètement la fonction init_content. Donc il vous faut tout de même récupérer la fonction complète dans le controller original, sinon plus rien ne marchera.

 

Ensuite, plutôt que coller votre php dans initContent, appelez une fonction 

$this->maFonction();

Et du coup, en dessous de la fonction init_content, vous y mettez votre fonction :

function maFonction(){
 // votre php
}

Il vous faut également voir le passage de variable d'un controller à un template :)

 

 

je suis désolée un peu du mal a comprendre se qui faut vraiment faire en gros j'ouvre mon ProductController.php, je remplace ProductControllerCore par ProductController, enssuite initContent n'existe pas donc je le met en dessous de class ProductController extends FrontController, et dans iniContent toujours j'appelle une fonction est sa donne sa:

class ProductController extends FrontController
{
public function initContent()

{
$contenu = file_get_contents('http://www.exemple.com');
$balise = '#id="LB"(.*\n?)#';
if(preg_match( $balise, $contenu)) 
{ 
echo '1';
}
else 
{  
echo '2'; 
}


}

Esce-bien sa? je vous fait par de mon ProductController.php

Edited by tony2805 (see edit history)

Share this post


Link to post
Share on other sites

Il ne faut pas ouvrir le productController qui est dans Controller.

 

Comme dis plus haut, vous devez vous renseigner sur la fonction d'override d'un controller.

 

C'est à dire qu'au final, vous devez avoir dans 

/overide/controller/front

un fichier productController.php 

 

d'a peu prés ce style : 

<?php
class ProductController extends ProductControllerCore
{
    public function initContent()
    {
        //je ne le colle pas car elle est grosse, mais il doit y avoir le contenu de la fonction de base à laquelle vous rajoutera un appel à une fonction par exemple, ou votre php, etc.
       // Et si, initContent est bien présente dans votre ProductController.php
    }
}

Par contre, éviter de coller des pavé de code comme cela, ca empêche toute lecture.

Si vous devez copier un gros bout de code, passez par pastebin.com par exemple

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More