Jump to content

controller sans colonne gauche : Comportement très gênant


Recommended Posts

Bonjour.

 

Lorsque l'on désactive l'affichage de la colonne gauche dans un controller, la balise body prend pour identifiant id="order-opc".

 

Dans le fichier FrontController.php, on trouve

 

 // If column left is not displayed, we rename page name
 if ($this->display_column_left == false)
  $page_name = 'order-opc';

 

Ce comportement est très gênant si l'on a des "controller" avec une seule colonne centrale. Pour le tpl, j'ai besoin de connaitre le nom de la page "page_name" et dans le css j'utilise l'id de la balise body pour indiquer la largeur des colonnes.

 

je pense qu'il s'agit d'un oubli dans la programmation.

 

Si le css doit prendre en compte la désactivation de la colonne, il vaudrait mieux ajouter une classe au conteneur, plutôt que de modifier le nom de la page.

 

Merci .

Edited by chantane (see edit history)
Link to comment
Share on other sites

Bonjour,

 

j'ai rencontré ce problème, et je l'ai résolu de la manière qui suit. En testant si $HOOK_LEFT_COLUMN et $HOOK_RIGHT_COLUMN sont "vides" ou non j'ai ajouté 3 classes css possibles au <body> : "no-sidebar", "sidebar-right" et "sidebar-left". A partir de là on a le contrôle total - via css - de la largeur des colonnes et ce sur toutes les pages. Pas besoin de se casser la tête à spécifier des largeurs de colonne en fonction du paramètre {$page_name}.

 

J'ai mis en place cela sur Prestashop 1.4.8.2 en modifiant les fichiers FrontController.php et header.tpl. Contactez moi en mp je vous enverrais les fichiers avec plaisir.

 

Fredj

Edited by OSFormation (see edit history)
Link to comment
Share on other sites

@OSFormation,

 

Merci, J'ai fait la même chose en 1.4.

 

il est illogique de modifier le nom de la page pour gérer un problème de css.

 

signalé dans la forge : http://forge.prestas...owse/PSCFV-2923

 

exemple de code pour un controller avec une seule colonne centrale :

public $display_column_left = false;
public $display_column_right = false;
...
$this->context->smarty->assign('oneColumn', 1);
...

 

Dans le tpl, je teste oneColumn pour affecter une classe à la balise columns, dont la largeur est gérée via le css.

Edited by chantane (see edit history)
Link to comment
Share on other sites

  • 1 month later...

Bonjour,

le problème a été reporté dans la forge, mais d'après la réponse , il y a eu confusion,

Je n'ai pas modifié le fichier pour renommer la page, c'est le fichier FrontController.php d'origine qui contient ces instructions.

Tout controller sans colonne gauche est renommé 'order-opc'.

Link to comment
Share on other sites

Looking into the SVN code, it seems the issue doesn't exists anymore :

 

  if (!empty($this->page_name))
  $page_name = $this->page_name;
 elseif (!empty($this->php_self))
  $page_name = $this->php_self;
 elseif (Tools::getValue('fc') == 'module' && $module_name != '' && is_a($module_name, 'PaymentModule'))
  $page_name = 'module-payment-submit';
 // @retrocompatibility Are we in a module ?
 elseif (preg_match('#^'.preg_quote($this->context->shop->physical_uri, '#').'modules/([a-zA-Z0-9_-]+?)/(.*)$#', $_SERVER['REQUEST_URI'], $m))
  $page_name = 'module-'.$m[1].'-'.str_replace(array('.php', '/'), array('', '-'), $m[2]);
 else
 {
  $page_name = Dispatcher::getInstance()->getController();
  $page_name = (preg_match('/^[0-9]/', $page_name)) ? 'page_'.$page_name : $page_name;
 }

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...