Форум Joomla! Україна

Повна версія: Virtuemart 1.1.4 - сортування товарів за наявністю.
Ви переглядаєте спрощену версію. Переглянути повну версію з віповідним форматуванням.
В стандартному VirtueMart при перегляді категорії на сайті є сортування за назвою, ціною тощо. Треба додати сортування за наявністю (in stock).
Зробимо це засобами шаблона, щоби не змінювати файли ядра VirtueMart

1. Робимо у /components/com_virtuemart/themes/YOURTEMPLATE/ теку user_class
2. У теку /components/com_virtuemart/themes/YOURTEMPLATE/user_class/ копіюємо файл /components/com_virtuemart/html/shop_browse_queries.php
3. У адміністративній частині Компоненти-VirtueMart-Налаштування-Безпека-Дозволити підключення розшрених класів з директорії теми Virtuemart? - ставимо галочку і зберігаємо конфігурацію (див додаток). Це дозволить нам використати наш файл shop_browse_queries.php з /components/com_virtuemart/themes/YOURTEMPLATE/user_class/shop_browse_queries.php
4. У файлі
/components/com_virtuemart/themes/YOURTEMPLATE/templates/browse/includes/browse_orderbyfields.tpl.php
Перед
Код:
</select>
Додаємо:
Код:
<option value="product_in_stock" <?php echo $orderby=="product_in_stock" ? "selected="selected"" : "";?>>
        <?php echo $VM_LANG->_('PHPSHOP_PRODUCT_FORM_IN_STOCK') ?></option>
Це дає нам додаткову опцію для вибору на сторінці категорії. Але сама її наявність не дає ще магазину зрозуміти, що від нього вимагається.

5. У файлі /components/com_virtuemart/themes/YOURTEMPLATE/user_class/shop_browse_queries.php
Міняємо:
Код:
switch( $orderby ) {
    case 'product_list':
        $orderbyField = '`#__{vm}_product_category_xref`.`product_list`'; break;
    case 'product_name':
        $orderbyField = '`#__{vm}_product`.`product_name`'; break;
    case 'product_price':
        $orderbyField = '`#__{vm}_product_price`.`product_price`'; break;
    case 'product_sku':
        $orderbyField = '`#__{vm}_product`.`product_sku`'; break;
    case 'product_cdate':
        $orderbyField = '`#__{vm}_product`.`cdate`'; break;
    default:
        $orderbyField = '`#__{vm}_product`.`product_name`'; break;
}
На
Код:
switch( $orderby ) {
    case 'product_in_stock':
        $orderbyField = '`#__{vm}_product`.`product_in_stock`'; break;
    case 'product_list':
        $orderbyField = '`#__{vm}_product_category_xref`.`product_list`'; break;
    case 'product_name':
        $orderbyField = '`#__{vm}_product`.`product_name`'; break;
    case 'product_price':
        $orderbyField = '`#__{vm}_product_price`.`product_price`'; break;
    case 'product_sku':
        $orderbyField = '`#__{vm}_product`.`product_sku`'; break;
    case 'product_cdate':
        $orderbyField = '`#__{vm}_product`.`cdate`'; break;
    default:
        $orderbyField = '`#__{vm}_product`.`product_name`'; break;
}

Все.

http://www.joomla.org.ua/porady/53-virtu...ajavnistju