2010-02-25 13 views
0

J'ai un menu sélectionné codé en dur dans un thème wordpress (php), mais le gestionnaire a besoin de les éditer fréquemment. Est-il possible de remplir les options de liste déroulante à partir d'une importation de fichier texte? Donc il doit juste éditer le fichier texte et les options du menu changeraient.Création d'une liste déroulante sélectionnée à partir d'un fichier .txt?

Le menu actuel ressemble à ceci:

<select name="location" id="sort-location" class="sort-dropdown"> 
      <option value="" selected="selected">LOCATION:</option> 
      <option value="" disabled="">--------------</option> 
      <option value="hongkong">Hong Kong</option> 
      <option value="taiwan">Taiwan</option> 
      <option value="mainland_china">Mainland China</option> 
      <option value="" disabled="">--------------</option> 
      <option value="">SHOW ALL</option> 
     </select> 

Répondre

1

Sûr - créez une petite boucle qui parcourt les lignes dans le format de votre choix.

<?php 
$select = file_get_contents('select.txt'); 
$lines = explode("\n", $select); 
foreach ($lines as $line) { 
    // let's say our format is like this: 
    // value|name|selected|disabled 
    // or: 
    // - 
    // for separator 
    if ($line == '-') { 
     echo '<option disabled="disabled">----------</option>'; 
    } else { 
     list($value, $name, $selected, $disabled) = explode("|",$line); 
     echo '<option value="'.$value.'"', 
     $selected?' selected="selected"':'', 
     $disabled?' disabled="disabled"':'', 
     '>'.$name.'</option>'; 
    } 
} 
?>
+0

Parfait, merci! :) – 3zzy

+0

Np. Si vous avez besoin d'aide pour étendre cela à optgroups et autres joyeusetés, demandez;) – casraf

0

Bien sûr, juste récupérer le fichier texte dans un tableau en utilisant file() et créer la sélection hors de celui-ci. Une implémentation très simple: menu.txt:

hongkong  Hong Kong 
taiwan   Taiwan 
mainland_china Mainland China 

Notez les onglets entre la valeur et l'étiquette.

Puis en PHP:

$menu_items = file("menu.txt"); 

foreach ($menu_items as $menu_item) 
{ 
    // Explode 
    $menu_item_exploded = explode("\t", $menu_item); 
    $option_value = htmlspecialchars(trim($menu_item_exploded[0])); 
    $option_label = htmlspecialchars(trim($menu_item_exploded[1])); 

    echo "<option value='$option_value'>$option_label</option>"; 

} 

Pour autant que je le vois, vous avez ce qui suit à gauche pour résoudre:

  • Comment effectuer une pré-définir une valeur prédéfinie (Vous devez faire écho selected dans le bon article)

  • Comment traiter l'utilisateur en éditant une valeur à partir du fichier texte qui a été prédéfini dans votre sélection.

  • Gestion des erreurs si le fichier est pas existant ou non accessible

  • Gestion des erreurs si les vis de l'utilisateur les sauts de ligne, ou quelque chose de similaire - peut-être compter les lignes, et/ou détecter s'il y a des onglets à l'intérieur le fichier

Questions connexes