БЛОГОДЖУМЛА - БЛОГ О ДЖУМЛА

Выбор направления сортировки по умолчанию в категории товаров в Virtuemart 1.1.*

  • Категория: Virtuemart 1
  • Автор:
  • Просмотров: 8549

joomla virtuemart категория товаров сортировка Фильтр

Направление сортировки по умолчанию

В настройках Virtuemart разработчики позволили нам выбирать по какому полю мы хотим сортировать товары по умолчанию. Но почему-то не дали нам возможность менять направление сортировки товаров в категории по умолчанию.

Она всегда DESC - от большего к меньшему. Когда мы выбираем поле для сортировки "Последние поступления" нас такой вариант устраивает - покупатель сначала видит самые свежие товары. Но когда мы выбираем поле для сортировки "Цена" - получается совсем неприятная картина - пугаем покупателя самыми дорогими товарами.

Я предлагаю исправить это досадное недоразумение и ввести в настройку Virtuemart выбор направления сортировки товара по умолчанию:

Так как первый Virtuemart уже точно не будет обновляться - с чистой совестью правим файлы компонента.

Сначала создадим нужную переменную в конфиге.
Открываем administrator\components\com_virtuemart\virtuemart.cfg.php и после 60 строки добавляем строку 

define('VM_BROWSE_ORDERBY_FIELD_DESC', 'DESC');

Закрываем, сохраняем.

Теперь идем в класс administrator\components\com_virtuemart\classes\ps_config.php и после строки (примерно 76-я)

"VM_BROWSE_ORDERBY_FIELD"  =>      "conf_VM_BROWSE_ORDERBY_FIELD", 

добавляем 

"VM_BROWSE_ORDERBY_FIELD_DESC"  =>      "conf_VM_BROWSE_ORDERBY_FIELD_DESC",

Закрываем, сохраняем.

Отображаем новую опцию в настройке Virtuemart.

Открываем administrator\components\com_virtuemart\html\admin.show_cfg.php и примерно после 782 строки после

<td><?php echo vmToolTip( $VM_LANG->_('PHPSHOP_ADMIN_CFG_NAV_AT_TOP_TIP') ) ?></td>

    </tr>

добавляем новый переключатель

<tr>

        <td class="labelcell">Направление сортировки товаров по умолчанию</td>

        <td>

                <select class="inputbox" name="conf_VM_BROWSE_ORDERBY_FIELD_DESC">

                        <option value="DESC" <?php if (@VM_BROWSE_ORDERBY_FIELD_DESC == 'DESC') echo "selected=\"selected\""; ?>>От большего к меньшему</option>

                        <option value="ASC" <?php if (@VM_BROWSE_ORDERBY_FIELD_DESC == 'ASC') echo "selected=\"selected\""; ?>>От меньшего к большему</option>

            </select>

        </td>

       <td><?php echo vmToolTip( 'Укажите направление сортировки товаров в категории по умолчанию' ) ?></td>

    </tr>

Закрываем, сохраняем. Можем попереключать - проверить что выбранное значение сохраняется.

Нам осталось сделать так чтобы новая опция влияла на направление сортировки товара - открываем administrator\components\com_virtuemart\html\shop_browse_queries.php и в самом начале вместо

$DescOrderBy = strtoupper($vm_mainframe->getUserStateFromRequest( "browse{$keyword}{$category_id}{$manufacturer_id}DescOrderBy", 'DescOrderBy', "DESC" ));

меняем в самом конце DESC на наш переключатель:

$DescOrderBy = strtoupper($vm_mainframe->getUserStateFromRequest( "browse{$keyword}{$category_id}{$manufacturer_id}DescOrderBy", 'DescOrderBy', VM_BROWSE_ORDERBY_FIELD_DESC ));

Закрываем. Сохраняем. Наслаждаемся.

 

 

Back to top