Создание выпадающего списка из .txt? - PullRequest
0 голосов
/ 25 февраля 2010

У меня есть меню выбора, жестко запрограммированное в теме WordPress (PHP), но менеджер требует, чтобы редактировать их часто. Можно ли заполнить выбранные параметры выпадающего списка при импорте текстового файла? Поэтому ему просто нужно отредактировать текстовый файл, и параметры меню будут изменены.

Текущее меню выглядит так:

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

Ответы [ 2 ]

1 голос
/ 25 февраля 2010

Конечно - сделайте небольшой цикл, который проходит по строкам в выбранном вами формате.

<?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 голосов
/ 25 февраля 2010

Конечно, просто извлеките текстовый файл в массив, используя file () и создайте из него выделение. Очень простая реализация: menu.txt:

hongkong        Hong Kong   
taiwan          Taiwan
mainland_china  Mainland China

Обратите внимание на вкладки между значением и меткой.

Тогда в 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>";

 }

Насколько я понимаю, вам осталось решить следующее:

  • Как предварительно установить предопределенное значение (Вам нужно повторить selected в нужном элементе)

  • Как поступить с пользователем, редактирующим значение из текстового файла, которое было предварительно установлено в вашем выборе.

  • Обработка ошибок, если файл не существует или недоступен

  • Обработка ошибок, если пользователь испортил разрывы строк или что-то подобное - возможно, подсчитать строки и / или определить, есть ли вкладки внутри файла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...