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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
{insert_js files="support-swfobject,support-jquery,support-jqueryPlugins-superfish,kinkama"}
Voici la fonction SMARTY :
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>";
	}
}
Tout semble bien fonctionner, j'ai bien un fichier dans le dossier combinedFiles

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