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


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

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

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

Сообщений в теме: 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)

ставим

   if (isset($_GET['order']))
        {
            if ($_GET['order'] == 'name ASC')
            {
                $_SESSION['order'] = $_GET['order'];
                $this->item_order = array(
                    '_jbzoo_0_field_corename',
                    '_jbzoo_0_mode_s',
                    '_jbzoo_0_order_asc'
                );
            }
            elseif ($_GET['order'] == 'name DESC')
            {
                $_SESSION['order'] = $_GET['order'];
                $this->item_order = array(
                    '_jbzoo_0_field_corename',
                    '_jbzoo_0_mode_s',
                    '_jbzoo_0_order_desc'
                );
            }
            elseif ($_GET['order'] == 'price DESC')
            {
                $_SESSION['order'] = $_GET['order'];
                $this->item_order = array(
                    '_jbzoo_0_field_b0d2b218-87a9-4573-85b7-350d2eec1061__price',
                    '_jbzoo_0_mode_n',
                    '_jbzoo_0_order_desc'
                );
            }
            elseif ($_GET['order'] == 'price ASC')
            {
                $_SESSION['order'] = $_GET['order'];
                $this->item_order = array(
                    '_jbzoo_0_field_b0d2b218-87a9-4573-85b7-350d2eec1061__price',
                    '_jbzoo_0_mode_n',
                    '_jbzoo_0_order_asc'
                );
            }
        }

В этом примере будет сортировка по цене и названию Сверьте 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)) {
 
вставляем 
?>	 <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>
  <div class="sort">  <form id="order" method="get">
        <input type="hidden" name="order">
    </form>
    <? if (isset($_SESSION['order']) && $_SESSION['order'] == 'name ASC' || isset($_GET['order']) && $_GET['order'] == 'name ASC'): ?>
        <a href="#" data-order="name DESC" class="order desc">По названию</a>
    <? else: ?>
        <a href="#" data-order="name ASC" class="order asc">По названию</a>
    <? endif; ?>
    <? if (isset($_SESSION['order']) && $_SESSION['order'] == 'price ASC' || isset($_GET['order']) && $_GET['order'] == 'price ASC'): ?>
        <a href="#" data-order="price DESC" class="order desc">По цене</a>
    <? else: ?>
        <a href="#" data-order="price ASC" class="order asc">По цене</a>
    <? endif; ?>
	</div>
	<? 
ну и как обычно немного css
 
.sort {
    position: absolute;
    top: 26px;
    right: 0;
}

.sort a {
    margin-left: 13px;
    color: #4d4d4d;
    font-weight: bold;
}

.sort a:hover {
    color: #1a79c3;
}

.order.desc:after {
    content: '';
    background-image: url(../images/sortu.png);
    background-repeat: no-repeat;
    background-position: 0 5px;
    display: inline-block;
    width: 10px;
    height: 10px;
    margin-left: 4px;
}

.order.asc:after {
    content: '';
    background-image: url(../images/sortd.png);
    background-repeat: no-repeat;
    background-position: 0 5px;
    display: inline-block;
    width: 10px;
    height: 10px;
    margin-left: 4px;
}

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

 

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

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

 

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


Сообщение отредактировал 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

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

 

Было бы не плохо приложить измененные 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!