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


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

Сортировка по цене, названию и т.д. с фронта

рецепт сортировка категория

Сообщений в теме: 114

#1 i001

i001

Отправлено 15 February 2014 - 13:46

*
Популярное сообщение!

Небольшой хард код, который позволит пользователю сортировать товары с фронта.

Менять будем 2 файла.

1. components\com_zoo\controllers\default.php

 

сразу после $this->item_order = $params->get('config.item_order'); (строка 228)

ставим

  1. if (isset($_GET['order']))
  2. {
  3. if ($_GET['order'] == 'name ASC')
  4. {
  5. $_SESSION['order'] = $_GET['order'];
  6. $this->item_order = array(
  7. '_jbzoo_0_field_corename',
  8. '_jbzoo_0_mode_s',
  9. '_jbzoo_0_order_asc'
  10. );
  11. }
  12. elseif ($_GET['order'] == 'name DESC')
  13. {
  14. $_SESSION['order'] = $_GET['order'];
  15. $this->item_order = array(
  16. '_jbzoo_0_field_corename',
  17. '_jbzoo_0_mode_s',
  18. '_jbzoo_0_order_desc'
  19. );
  20. }
  21. elseif ($_GET['order'] == 'price DESC')
  22. {
  23. $_SESSION['order'] = $_GET['order'];
  24. $this->item_order = array(
  25. '_jbzoo_0_field_b0d2b218-87a9-4573-85b7-350d2eec1061__price',
  26. '_jbzoo_0_mode_n',
  27. '_jbzoo_0_order_desc'
  28. );
  29. }
  30. elseif ($_GET['order'] == 'price ASC')
  31. {
  32. $_SESSION['order'] = $_GET['order'];
  33. $this->item_order = array(
  34. '_jbzoo_0_field_b0d2b218-87a9-4573-85b7-350d2eec1061__price',
  35. '_jbzoo_0_mode_n',
  36. '_jbzoo_0_order_asc'
  37. );
  38. }
  39. }

В этом примере будет сортировка по цене и названию Сверьте Id цены. b0d2b218-87a9-4573-85b7-350d2eec1061

По тому же принципу можно добавить любое другое поле.

 

2. media\zoo\applications\jbuniversal\templates\catalog\category.php

строка 57

сразу после 

 

  // category items render
 
    if ($this->params->get('config.items_show', 1) && count($this->items)) {
 
вставляем 
  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. <div class="sort"> <form id="order" method="get">
  11. <input type="hidden" name="order">
  12. </form>
  13. <? if (isset($_SESSION['order']) && $_SESSION['order'] == 'name ASC' || isset($_GET['order']) && $_GET['order'] == 'name ASC'): ?>
  14. <a href="#" data-order="name DESC" class="order desc">По названию</a>
  15. <? else: ?>
  16. <a href="#" data-order="name ASC" class="order asc">По названию</a>
  17. <? endif; ?>
  18. <? if (isset($_SESSION['order']) && $_SESSION['order'] == 'price ASC' || isset($_GET['order']) && $_GET['order'] == 'price ASC'): ?>
  19. <a href="#" data-order="price DESC" class="order desc">По цене</a>
  20. <? else: ?>
  21. <a href="#" data-order="price ASC" class="order asc">По цене</a>
  22. <? endif; ?>
  23. </div>
  24. <?
ну и как обычно немного css
 
  1. .sort {
  2.     position: absolute;
  3.     top: 26px;
  4.     right: 0;
  5. }
  6.  
  7. .sort a {
  8.     margin-left: 13px;
  9.     color: #4d4d4d;
  10.     font-weight: bold;
  11. }
  12.  
  13. .sort a:hover {
  14.     color: #1a79c3;
  15. }
  16.  
  17. .order.desc:after {
  18.     content: '';
  19.     background-image: url(../images/sortu.png);
  20.     background-repeat: no-repeat;
  21.     background-position: 0 5px;
  22.     display: inline-block;
  23.     width: 10px;
  24.     height: 10px;
  25.     margin-left: 4px;
  26. }
  27.  
  28. .order.asc:after {
  29.     content: '';
  30.     background-image: url(../images/sortd.png);
  31.     background-repeat: no-repeat;
  32.     background-position: 0 5px;
  33.     display: inline-block;
  34.     width: 10px;
  35.     height: 10px;
  36.     margin-left: 4px;
  37. }

Картинку из вложения кидаем в папку Images вашего шаблона. 

 

Получаем сортировку по цене и названию как здесь

http://key67.ru/kata...hi-avtomobilnye

 

Прикрепленные изображения

  • sortd.png

Прикрепленные файлы


Сообщение отредактировал SmetDenis: 18 February 2014 - 06:16

  • 9

#2 SmetDenis

SmetDenis

Отправлено 15 February 2014 - 18:45

Здорово, спасибо!

 

Было бы не плохо приложить измененные PHP файлы


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



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


#3 i001

i001

Отправлено 15 February 2014 - 19:13

SmetDenis сказал(а) 15 Фев 2014 - 17:45:

Здорово, спасибо!

 

Было бы не плохо приложить измененные PHP файлы

Приложил


  • 1

#4 Sliapy

Sliapy

Отправлено 15 February 2014 - 20:21

Только вчера в скайпе с Денисом обсуждали сортировку  - прямо читаете мысли :)

 

Спасибо за рецепт. Штука весьма полезная для любого магазина.


  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#5 Almaz

Almaz

Отправлено 15 February 2014 - 21:37

При выключенном SEF затираются все GET переменные и грузится уже главная страница.

 

Как переписать submit чтобы имеющиеся переменные остались?


  • 0

#6 B_A_H_O

B_A_H_O

Отправлено 16 February 2014 - 02:23

ооо ... очень нужная штука. Все давно мечтали.

1) Я так понимаю, что на основе этого "хака" можно добавить сортировку и по другим полям? Только где взять  id поля для сортировки?

2) Как я вижу, сортировка одна для всех товаров. Это значит, что если добавить сортировку по яркости (для фонариков), то она же будет показываться в разделе с трусами?


  • 0

#7 i001

i001

Отправлено 16 February 2014 - 08:41

id можно посмотреть в админке или через файрбаг. или вывести все элементы через php и посмотреть все Id

что касается трусов и фонариков, делайте несколько сортировок со своими классами и где не нужно скрывайте через css 


  • 0

#8 B_A_H_O

B_A_H_O

Отправлено 16 February 2014 - 13:22

да, но ведь category.php для всех категорий одинаковый и jbzoo.css тоже.

Как потом делать вызов нужных сортировок в нужной категории ?


  • 0

#9 i001

i001

Отправлено 16 February 2014 - 14:02

каждое приложение имеет свой алиас и соотвественно свой класс, сортировке тоже можно присвоить любой класс,  вызов можно сделать сразу. Всем сортировкам сказать

{display:none}

и в нужном приложение

.сортировка1 {dusplay:block}

Это мне кажется самый просто вариант.

Если речь о категориях можно изменить место вывода сортировки и проделать тоже самое для категорий.

Можно изменить сам код с учетом категорий.


Сообщение отредактировал i001: 16 February 2014 - 14:08

  • 0

#10 B_A_H_O

B_A_H_O

Отправлено 16 February 2014 - 14:12

да, точно, есть алиасы в классах.

Чтож, попробую, отпишусь.


  • 0





Темы с аналогичным тегами рецепт, сортировка, категория

Click to return to top of page in style!