Jump to content

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 !

Link to comment
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
Link to comment
Share on other sites

  • 2 weeks later...
  • 8 months later...

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

Link to comment
Share on other sites

  • 4 years later...

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
Link to comment
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');
		}
        }

}
Link to comment
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é)

Link to comment
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...