Вход • Регистрация

В фильтре производителей по алфавиту

  • 03 апреля 2018 г.
  • Подскажите, кто знает, как в фильтре по производителям, который слева в списке товаров сделать сортировку по алфавиту названий производителей. Сейчас там автоматом как в админке по степени добавления они идут. Во вложении картинка.
    • 03 апреля 2018 г.
    • Про автоматическую сортировку ничего не скажу, но если у вас не слишком много брендов, то ведь в админке их можно перетасовать так, как хочется. Нет?
      • 03 апреля 2018 г.
      • Больше 100. Задолбался тасовать )))
        • 03 апреля 2018 г.
        • Мда... быстрее лето в Сибирь придет

          Знаю, что файл, отвечающий за фильтр, - это shop.view.show_search.php

          Соответственно, код вывода производителя такой

          Код
          if (! empty($result["brands"]))
          {
          echo '<div class="shop_search_brand">
          <span class="input-title">'.$this->diafan->_('Производитель').':</span>';
          foreach ($result["brands"] as $row)
          {
          echo '<div class="js_shop_search_brand" site_id="'.$row["site_id"].'">
          <input type="checkbox" name="brand[]" value="'.$row["id"].'"';
          if(in_array($row["id"], $result["brand"]))
          {
          echo ' checked';
          }
          echo ' id="shop_search_brand'.$row["id"].'"> <label for="shop_search_brand'.$row["id"].'">'.$row["name"].'</label></div>';
          }
          echo '</div>';
          }


          Терзают меня смутные сомнения, что копать нужно сюда. Но точно не знаю, извините.

          П.С. Нужно ждать гуру. Может подскажут.
        • 03 апреля 2018 г.
        • Код
          // сортировка массива по алфавиту (цифры, английстий a-z, русский а-я)
          natsort($result["brands"]);

          //Вывод отсортированных брендов
          foreach ($result["brands"] as $row)
          {
          • 03 апреля 2018 г.
          • Я извиняюсь... У меня лыжи не едут

            Вставила natsort($result["brands"]); есть сортировка по алфавиту. Но падает ошибка

            Цитата
            Array to string conversion


            Ну, и ругается на эту самую строчку: natsort(Array(...)) called at [/var/www/.../custom/biznes/modules/shop/views/shop.view.show_search.php:106]

            Павел, не подскажете, что тут не так?
            • 03 апреля 2018 г.
            • Если бы массив был

              Код
              $result["brands"] = array("Audi", "Chevrolet", "BMW");


              то такой вариант подошел бы, но тут же

              Код
              [0] => array(
              "name" => "audy",
              //и другие параметры
              ),
              [2] => array(
              "name" => "chevrolet",
              //и другие параметры
              ),
              [3] => array(
              "name" => "BMW",
              //и другие параметры
              )
              • 03 апреля 2018 г. , редакция: 03 апреля 2018 г.
              • А я уже честно не помню как оно там, какой массив - сложный или простой. Надо внимательнее глянуть. Если сложный массив, то там сортировка с пользовательской функцией. Не natsort(), а другая - usort(). Попозже напишу.

                Посмотрел:
                Код
                if (! empty($result["brands"]))
                {
                // Сортировка брендов в алфавитном порядке
                function mysort($a, $b) {
                if ($a['name']==$b['name']) return 0;
                return ($a['name']<$b['name']) ? -1 : 1;
                }
                usort( $result["brands"], 'mysort' );

    • 03 апреля 2018 г. , редакция: 03 апреля 2018 г.
    • А при выборке из БД SQL уже не сортируется?

      в модели фильтра в районе объявления $result["brands"]=... в конце ORDER BY [name] ASC на таблицу только указать не забудьте.
      • 03 апреля 2018 г. , редакция: 03 апреля 2018 г.
      • Цитата
        А при выборке из БД SQL уже не сортируется?
        Прекрасно сортируется. И даже правильнее и куда менее трудозатратно. Но для таких правильных решений надо лезть либо в модель, либо в контроллер. А это не каждому порекомендуешь.

        А во вьюхе и найти проще и решения тут более доступные и примитивные. И сломать что-либо возможностей меньше. В любом случае, хорошо, когда представлена вся палитра решений. К тому же в данном случае это разовая операция. Так что способы можно считать равноценными.

        Если бы в цикле нужно было что-то провернуть, то другое дело.
        • 03 апреля 2018 г.
        • Спасибо, Павел. У меня работает.
          Пы.Сы. Мне, конечно, пока не нужно, но в целях саморазвития...

          Я, кстати, модельку вообще не люблю править, потом с обновлениями намучаешься.
        • 05 апреля 2018 г.
        • Примерно, как купить не перебранной крупы и перебирать ее потом, вместо покупки чистой, по той же цене.
          • 05 апреля 2018 г.
          • Совершенно верно. Одно отличие "время" на данные действия)))
  • 19 февраля 2019 г.
  • А как это можно реализовать, если производители выводятся выпадающим списком? Не получается "применить" код который давали выше(

    Код
    if (! empty($result["brands"]))
    {
    echo '<div class="shop_search_brand">
    <label class="input-title">'.$this->diafan->_('Производитель').':</label>
    <div class="panel-body">
    <select name="brand[]" class="form-control">';
    echo '<option value="">'.$this->diafan->_('Все').'</option>';
    foreach ($result["brands"] as $row)
    {
    echo '<option value="'.$row["id"].'" '.( in_array($row["id"], $result["brand"] ) ? ' selected' : '').'>'.$row["name"].'</option>';
    }
    echo '</select>
    </div>
    </div>';
    }

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум