Jump to content

Fichiers override dans un thème


Recommended Posts

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

  • 9 months later...

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

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

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

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

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

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

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