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


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

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

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

B_A_H_O сказал(а) 04 Мар 2014 - 15:15:

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

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

 

B_A_H_O сказал(а) 04 Мар 2014 - 15:15:

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

SmetDenis сказал(а) 04 Мар 2014 - 18:38:

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

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

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

 

6WP7In.png

 

 

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


  • 0

#4 SmetDenis

SmetDenis

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

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

 

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

  1.     <script type="text/javascript">
  2.         jQuery(document).ready(function($){
  3.             $('.order').click(function(){
  4.                 $('form#order input[name="order"]').val($(this).data('order'));
  5.                 $('form#order').submit();
  6.                 return false;
  7.             })
  8.         });
  9.     </script>
  10.     <form id="order" method="get">
  11.         <input type="hidden" name="order">
  12.     </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, чтобы он распространялся на новый тип данных?

  1. /**
  2. * Get ordering
  3. * @return mixed
  4. */
  5. public function getOrderings()
  6. {
  7. $default = $this->_params->get('order_default', array());
  8. $default = $this->app->data->create($default);
  9. $orderList = $this->getOrderList();
  10.  
  11. $request = $this->app->jbrequest->getArray('order');
  12. $value = (!empty($request)) ? $request : $default;
  13. $values = $this->app->data->create($value);
  14.  
  15. $html = array();
  16.  
  17. if ((int)$this->_params->get('order_show', 1) && !empty($orderList)) {
  18.  
  19. if (empty($request)) {
  20. $values->set('reverse', (int)($default->order == 'desc'));
  21. }
  22.  
  23. $orderMode = $this->_params->get('order_mode');
  24.  
  25. $options = array();
  26. foreach ($orderList as $fieldId) {
  27. $name = $this->app->jborder->getNameById($fieldId);
  28. $options[] = $this->app->html->_('select.option', $fieldId, $name);
  29. }
  30.  
  31. $html[] = $this->app->html->_('zoo.genericlist', $options, 'order[field]', array(), 'value', 'text', $values->get('field'));
  32. $html[] = '<input type="hidden" name="order[mode]" value="' . $orderMode . '" />';
  33. $html[] = $this->app->jbhtml->checkbox(array('1' => JText::_('JBZOO_ORDER_REVERSE')), 'order[reverse]', '', $values->get('reverse'));
  34.  
  35. } else {
  36.  
  37. foreach ($default as $key => $value) {
  38. $html[] = '<input type="hidden" name="order[' . $key . ']" value="' . $value . '" />';
  39. }
  40.  
  41. }
  42.  
  43. return implode("\n ", $html);
  44. }
  1. /**
  2. * Get pages
  3. * @return mixed
  4. */
  5. public function getPages()
  6. {
  7. $value = $this->app->jbrequest->get('limit', $this->_params->get('pages', 20));
  8.  
  9. if ((int)$this->_params->get('pages_show', 1)) {
  10.  
  11. $values = array('5', '10', '15', '20', '25', '30', '50', '100', 'all');
  12.  
  13. $options = array();
  14. foreach ($values as $option) {
  15. $options[] = $this->app->html->_('select.option', $option, JText::_('JBZOO_NUMBERS_' . $option));
  16. }
  17.  
  18. $html = $this->app->html->_('zoo.genericlist', $options, 'limit', array(), 'value', 'text', $value, 'filterEl_limit');
  19.  
  20. } else {
  21. $html = '<input type="hidden" name="limit" value="' . $value . '" />';
  22. }
  23.  
  24. return $html;
  25. }
  26.  

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


  • 0

#9 Cheren-dow

Cheren-dow

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

B_A_H_O сказал(а) 05 Мар 2014 - 14:28:

какие учебники нужно прочитать и сколько времени потратить, чтобы более-менее шарить в 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!