template

template - PHP - Programmation

Marsh Posté le 15-05-2006 à 12:56:53    

Hello
Voilou, je me suis lancé dans un truc à la c.., juste pour le fun (je ne suis pas un pro)
Je souhaite passer phpnuke en template en utilisant le moteur de phpbb.
Tout fonctionne bien pour les formulaire simples, mais je bute pour passer certaines variables, quand elles sont compliquées et notamment :
 

Code :
  1. echo "</td></tr><tr><td>"
  2. ."" . _DEFAULTTHEME . ":</td><td><select name='xDefault_Theme'>";
  3.     $handle=opendir('themes');
  4.     while ($file = readdir($handle)) {
  5. if ( (!ereg("[.]",$file)) ) {
  6.  $themelist .= "$file ";
  7. }
  8.     }
  9.     closedir($handle);
  10.     $themelist = explode(" ", $themelist);
  11.     sort($themelist);
  12.     for ($i=0; $i < sizeof($themelist); $i++) {
  13. if($themelist[$i]!="" ) {
  14.     echo "<option name='xDefault_Theme' value='$themelist[$i]' ";
  15.  if($themelist[$i]==$Default_Theme) echo "selected";
  16.  echo ">$themelist[$i]\n";
  17. }
  18.     }


 
J’imagine dans ma petite tête que ‘sort’ équivaut à un echo ou un print pour la liste des thèmes dispo dans mon directory themes.
 
Normalement, j’utilise  
 

Code :
  1. $template->assign_block_vars('themesel',array(
  2.             ‘THEME’=> $theme
  3.           ));


 
pour passer mes variables que je récupère dans mon fichier tpl grace à  
 

Code :
  1. <select name='xDefault_Theme'>
  2.       <!-- BEGIN themesel -->
  3.         <option name='xDefault_Theme'>{themesel.THEME}</option>
  4.       <!-- END themesel -->
  5.       </select>


En sachant que le thème par défaut sera celui qui sera affiché dans le select quand j’afficherai mon formulaire.
Après avoir essayer bon nombre de solutions, je ne comprends pas comment récupérer mes variables themes pour les afficher.
Merci.

Reply

Marsh Posté le 15-05-2006 à 12:56:53   

Reply

Marsh Posté le 15-05-2006 à 13:31:03    

irielov a écrit :

Hello
J’imagine dans ma petite tête que ‘sort’ équivaut à un echo ou un print pour la liste des thèmes dispo dans mon directory themes.


 
"sort" sert à trier un tableau (merci d'avoir jetté un oeil à la doc avant de poster ;))
c'est la boucle juste en-dessous sur l'ensemble du tableau (de 0 à "sizeof" ) avec le "echo" qui l'affiche :)
 
tu as la liste des themes séparé par des espaces, donc un:
- "explode" sur "espace" te donne un tableau de la liste des thèmes
- "sort" sur le tableau retourné pour trier par ordre alphabétique
- "boucle for" avec "echo" sur le tableau pour afficher les themes
 


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 15-05-2006 à 14:04:28    

Xav_ a écrit :

"sort" sert à trier un tableau (merci d'avoir jetté un oeil à la doc avant de poster ;))
c'est la boucle juste en-dessous sur l'ensemble du tableau (de 0 à "sizeof" ) avec le "echo" qui l'affiche :)
 
tu as la liste des themes séparé par des espaces, donc un:
- "explode" sur "espace" te donne un tableau de la liste des thèmes
- "sort" sur le tableau retourné pour trier par ordre alphabétique
- "boucle for" avec "echo" sur le tableau pour afficher les themes


J’ai bien précisé que j’avais une petite tête, d’autant que j’avais regardé la doc officielle php.  :heink:  
Entre temps, j’ai regardé comment fonctionne phpbb. Ils passent la fonction style_select préalablement définie, comme cela STYLE_SELECT' => style_select($user_style, 'style').
La différence, c’est qu’ils listent des variables stockées dans la bdd, alors que pour nuke, je dois utiliser une liste récupérée dans un dossier.

Reply

Marsh Posté le 18-05-2006 à 14:18:01    

Bon, cela n'intéressera probablement pas grand monde, mais j'ai trouvé.
 

Code :
  1. function Themelist (){
  2.     global $prefix, $db;
  3. $row = $db->sql_fetchrow($db->sql_query("SELECT Default_Theme from ".$prefix."_config" ));
  4. $Default_Theme = check_html($row['Default_Theme'], "nohtml" );
  5.     $handle=opendir('themes');
  6.     while ($file = readdir($handle)) {
  7. if ( (!ereg("[.]",$file)) ) {
  8.  $themelist .= "$file ";
  9. }
  10.     }
  11.     closedir($handle);
  12.     $themelist = explode(" ", $themelist);
  13.     sort($themelist);
  14.     for ($i=0; $i < sizeof($themelist); $i++) {
  15. if(!empty($themelist[$i])) {
  16.     if($themelist[$i]==$Default_Theme){
  17.         $selected = ( $row['Default_Theme'] == $themelist[$i] ) ? ' selected="selected"' : '';
  18.         $printtheme .= '<option value="xDefault_Theme"' . $selected . '>' . $themelist[$i] . '</option>';
  19. }else{
  20.         $printtheme .= '<option value="xDefault_Theme">' . $themelist[$i] . '</option>';
  21.         }
  22.       }
  23.     }
  24.     return $printtheme;
  25. }


Code :
  1. $template->assign_block_vars('themelist',array(
  2.             'THEMELIST'=> Themelist()
  3.           ));


Code :
  1. <tr>
  2.  <td class="row1">{L_DEFAULTTHEME}</td>
  3.  <td class="row2">
  4.       <select name="xDefault_Theme">
  5.         <!-- BEGIN themelist -->
  6.         {themelist.THEMELIST}
  7.         <!-- END themelist -->
  8.       </select>
  9.     </td>
  10. </tr>


Message édité par irielov le 18-05-2006 à 14:18:39
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed