Jump to content

pbl avec Override frontController


Recommended Posts

Bonjour à tous,

 

Je teste actuellement la version 1.5.2 de prestashop en local.

 

J'avoue avoir un peu de mal à retrouver tous mes petits, mais comme l'on dit, le changement est bon pour l'esprit ... ^^

 

Voilà donc mon problème, sur la version 1.4.7, j'avais créé un override pour la class FrontController me permettant d'aller chercher les fichiers divers et varié de Jquery en extérieur, du genre :

 

 

<?php

/*

* charge jquery sur le site de google

*

*/

 

class FrontController extends FrontControllerCore {

public function setMedia() {

parent::setMedia();

 

global $css_files;

global $js_files;

 

/*

* autres css to host jQuery

*/

Tools::addCSS(_PS_JS_DIR_.'jquery/plugins/fancybox.2.1.3/jquery.fancybox.css?v=2.1.3','all');

Tools::addCSS(_PS_JS_DIR_.'jquery/plugins/fancybox.2.1.3/jquery.fancybox-buttons.css?v=2.1.3','all');

Tools::addCSS(_PS_JS_DIR_.'jquery/plugins/fancybox.2.1.3/jquery.fancybox-thumbs.css?v=2.1.3','all');

Tools::addCSS(_PS_JS_DIR_.'jquery/plugins/jgrowl.1.2.6/jquery.jgrowl.css','all');

 

 

/*

* Use Google Libraries API to host jQuery

*/

$index = array_search(_PS_JS_DIR_ . 'jquery/jquery-1.7.2.min.js', $js_files);

if ($index !== false){

array_splice($js_files, $index, 1, array('https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js'));

} else {

$js_files[] = 'https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js';

}

 

$index = array_search(_PS_JS_DIR_ . 'jquery/jquery-ui-1.8.10.custom.min.js', $js_files);

if ($index !== false){

array_splice($js_files, $index, 1, array('https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js'));

} else {

$js_files[] = 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js';

}

 

$js_files[] = 'http://un_autre_serveur_externe/fancybox/lib/jquery.mousewheel-3.0.6.pack.js';

$js_files[] = 'http://un_autre_serveur_externe/fancybox/source/jquery.fancybox.js?v=2.1.3';

$js_files[] = 'http://un_autre_serveur_externe/fancybox/source/jquery.fancybox-buttons.js?v=2.1.3';

$js_files[] = 'http://un_autre_serveur_externe/fancybox/source/jquery.fancybox-thumbs.js?v=2.1.3';

$js_files[] = 'http://un_autre_serveur_externe/fancybox/source/jquery.fancybox-media.js?v=1.0.0';

 

 

$index = array_search(_PS_JS_DIR_ . 'jquery/plugins/jquery.easing.js', $js_files);

if ($index !== false){

array_splice($js_files, $index, 1, array('http://un_autre_serveur_externe/jquery.easing.1.3/jquery.easing.1.3.js'));

} else {

$js_files[] = 'http://un_autre_serveur_externe/jquery.easing.1.3/jquery.easing.1.3.js';

}

 

$index = array_search(_PS_JS_DIR_ . 'jquery/plugins/jquery.autocomplete.js', $js_files);

if ($index !== false){

array_splice($js_files, $index, 1, array('http://un_autre_serveur_externe/autocomplete.1.0.2/jquery.autocomplete.js'));

} else {

$js_files[] = 'http://un_autre_serveur_externe/autocomplete.1.0.2/jquery.autocomplete.js';

}

 

$index = array_search(_PS_JS_DIR_ . 'jquery/plugins/jquery.serialScroll-1.2.2-min.js', $js_files);

if ($index !== false){

array_splice($js_files, $index, 1, array('http://un_autre_serveur_externe/jquery.serialscroll.1.2.2.min/jquery.serialScroll-1.2.2-min.js'));

} else {

$js_files[] = 'http://un_autre_serveur_externe/jquery.serialscroll.1.2.2.min/jquery.serialScroll-1.2.2-min.js';

}

 

$index = array_search(_PS_JS_DIR_ . 'jquery/plugins/jquery.scrollTo-1.4.3.1-min.js', $js_files);

if ($index !== false){

array_splice($js_files, $index, 1, array('http://un_autre_serveur_externe/jquery.scrollto.1.4.3.1.min/jquery.scrollTo-1.4.3.1-min.js'));

} else {

$js_files[] = 'http://un_autre_serveur_externe/jquery.scrollto.1.4.3.1.min/jquery.scrollTo-1.4.3.1-min.js';

}

 

$js_files[] = 'http://un_autre_serveur_externe/jgrowl.1.2.6/jquery.jgrowl.js?v=1.2.6';

 

}

}

?>

 

tout fonctionne très bien par ailleurs sur ma boutique prestashop 1.4.7

 

Aujourd'hui, en testant la bouture 1.5.2 je me suis dit, bein si je copie mon fichier FrontController.php dans override/classes/controller logiquement, ça devrait marcher ...

 

Grosse erreur de ma part,

 

Un changement profond ayant été effectué, je sens que ça va me reprendre la tête durant des heures.

 

ma question est donc, comment parvenir à une solution identique d'appel de mes librairies JQUERY en extérieur sous la version 1.5.2

 

Merci pour vos réponse

 

laurent

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

Bonjour,

 

A priori il n'y a pas de souci à utiliser l'override du frontController, j'imagine que vous avez bien pris le fichier dans override/classes/controller/FrontController.php

 

Je vous déconseille d'utiliser votre code en l'état, vous ajoutez de nouveau script sans supprimer ceux qui sont déjà chargé par prestashop, il vaut mieux supprimer et remplacer proprement les script déjà présent si vous voulez mettre à jours vos scripts

 

Exemple pour jQuery

 

<?php

class FrontController extends FrontControllerCore
{
public function setMedia() {

	parent::setMedia();

	$jquery = array_search(_PS_JS_DIR_ . 'jquery/jquery-1.7.2.min.js', $this->js_files);
	if ($jquery !== false)
		array_splice($this->js_files, $jquery, 1, 'https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js');

}
}

 

Cordialement

Franck

Link to comment
Share on other sites

Merci Franck

 

je regarde de suite ton code pour évoluer du côté de la 1.4.7 même si j'avoue que tant que ça fonctionne, je vais éviter d'y toucher ... ^^

 

Je présume que votre script est valable pour la 1.5.2, donc je vais tester dessus, pour voir sur ma prochaine mise à jour de site ....

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