Voici le bout de code php :

  1. <?php
  2.  
  3. header('Content-type: text/html; charset=UTF-8');
  4.  
  5. // Inclu les sources de la librairies
  6. require 'hyla_tpl.class.php';
  7.  
  8.  
  9. // Créé l'objet Hyla_Tpl
  10. $t = new Hyla_Tpl('.');
  11.  
  12.  
  13. // Import du gabarits
  14. $t->importFile('main.tpl');
  15.  
  16.  
  17. // Fonction de traduction
  18. function traduction($var) {
  19. global $lang;
  20. if ($lang == 'en') {
  21. return $var;
  22. }
  23. $l10n = array(
  24. 'Current path' => 'Chemin courant',
  25. 'Size' => 'Taille',
  26. 'Name' => 'Nom',
  27. 'Switch lang' => 'Changer de langue',
  28. );
  29. return (array_key_exists($var, $l10n) ? $l10n[$var] : $var);
  30. }
  31.  
  32.  
  33. // Déclare la fonction de traduction
  34. $t->setL10nCallback('traduction');
  35.  
  36.  
  37. // Cette fonction renvoie une taille facilement lisible (ex: 1024o renverra 1ko)
  38. function get_human_readable_size($bytes) {
  39. global $lang;
  40. $types = array(null, 'k', 'm', 'g', 't');
  41. for ($i = 0; $bytes >= 1024 && $i < (count($types) -1); $bytes /= 1024, $i++);
  42. return round($bytes, 2) . $types[$i] . ($lang == 'fr' ? 'o' : 'b');
  43. }
  44.  
  45. // Enregistre la fonction get_human_readable_size en tant que humansize dans le template
  46. $t->registerFunction('humansize', 'get_human_readable_size');
  47.  
  48.  
  49. // Récupère les variables get
  50. $dir = isset($_GET['dir']) ? $_GET['dir'] : dirname(__FILE__);
  51. $dir = realpath($dir);
  52.  
  53. $lang = isset($_GET['lang']) ? $_GET['lang'] : 'fr';
  54.  
  55.  
  56. // Assigne quelques variables
  57. $t->setVars(array(
  58. 'dir' => $dir,
  59. 'lang' => $lang,
  60. 'lang_switch' => ($lang == 'en' ? 'fr' : 'en'),
  61. ));
  62.  
  63.  
  64. // Ouvre le dossier
  65. if (!$files = @scandir($dir)) {
  66. exit("Unable to open « $dir »");
  67. }
  68.  
  69. // Parcours des dossiers / fichiers
  70. foreach ($files as $file) {
  71.  
  72. $path = realpath("$dir/$file");
  73.  
  74. $file = array(
  75. 'path' => $path,
  76. 'name' => $file,
  77. 'size' => filesize($path),
  78. );
  79. $t->setVar('file', $file);
  80.  
  81.  
  82. // L'élément courant est un dossier ?
  83. if (is_dir($path)) {
  84. $t->render('table.line.dir');
  85. }
  86.  
  87.  
  88. // Affiche la ligne
  89. $t->render('table.line');
  90. }
  91.  
  92. // Affiche le résultat
  93. echo $t->render();
  94.  
  95. ?>

Et le code HTML contenant les déclarations pour Hyla_Tpl :

  1. <html>
  2.  
  3. <head>
  4. <title>{$title}</title>
  5. </head>
  6.  
  7. <body>
  8.  
  9. <h1>{_Current path} : {$dir}</h1>
  10.  
  11. <a href="?dir={$dir}&lang={$lang_switch}">{_Switch lang} : {$lang_switch}</a>
  12.  
  13. <table width="50%">
  14. <tr>
  15. <th width="90%">{_Name}</th>
  16. <th width="10%">{_Size}</th>
  17. </tr>
  18.  
  19. <!-- BEGIN table.line -->
  20. <tr style="background-color: #{!cycle:'DDD', 'AAA'};">
  21. <td align="left">
  22. <!-- BEGIN table.line.dir -->
  23. <a href="?dir={$file.path}&lang={$lang}"><strong>{$file.name}</strong></a>
  24. <!-- ELSE table.line.dir -->
  25. <strong>{$file.name}</strong>
  26. <!-- END table.line.dir -->
  27. </td>
  28. <td align="right">
  29. {$file.size|humansize}
  30. </td>
  31. </tr>
  32. <!-- END table.line -->
  33.  
  34. </table>
  35.  
  36. </body>
  37.  
  38. </html>

Téléchargez le tout dans la pièce jointe.