В стандартному 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-virtuemart/273-virtuemart-114-sortuvannja-tovariv-za-najavnistju