Phil2Fer Posted March 19, 2011 Share Posted March 19, 2011 Bonjour, j'ai développé un thème avec des fichiers 'override' (classes et controlers), quelqu'un connait-il la procédure pour intégrer les fichiers du répertoire 'override' dans un zip d'installation du thème (v 1.4) ou faut-il les mettre en manuel ?Merci Link to comment Share on other sites More sharing options...
Broceliande Posted March 19, 2011 Share Posted March 19, 2011 Jusqu'à ce jour , à la mano me semble-til... Link to comment Share on other sites More sharing options...
Phil2Fer Posted March 20, 2011 Author Share Posted March 20, 2011 Merci pour la réponse, j'ai parcouru le fichier 'themeinstallator.php' et effectivement pas de trace d'override. Link to comment Share on other sites More sharing options...
creacom Posted January 17, 2012 Share Posted January 17, 2012 Bonjour, je reprends ce sujet d'il y a quelque mois, car j'ai également la même question. L'installation d'un thème avec override est elle toujours problématique ? (dans mon cas des modules utilisent des hooks personnalisés que je déclare dans l'override FrontController.php, j'ai également overridé le fichier Search, Cart, Category) Y'a t'il une procédure particulière ? Link to comment Share on other sites More sharing options...
Broceliande Posted January 17, 2012 Share Posted January 17, 2012 Bonjour, je reprends ce sujet d'il y a quelque mois, car j'ai également la même question. L'installation d'un thème avec override est elle toujours problématique ? (dans mon cas des modules utilisent des hooks personnalisés que je déclare dans l'override FrontController.php, j'ai également overridé le fichier Search, Cart, Category) Y'a t'il une procédure particulière ? La question initiale portait sur la possibilité d'intégrer directement des fichiers à copier dans le dossier override , ce qui n'est pas prévu . C'est tout à fait possible en revanche de faire un module qui se charge d'installer ces fichiers (présents donc dans le dossier du module) , à l'install du module , et les retirer à sa sésinstallation. On ajoute alors le module dans le zip du thème , dans le dossier prévu ... puis le paramètre d'installation requise de ce module dans la config.xml du thème. A ce moment là le tour est joué Link to comment Share on other sites More sharing options...
creacom Posted January 17, 2012 Share Posted January 17, 2012 Je confirme, ma question était bien la même que celle du premeier message (c'est pourquoi je n'ai pas ouvert un nouveau fil) par contre je ne comprends pas cette dernière réponse : Peut-on via un module (dédié ou non) non seulement copier des fichiers dans le répertoire override, mais aussi modifier des lignes dans certains de ces fichiers!!! ? ex: dans mon thème, j'ai 2 développé 2 modules (miniscroll et homepagecenter) qui ont leurs hooks perso (déclaré dans la base à l'install, pas de souci), mais qui ont besoin d'être référencé dans l'override FrontController.php ... self::$smarty->assign(array( 'HOOK_FOOTERLIST' => Module::hookExec('footerlist'), 'HOOK_MINISCROLL' => Module::hookExec('miniscroll'), //<=hook de mon module 1 'HOOK_HOMEPAGECENTER' => Module::hookExec('homepagecenter'),//<=hook de mon module 2 ... Ca me parait dificilement concevable ne serait-ce qu'en terme de sécurité de modifier un fichier php via un autre fichier php ! Ou alors je n'ai pas compris la réponse. Link to comment Share on other sites More sharing options...
Broceliande Posted January 17, 2012 Share Posted January 17, 2012 si tu fais référence à ceci : puis le paramètre d'installation requise de ce module dans la config.xml du thème. Je fais non pas référence à une modif du fichier à faire depuis le module, mais d'une référence à modifier à la main dans le package du module. Ce fichier xml permet de spécifier les modules qui doivent être installés en même temps que le thème , sous la forme : <module action="install" name="monmodule"/> Comme tu crée un thème je pensais que tu connaissais ce fichier. Du coup la méthode que je donne ici est bonne : un module simple contient dans sa méthode install la copie des fichiers d'override de ton choix, et les retire dans sa méthode uninstall ... Comme ton module est joint ua thème et que tu as spécifié qu'il doit s'installer en même temps que ce dernier , alors les fichiers d'override seront bel et bien copiés , si toutefois apache a les droits en écriture sur le dossier override bien sûr. Maintenant je ne sais pas trop pourquoi tu sembles si outré : Ca me parait dificilement concevable ne serait-ce qu'en terme de sécurité de modifier un fichier php via un autre fichier php ! Ou alors je n'ai pas compris la réponse. C'est pas un peu agressif envers quelqu'un qui cherche à t'aider ? bon passons je ferais pas mon suceptible cette fois mais il n'y a rien d'extraordinaire à cela dans tous les cas : - si l'installeur de thème a le droit de copier ou modifier un fichier dans un dossier, alors n'importe quel script php en a également le droit , et donc plus particulièrement, un module en a le droit , dans le cas qui nous intéresse. Quand je parle de faire un module simplissime en voici donc un exemple : <?php if (!defined('_CAN_LOAD_FILES_')) exit; class InstallOverrides extends Module { function __construct() { $this->name = 'installoverrides'; $this->tab = 'front-office-features'; $this->version = '1.0'; parent::__construct(); $this->page = basename(__FILE__, '.php'); $this->displayName = $this->l('Install theme overrides'); $this->description = $this->l('Install mytheme needed overrides'); } function install() { if (!parent::install() ) return false; @copy(_PS_MODULE_DIR_.$this->name."/FrontController.php", _PS_ROOT_DIR_."/override/classes/FrontController.php"); return true; } function uninstall() { @unlink(_PS_ROOT_DIR_."/override/classes/FrontController.php"); return true; } } ?> Link to comment Share on other sites More sharing options...
shagshag Posted January 17, 2012 Share Posted January 17, 2012 Bonjour A ce moment là le tour est joué A condition bien sûr que /overrides/ soit accessible en écriture par PHP ce qui ne devrait pas être le cas. Link to comment Share on other sites More sharing options...
shagshag Posted January 17, 2012 Share Posted January 17, 2012 A condition bien sûr que /overrides/ soit accessible en écriture par PHP ce qui ne devrait pas être le cas. Et qu'il n'y ai pas déjà un override de FrontController.php dans ton exemple. Moi je dis: à la main c'est la seule méthode sûre. Link to comment Share on other sites More sharing options...
Asenar Posted January 17, 2012 Share Posted January 17, 2012 Bonjour, oui, actuellement plutôt à la main, rien n'est prévu actuellement pour distribuer un thème avec ses surcharge de controlleurs. Link to comment Share on other sites More sharing options...
creacom Posted January 17, 2012 Share Posted January 17, 2012 Effectivement, ma phrase, qui t'a heurté Brocéliande, faisait référence au genres de cas qu'émet shagshag : A condition bien sûr que /overrides/ soit accessible en écriture par PHP Et qu'il n'y ai pas déjà un override de FrontController.php Car sinon, en "testant" un nouveau thème qui à son propre FrontController, il écraserait la surcharge précédente... Ce n'était pas une attaque, juste une remarque. Donc je suppose que comme dit Michaël, pour ce genre de thème avec override, le plus sur serait de faire une install du thème et des modules un par un à la main, parce que faire une partie à la main et une partie automatisé doit augmenter les risques non pas d'oubli, mais de perturbation non prévues et plus difficilement traçable (est-ce un problème lors de l'utilisation de d'installeur, d'un module ou du thème) En tout cas, merci à tous d'avoir pris le temps de répondre à la question 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