Перейти к содержимому


Фотография
- - - - -

Фильтр, как сортировка

jbzoo search фильтр сортировка

  • Закрытая тема Тема закрыта
Сообщений в теме: 13

#1 B_A_H_O

B_A_H_O

Отправлено 04 March 2014 - 16:15

Добрый день!

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

 

Этот вариант это создание модуля фильтра и отображать в нем только сортировки и количество материалов.

Типа вот так:

6WG4yB.png

 

Отсюда 2 вопроса.

 

1) Сильно ли повлияет на скорость работы сайта наличие по 1-2 таких модулей в каждой категории товаров?

 

2) Как ссылки в сортировке материалов вывести в 1 ряд, а не в виде выпадающего списка? И убрать галочку "Обратный порядок", чтобы порядок срабатывал при повторном нажатии на параметр сортировки.

 

Вывод нужен такой вот:

6WGlk9.png


  • 0

#2 SmetDenis

SmetDenis

Отправлено 04 March 2014 - 19:38

1) Сильно ли повлияет на скорость работы сайта наличие по 1-2 таких модулей в каждой категории товаров?
 

Нет, не сильно. Поля простые, поэтому рендериться должны быстро.

 

2) Как ссылки в сортировке материалов вывести в 1 ряд, а не в виде выпадающего списка? И убрать галочку "Обратный порядок", чтобы порядок срабатывал при повторном нажатии на параметр сортировки.

float: left через CSS пробовали?


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 B_A_H_O

B_A_H_O

Отправлено 04 March 2014 - 19:48

float: left через CSS пробовали?

А как тут поможет Float, если тип вывода выпадающий список - Select ?

Нужно изменить тип вывода хотя бы на простой список <ul>  или на обычные ссылки <a>.

 

6WP7In.png

 

 

К примеру форумчанин i001 в своем хаке использовал вывод именно в виде ссылок.


  • 0

#4 SmetDenis

SmetDenis

Отправлено 04 March 2014 - 19:59

Второй фрагмент кода, который представлен в хаке, выводит список ссылок.

 

Следующий скрипт по клику на ссылку - отправляет форму.

    <script type="text/javascript">
        jQuery(document).ready(function($){
            $('.order').click(function(){
                $('form#order input[name="order"]').val($(this).data('order'));
                $('form#order').submit();
                return false;
            })
        });
    </script>
    <form id="order" method="get">
        <input type="hidden" name="order">
    </form>

Т.е по сути, ссылки железно прописаны в документе. А по событию клик отправляет форму и браузер в get запрос дописывает параметр сортировки (при этом даже фильтр не должен измениться).

 

Этот параметр обрабатывается первым скриптом из хака.


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#5 B_A_H_O

B_A_H_O

Отправлено 04 March 2014 - 20:03

Изнутри пример выглядит так:

6WPBv8.png

 

вот бы сделать такой или похожий вывод.

Реально ?


  • 0

#6 B_A_H_O

B_A_H_O

Отправлено 04 March 2014 - 20:54

а где находится файл шаблона, который и формирует вывод элемента <Select>  ?

Имеется ввиду именно в фильтре.

Или где дается команда на вывод элемента фильтра, в моем случает сортировка, в виде выпадающего списка <Select> ?


Сообщение отредактировал B_A_H_O: 04 March 2014 - 20:55

  • 0

#7 SmetDenis

SmetDenis

Отправлено 04 March 2014 - 21:21

Список создается тут

 

modules\mod_jbzoo_search\helper.php getOrderings()


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#8 B_A_H_O

B_A_H_O

Отправлено 05 March 2014 - 15:28

Может кто-то помочь? А то все-таки не хватает знаний PHP для полноценного редактирования. :(

 

вот куски кода. Как сделать  вывод в виде кнопок, или ссылок, или чек-боксов jQuery, чтобы работала отправка данных ?

Чтобы отправка оставалась при этом в Ajax нужно будет подредактировать сам скрипт Ajax, чтобы он распространялся на новый тип данных?

    /**
     * Get ordering
     * @return mixed
     */
    public function getOrderings()
    {
        $default   = $this->_params->get('order_default', array());
        $default   = $this->app->data->create($default);
        $orderList = $this->getOrderList();

        $request = $this->app->jbrequest->getArray('order');
        $value   = (!empty($request)) ? $request : $default;
        $values  = $this->app->data->create($value);

        $html = array();

        if ((int)$this->_params->get('order_show', 1) && !empty($orderList)) {

            if (empty($request)) {
                $values->set('reverse', (int)($default->order == 'desc'));
            }

            $orderMode = $this->_params->get('order_mode');

            $options = array();
            foreach ($orderList as $fieldId) {
                $name      = $this->app->jborder->getNameById($fieldId);
                $options[] = $this->app->html->_('select.option', $fieldId, $name);
            }

            $html[] = $this->app->html->_('zoo.genericlist', $options, 'order[field]', array(), 'value', 'text', $values->get('field'));
            $html[] = '<input type="hidden" name="order[mode]" value="' . $orderMode . '" />';
            $html[] = $this->app->jbhtml->checkbox(array('1' => JText::_('JBZOO_ORDER_REVERSE')), 'order[reverse]', '', $values->get('reverse'));

        } else {

            foreach ($default as $key => $value) {
                $html[] = '<input type="hidden" name="order[' . $key . ']" value="' . $value . '" />';
            }

        }

        return implode("\n ", $html);
    }
    /**
     * Get pages
     * @return mixed
     */
    public function getPages()
    {
        $value = $this->app->jbrequest->get('limit', $this->_params->get('pages', 20));

        if ((int)$this->_params->get('pages_show', 1)) {

            $values = array('5', '10', '15', '20', '25', '30', '50', '100', 'all');

            $options = array();
            foreach ($values as $option) {
                $options[] = $this->app->html->_('select.option', $option, JText::_('JBZOO_NUMBERS_' . $option));
            }

            $html = $this->app->html->_('zoo.genericlist', $options, 'limit', array(), 'value', 'text', $value, 'filterEl_limit');

        } else {
            $html = '<input type="hidden" name="limit" value="' . $value . '" />';
        }

        return $html;
    }

и вопрос №2, какие учебники нужно прочитать и сколько времени потратить, чтобы более-менее шарить в PHP ?
Чтобы решить такой вот вопрос хотя бы


  • 0

#9 Cheren-dow

Cheren-dow

Отправлено 05 March 2014 - 16:30

какие учебники нужно прочитать и сколько времени потратить, чтобы более-менее шарить в PHP ?

Что бы более менее начать разбираться, первым делом  думаю стоит видео уроки посмотреть например от Специалиста - найти можно на трекерах. Ну а потом как представление хоть какое сложится можно и книжку покупать. С нуля по книжке мне кажется трудновато вникать. А по видео разжуют немного а потом остается только знания в "копилку" вкидывать)
  • 0
Изображение
 

#10 B_A_H_O

B_A_H_O

Отправлено 05 March 2014 - 16:32

ясно.

А с кодом не поможете? )


  • 0





Темы с аналогичным тегами jbzoo search, фильтр, сортировка

Click to return to top of page in style!