Сортировка товаров в категории по наличию на складе

Тема в разделе "VirtueMart", создана пользователем bmwenium, 06.10.2010.

  1. Offline

    bmwenium Недавно здесь

    Регистрация:
    10.11.2009
    Сообщения:
    3
    Симпатии:
    1
    Пол:
    Мужской
    Собственно вопрос - как сделать сортировку товара в категории по наличию на складе - сначала сортируются товары в наличии на складе, потом выводятся товары, которые могут быть привезены под заказ или просто на данный момент их нет в наличии.
    Для примера http://www.alienbike.ru/index.php?categoryID=76
    Хотелось чтобы подобным же образом выводились товары.
    Спасибо всем за ответы!
     
  2.  
  3. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 206
    Симпатии:
    334
    Пол:
    Мужской
    можно переписать запрос к БД с сортировкой по нескольким полям
    оставить те которые там были (в сортировке) и добавить поле products_in_stok из тфблицы _products

    ну уж а где это делать поищи
     
  4. Offline

    bmwenium Недавно здесь

    Регистрация:
    10.11.2009
    Сообщения:
    3
    Симпатии:
    1
    Пол:
    Мужской
    Решение проблемы следующее (найдено в инете и чуть чуть подправлено под меня):

    File:
    administratorcomponentscom_virtuemarthtmladmin.show_cfg.php

    Find
    Код (CODE):
    1. <tr>
    2. <td class="labelcell"><?php echo $VM_LANG->_('VM_BROWSE_ORDERBY_DEFAULT_FIELD_LBL') ?></td>
    3. <td>
    4. <select class="inputbox" name="conf_VM_BROWSE_ORDERBY_FIELD">
    5. <option value="product_name" <?php if (@VM_BROWSE_ORDERBY_FIELD == 'product_name') echo "selected="selected""; ?>><?php echo $VM_LANG->_('PHPSHOP_PRODUCT_NAME_TITLE') ?></option>
    6. <option value="product_price" <?php if (@VM_BROWSE_ORDERBY_FIELD == 'product_price') echo "selected="selected""; ?>><?php echo $VM_LANG->_('PHPSHOP_PRODUCT_PRICE_TITLE') ?></option>
    7. <option value="product_sku" <?php if (@VM_BROWSE_ORDERBY_FIELD == 'product_sku') echo "selected="selected""; ?>><?php echo $VM_LANG->_('PHPSHOP_CART_SKU') ?></option>
    8. <option value="product_cdate" <?php if (@VM_BROWSE_ORDERBY_FIELD == 'product_cdate') echo "selected="selected""; ?>><?php echo $VM_LANG->_('PHPSHOP_LATEST') ?></option>
    9. </select>
    10. </td>
    11. <td><?php echo vmToolTip( $VM_LANG->_('VM_BROWSE_ORDERBY_DEFAULT_FIELD_LBL_TIP') ) ?></td>
    12. </tr>


    And add new option to input, type select:

    Код (CODE):
    1. <option value="product_list" <?php if (@VM_BROWSE_ORDERBY_FIELD == 'product_list') echo "selected="selected""; ?>><?php echo $VM_LANG->_('PHPSHOP_PRODUCT_ORDER_DEFAULT_MODIFIED') ?></option>


    Find:

    Код (CODE):
    1. <tr>
    2. <td class="labelcell"><?php echo $VM_LANG->_('VM_BROWSE_ORDERBY_FIELDS_LBL') ?></td>
    3. <td>
    4. <input name="conf_VM_BROWSE_ORDERBY_FIELDS[]&quot; type="checkbox" value="product_name" <?php if (in_array( 'product_name', $VM_BROWSE_ORDERBY_FIELDS )) echo "checked="checked""; ?> id="conf_VM_BROWSE_ORDERBY_FIELDS1" />
    5. <label for="conf_VM_BROWSE_ORDERBY_FIELDS1"><?php echo $VM_LANG->_('PHPSHOP_PRODUCT_NAME_TITLE') ?></label><br />
    6.  
    7. <input name="conf_VM_BROWSE_ORDERBY_FIELDS[]&quot; type="checkbox" value="product_price" <?php if (in_array( 'product_price', $VM_BROWSE_ORDERBY_FIELDS )) echo "checked="checked""; ?> id="conf_VM_BROWSE_ORDERBY_FIELDS2" />
    8. <label for="conf_VM_BROWSE_ORDERBY_FIELDS2"><?php echo $VM_LANG->_('PHPSHOP_PRODUCT_PRICE_TITLE') ?></label><br />
    9.  
    10. <input name="conf_VM_BROWSE_ORDERBY_FIELDS[]&quot; type="checkbox" value="product_cdate" <?php if (in_array( 'product_cdate', $VM_BROWSE_ORDERBY_FIELDS )) echo "checked="checked""; ?> id="conf_VM_BROWSE_ORDERBY_FIELDS3" />
    11. <label for="conf_VM_BROWSE_ORDERBY_FIELDS3"><?php echo $VM_LANG->_('PHPSHOP_LATEST') ?></label><br />
    12.  
    13. <input name="conf_VM_BROWSE_ORDERBY_FIELDS[]&quot; type="checkbox" value="product_sku" <?php if (in_array( 'product_sku', $VM_BROWSE_ORDERBY_FIELDS )) echo "checked="checked""; ?> id="conf_VM_BROWSE_ORDERBY_FIELDS4" />
    14. <label for="conf_VM_BROWSE_ORDERBY_FIELDS4"><?php echo $VM_LANG->_('PHPSHOP_CART_SKU') ?></label>
    15. </td>
    16. <td><?php echo vmToolTip( $VM_LANG->_('VM_BROWSE_ORDERBY_FIELDS_LBL_TIP') ) ?></td>
    17. </tr>


    And add new checkbox

    Код (CODE):
    1. <input name="conf_VM_BROWSE_ORDERBY_FIELDS[]&quot; type="checkbox" value="product_list" <?php if (in_array( 'product_list', $VM_BROWSE_ORDERBY_FIELDS )) echo "checked="checked""; ?> id="conf_VM_BROWSE_ORDERBY_FIELDS5" />
    2. <label for="conf_VM_BROWSE_ORDERBY_FIELDS5"><?php echo $VM_LANG->_('PHPSHOP_PRODUCT_ORDER_DEFAULT_MODIFIED') ?></label>



    File:
    administratorcomponentscom_virtuemarthtmlshop_browse_queries.php

    Find:

    Код (CODE):
    1. switch( $orderby ) {
    2. case 'product_name':
    3. $orderbyField = '`#__{vm}_product`.`product_name`'; break;
    4. case 'product_price':
    5. $orderbyField = '`#__{vm}_product_price`.`product_price`'; break;
    6. case 'product_sku':
    7. $orderbyField = '`#__{vm}_product`.`product_sku`'; break;
    8. case 'product_cdate':
    9. $orderbyField = '`#__{vm}_product`.`cdate`'; break;
    10. default:
    11. $orderbyField = '`#__{vm}_product`.`product_name`'; break;
    12. }



    And add new case:


    Код (CODE):
    1. case 'product_list':
    2.         $orderbyField = '`#__{vm}_product`.`product_in_stock`';
    3.         $DescOrderBy = 'DESC';
    4.         break;
    5. }



    File:
    componentscom_virtuemartthemesdefaulttemplatesbrowseincludesbrowse_orderbyfields.tpl.php

    Find:

    Код (CODE):
    1. // SORT BY PRODUCT NAME
    2. if( in_array( 'product_name', $VM_BROWSE_ORDERBY_FIELDS)) { ?>
    3. <option value="product_name" <?php echo $orderby=="product_name" ? "selected="selected"" : "";?>>
    4. <?php echo $VM_LANG->_('PHPSHOP_PRODUCT_NAME_TITLE') ?></option>
    5. <?php
    6. }


    And add before it or wherever you want - it is up to you which option will be shown in which order "in sort by list"


    Код (CODE):
    1. // SORT BY MY OWN ORDER - MOJA ZMIANA
    2. if( in_array( 'product_list', $VM_BROWSE_ORDERBY_FIELDS)) { ?>
    3. <option value="product_list" <?php echo $orderby=="product_list" ? "selected="selected"" : "";?>>
    4. <?php echo $VM_LANG->_('PHPSHOP_PRODUCT_ORDER_DEFAULT_MODIFIED_LBL') ?></option>
    5. <?php
    6. }



    Last thing is to add to your language 2 new variables:

    File:
    administratorcomponentscom_virtuemartlanguagescommonyourlanguage.php


    Код (CODE):
    1. 'PHPSHOP_PRODUCT_ORDER_DEFAULT_MODIFIED' => 'Own sort order',
    2. 'PHPSHOP_PRODUCT_ORDER_DEFAULT_MODIFIED_LBL' => 'Default sorting',


    Of course you can name it as you want

    Правда, таким образом реализована только сортировка, без разделения:
    http://service-multi.ru/katalog/velokomponenti/tsepi
     
    Последнее редактирование: 22.01.2011
    Asylum нравится это.
  5. Offline

    dimongalant Недавно здесь

    Регистрация:
    19.07.2011
    Сообщения:
    12
    Симпатии:
    1
    Пол:
    Мужской
    Всё работает , только вот есть несколько ошибок с ковычками, Лучше вставляйте эти файлы через ДРИМВИВЕР, сразу увидите эти 2 ошибки !!!!!!! Через БЛОКНОТ будет очень сложно.

    Плюс в файле administratorcomponentscom_virtuemarthtmlshop_brow se_queries.php нужно будет сначало удалить уже существующую строчку , после вот этого - case 'product_list':

    а то получится 2 переменные с одним именем :D

    Я разобрался, у меня стаж в создании сайтов 2 месяца :D
     
  6. Offline

    Валерьяна Недавно здесь

    Регистрация:
    07.02.2014
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Женский
    Я так понял это для первого виртуемарта. А для виртуемарта 2.0.20 решения проблемы с сортировкой по наличию товара нет?
     
  7. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 206
    Симпатии:
    334
    Пол:
    Мужской
    почему?
    смысл работы такой же, только искать надо в других файлах, т.к. версия то всё же новая!!!
    в VM лучше разбирается shurikkan
     
  8. Offline

    Валерьяна Недавно здесь

    Регистрация:
    07.02.2014
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Женский
    Я знаю что копать нужно в файле /administrator/components/com_virtuemart/models/product.php вроде 414 строка, там где кейсы. Но что бы не меняла, ни чего не помогает. Сортировка в вирте как жила своей жизнью, так и продолжает.
     

Поделиться этой страницей

Загрузка...