Jump to content
Julien Chaumond

Depuis un module, récupérer le type de page (index, category, etc.)

Recommended Posts

Bonjour,

 

Depuis la classe PHP d'un module, plus précisément depuis un Hook, comment savoir sur quel type de page (index, category, etc.) on se trouve ? (par exemple dans hookHeader, pour n'ajouter un javascript que si l'on en a vraiment besoin)

 

J'utilise pour l'instant :

 

global $smarty;
$page = $smarty->tpl_vars['page_name']->value;

 

Mais il y a surement plus simple...

 

Merci !

Share this post


Link to post
Share on other sites

Bonjour,

 

Prestashop utilise une fonction dans la version 1.3 pour arriver à ce résultat :

 

/* get page name to display it in body id */
$pathinfo = pathinfo(__FILE__);
$page_name = basename($_SERVER['PHP_SELF'], '.'.$pathinfo['extension']);
$page_name = (preg_match('/^[0-9]/', $page_name)) ? 'page_'.$page_name : $page_name;

  • Like 1

Share this post


Link to post
Share on other sites

@jeckyl : Merci !

 

Bon, alors je vais rester sur ma solution alors, qui n'est pas très élégante, mais qui est probablement plus robuste :)

 

C'est quand même assez hallucinant de ne pas avoir accès au nom de l'action depuis un hook.

Share this post


Link to post
Share on other sites

Bonjour, je suis débutant en stage de premiere année et je dois justement recuperer le nom d'une page. Cependant apres avoir utilisé votre code, je l'envoi comment a ma fonction getContent(). Un input type hidden reglerai le probleme ?

 

Merci de votre aide

Share this post


Link to post
Share on other sites

Bonjour à tous,
J'ai bien vu que le dernier message date de 2012, mais j'ai eu le même problème et j'ai trouvé une autre solution, alors je la partage:
Il suffit de charger de la fonction construct() le nom de la page qui vient du context (bien sur après le parent::construct) et la mettre dans une variable accessible dans les hooks. De mon point de vue, c'est beaucoup plus propre 

class xxxxx extends Module
{
	...   
	private $pageName;

	public function __construct()
	{
		....

		parent::__construct();

		$this->pageName = $this->context->controller->php_self;
	}

       ...

	public function hookHeader()
	{
		if ($this->pageName == 'product') {
		   $this->context->controller->addJS($this->_path . '/js/xxx.js');
		}
        }
    
}

J’espère que cela va en aidé.

Edited by Tangence Web (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

En me relisant, je vois que j'avais accés à la variable direct dans le hook.... donc pas besoin de le charger dans le construct...

class xxxxx extends Module
{
       ...

	public function hookHeader()
	{
		if ($this->context->controller->php_self == 'product') {
		   $this->context->controller->addJS($this->_path . '/js/xxx.js');
		}
        }

}

Share this post


Link to post
Share on other sites

cela aurait était pas mal de préciser la version de PrestaShop utilisé car là on est sur un sujet abordant à la base la version 1.3.

Share this post


Link to post
Share on other sites

cela aurait était pas mal de préciser la version de PrestaShop utilisé car là on est sur un sujet abordant à la base la version 1.3.

Prestashop 1.3, sujet de 2012... moi qui voulait pour une foi participer...

Mea culpa, la prochaine fois j'irais moins vite

 

Ah oui, j'allais oublié, l'objet Context a été introduit depuis la version 1.5

 

Numériquement votre (dévoué)

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

×
×
  • Create New...

Important Information

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