chantane Posted June 24, 2012 Share Posted June 24, 2012 (edited) 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 June 24, 2012 by chantane (see edit history) Link to comment Share on other sites More sharing options...
OSFormation Posted June 24, 2012 Share Posted June 24, 2012 (edited) 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 June 24, 2012 by OSFormation (see edit history) Link to comment Share on other sites More sharing options...
olea Posted June 25, 2012 Share Posted June 25, 2012 Sur le même sujet : http://www.prestashop.com/forums/topic/162964-gestion-du-theme-pour-les-controller-supprimant-les-colonnes/ Link to comment Share on other sites More sharing options...
olea Posted June 25, 2012 Share Posted June 25, 2012 @Chantane, Cela me semble être un problème à reporter dans la forge. Il n'est pas logique que le nom de la page dépende des colonnes affichées Link to comment Share on other sites More sharing options...
chantane Posted June 25, 2012 Author Share Posted June 25, 2012 (edited) @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 June 25, 2012 by chantane (see edit history) Link to comment Share on other sites More sharing options...
chantane Posted August 8, 2012 Author Share Posted August 8, 2012 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 More sharing options...
olea Posted August 9, 2012 Share Posted August 9, 2012 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now