Наверх

Как в поиске по товарам заменить чекбоксы на список

Вопрос очень простой, но регулярно поступающий в службу поддержки.

В шаблоне поиска по товарам modules/shop/views/shop.view.show_search.php находим цикл по дополнительным характеристикам:

Пример:

foreach ($result["rows"] as $row)
{
    
//...
}

Характеристики с типами «список» и «список с выбором нескольких значений» выводятся следующими строками:

Пример:

case 'select':
case
'multiple':
    echo
'
    <span class="input-title">'
.$row["name"].':</span>';
    foreach (
$row["select_array"] as $key => $value)
    {
        echo
'<input type="checkbox" id="shop_search_p'.$row["id"].'_'.$key.'" name="p'.$row["id"].'[]" value="'.$key.'"'.(in_array($key, $row["value"]) ? " checked" : '').'>
        <label for="shop_search_p'
.$row["id"].'_'.$key.'">'.$value.'</label>
        <br>'
;
    }

Заменяем на следующий код:

Пример:

case 'select':
case
'multiple':
    echo
'
    <span class="input-title">'
.$row["name"].':</span>
    <select name="p'
.$row["id"].'[]">';
    foreach (
$row["select_array"] as $key => $value)
    {
        echo
'<option value="'.$key.'"'.(in_array($key, $row["value"]) ? " selected" : '').'>'.$value.'</option>';
    }
    echo
'</select>';

Пример можно применять и в модуле «Объявления».

Ваши комментарии и дополнения

Что то много тут ошибок или я не понял -
Что это за синтаксис:
Код
<select name="p'.$row["id"].'[]">';


Он превращается в HTML
Код
<select name="p1[]">


Разве такое имя может быть у селекта?
Сергей, где именно ошибки?
Цитата
Разве такое имя может быть у селекта?

Да, может. Оно означает, что значение будет частью массива данных.
Если указать два таких селекат, то из формы придут оба значения в виде массива, а не одно.
Здравствуйте. Подскажите пожалуйста как можно вывести выпадающим списком Производителей?
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.