Salut à tous,
Je savais pas trop où poster, ma question recoupe pas mal de sujet.
Donc je travaille sur un framework d'entreprise, et je cherche à l'optimiser. Une des solutions et de combiner les fichiers js et css :
Think Vitamin, Serving JavaScript Fast
combine
Je m'inspire de ces solutions pour coder quelque chose de tout à fait adapté à notre framework.
J'utilise SMARTY, voici le code dans le tpl :
Voici la fonction SMARTY :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 {insert_js files="support-swfobject,support-jquery,support-jqueryPlugins-superfish,kinkama"}
Tout semble bien fonctionner, j'ai bien un fichier dans le dossier combinedFiles
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 function smarty_function_insert_js($params, &$smarty) { /** * Verification que le tableau d'argument $files n'est pas vide */ if ( empty( $params['files']) ){ $smarty->_trigger_fatal_error("[smarty_function_insert_js] param 'files' cannot be empty."); return; } /** * Tableau contenant les différents scripts à inclure * @var array $files */ $files = array(); /** * Construction dynamique du nom du fichier * @var string $combinedName */ $combinedName = str_replace(',', '_', $params['files'] ); $combinedName = $combinedName.'.js'; /** * Construction des chemins vers les js */ foreach( explode(',', $params['files']) as $key => $file ) { $file = str_replace('-', '/', $file); $file = 'Views/js/'.$file.".js"; $files[$key] = $file ; } /** * Si le fichier existe, on l'inclut dans le template */ if( file_exists(WEBROOT."Views/combinedFiles/".$combinedName) ) { return "<script type='text/javascript' src='Views/combinedFiles/$combinedName'></script>"; } else { $handle = fopen( WEBROOT."Views/combinedFiles/".$combinedName, 'x+' ); foreach($files as $file) { $temp = file_get_contents(WEBROOT.$file); fwrite($handle, $temp); $sep = "\n\n\n/**************** $file ****************\n\n\n"; fwrite($handle, $sep); } fclose($handle); return "<script type='text/javascript' src='Views/combinedFiles/$combinedName'></script>"; } }
Ce fichier est bien télécharger, on le voit dans firebug.
Simplement on dirait que le javascript n'est pas évalué. J'ai des erreurs js, il ne reconnait pas le $ pour jQuery, idem avec le swfobject, et notre librairie kinkama.js
Es ce que ce n'est pas un probleme d'ordre dans la construction de la page ?
Faut il que je fasse un eval ? Si oui où et comment ?
L'article de ThinkVitamin recommande se que j'ai fait, chez eux ça semble marcher pourtant ...
Si qq1 a une idée ...
Partager