Как заставить стандартный модуль фильтра Joomshopping (Module Filter) на странице товара и на главно

Тема в разделе "JoomShopping", создана пользователем Serguk1307, 15.02.2014.

  1. Offline

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

    Регистрация:
    18.01.2014
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
    сайт koleca.in.ua, на магазине фильтр не работает(joomfilter), а работает только на категории...помогите сделать что бы фильтр работал на главной и в товаре...уже не знаю, все перепробывал/
     
  2.  
  3. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 311
    Симпатии:
    375
    Пол:
    Мужской
    Re: фильтр

    Чем помочь? Полностью переписать фильтр? По-другому не получится, т.к. фильтр запилен под работу ТОЛЬКО на странице категории или производителя.
    К сожалению, все более-менее приемлемые решения для Joomshopping - платные, причем стоят немалых денег. Тот же расширенный фильтр - от 30 евро (Filter product extended) до 70$ (Универсальный AJAX фильтр).

    Но как минимум можно в файле modules\mod_jshopping_filters\mod_jshopping_filters.php ~17 строку
    Код (PHP):
    1. $display_fileters = 0;

    заменить на
    Код (PHP):
    1. $display_fileters = 1;

    Тогда хоть что-то выведет.
     
  4. Offline

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

    Регистрация:
    18.01.2014
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
    спасибо за ответ! уверенности не предал...
     
  5. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 311
    Симпатии:
    375
    Пол:
    Мужской
    Уверенности в чем? Что можно сделать интернет-магазин за 3 копейки? :)
    Можно, только он будет выглядеть как демо-магазин на офф-сайте.
     
  6. Offline

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

    Регистрация:
    18.01.2014
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
    при зарплате 120 $ думаю я себе и могу позволить что 3 коп
     
  7. Offline

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

    Регистрация:
    18.01.2014
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
    Получилось вывести фильтр на главную и заработал!! а возможно сделать на странице товара?
     
  8. CB9T
    Offline

    CB9T Преподаватель по J! Команда форума ⇒ Профи ⇐

    Регистрация:
    21.05.2010
    Сообщения:
    2 604
    Симпатии:
    322
    Пол:
    Мужской
    Повторюсь, поделились бы с сообществом, как смогли вывести на главную. Может по накатанной и Вам подскажут.

    P.S. Люди заходя на форум ищут решение, а сообщения типо: "Я смог сделать, всем пока", просто никак не помогают др. людям попавшим в эту же ситуацию. :stop:
     
  9. Offline

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

    Регистрация:
    18.01.2014
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
    Код (PHP):
    1. <script type="text/javascript">
    2. function modFilterclearPriceFilter(){
    3.     jQuery("#fprice_from").val("");
    4.     jQuery("#fprice_to").val("");
    5.     document.jshop_filters.submit();
    6. }
    7. </script>
    8. <div class="jshop_filters">
    9. <form action="<?php print $_SERVER['REQUEST_URI'];?>" method="post" name="jshop_filters">
    10.  
    11.     <?php if (is_array($filter_manufactures) && count($filter_manufactures)) {?>
    12.     <input type="hidden" name="manufacturers[]" value="0" />
    13.     <span class="box_manufacrurer">
    14.         <?php print JText::_('MANUFACTURER').":"?><br/>
    15.         <?php foreach($filter_manufactures as $v){ ?>
    16.         <input type="checkbox" name="manufacturers[]" value="<?php print $v->id;?>" <?php if (in_array($v->id, $manufacturers)) print "checked";?> onclick="document.jshop_filters.submit();"> <?php print $v->name;?><br/>
    17.         <?php }?>
    18.     </span>
    19.     <br/>
    20.     <?php }?>
    21.    
    22.     <?php if (is_array($filter_categorys) && count($filter_categorys)) {?>
    23.     <input type="hidden" name="categorys[]" value="0" />
    24.     <span class="box_manufacrurer">
    25.         <?php print JText::_('CATEGORY').":"?><br/>
    26.         <?php foreach($filter_categorys as $v){ ?>
    27.         <input type="checkbox" name="categorys[]" value="<?php print $v->id;?>" <?php if (in_array($v->id, $categorys)) print "checked";?> onclick="document.jshop_filters.submit();"> <?php print $v->name;?><br/>
    28.         <?php }?>
    29.     </span>
    30.     <br/>
    31.     <?php }?>
    32.  
    33.  
    34.  <?php if (is_array($characteristic_displayfields) && count($characteristic_displayfields)){?>
    35.  
    36. <div class="accordion" id="accordion2">      
    37.         <?php
    38. $i = 0;
    39. foreach($characteristic_displayfields as $ch_id){
    40. $i = $i+1;
    41. ?>  
    42.             <?php if (is_array($characteristic_fieldvalues[$ch_id])){?>
    43. <div class="accordion-group">
    44.     <div class="accordion-heading">
    45.        <h5 style="margin-bottom: 0;"> <?php print $characteristic_fields[$ch_id]->name;?></5>
    46.     </div>    
    47.     <div id="collapse<?=$i?>" class="accordion-body collapse">  
    48.         <div class="accordion-inner">
    49. <select style="width: 100%;margin-bottom: 10px;" id="vendor" name="extra_fields[<?php print $ch_id?>][]">
    50. <option>Выбрать</option>
    51.                 <?php foreach($characteristic_fieldvalues[$ch_id] as $val_id=>$val_name){?>
    52.                     <option  value="<?php print $val_id;?>" <?php if (is_array($extra_fields_active[$ch_id]) && in_array($val_id, $extra_fields_active[$ch_id])) print "selected";?> /> <?php print $val_name;?></option>
    53.                 <?php }?>
    54. </select>    
    55.  
    56.         </div>
    57.     </div>
    58. </div>
    59.             <?php }?>
    60.         <?php }?>
    61.  
    62.     <?php } ?>
    63. </div>
    64.    
    65.     <?php if ($show_prices){?>
    66.     <span class="filter_price"><?php print JText::_('PRICE')?>:<br/>
    67.         <span class="box_price_from"><?php print JText::_('FROM')?> <input type = "text" class = "inputbox" name = "fprice_from" id="fprice_from" size="5" value="<?php if ($fprice_from>0) print $fprice_from?>" /></span>
    68.         <span class="box_price_to"><?php print JText::_('TO')?> <input type = "text" class = "inputbox" name = "fprice_to"  id="fprice_to" size="5" value="<?php if ($fprice_to>0) print $fprice_to?>" /></span>
    69.         <?php print $jshopConfig->currency_code?>
    70.     </span>    
    71. <div style="text-align: right; padding-top: 10px;">
    72.     <input type="submit" class="button" value="Применить<?php // print JText::_('GO')?>">    
    73. </div>
    74.     <span class="clear_filter"><a href="input"#" onclick="modFilterclearPriceFilter();return false;"><?php print JText::_('RESET FILTER')?></a></span>
    75.     <?php }?>
    76.    
    77. </form>
    78. </div>

    modules/mod_jshopping_filters/tmpl
     
  10. Offline

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

    Регистрация:
    18.01.2014
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
    осталось понять как заставить модуль работать в самом товаре
     
  11. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 311
    Симпатии:
    375
    Пол:
    Мужской
    Каким образом? У меня, например, этот фильтр НИГДЕ не выводит категории.

    Оффтопик (не в тему) - жми сюда!
     
  12. Offline

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

    Регистрация:
    18.01.2014
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
    Код (PHP):
    1. * @license      GNU/GPL
    2. */
    3.  
    4.     defined('_JEXEC') or die('Restricted access');
    5.     error_reporting(error_reporting() & ~E_NOTICE);
    6.    
    7.     if (!file_exists(JPATH_SITE.'/components/com_jshopping/jshopping.php')){
    8.  
    9.       JError::raiseError(500,"Please install component \"joomshopping\"");
    10.  
    11.     }
    12.    
    13.     $display_fileters = 0;
    14.   //  if (JRequest::getVar("controller")=="category" && JRequest::getInt("category_id")) $display_fileters = 1;
    15.  //   if (JRequest::getVar("controller")=="manufacturer" && JRequest::getInt("manufacturer_id")) $display_fileters = 1;
    16.   // if (!$display_fileters) return "";
    17.    
    18.     require_once (JPATH_SITE.'/components/com_jshopping/lib/factory.php');
    19.     require_once (JPATH_SITE.'/components/com_jshopping/lib/functions.php');
    20.     JSFactory::loadCssFiles();
    21.     JSFactory::loadLanguageFile();
    22.     $jshopConfig = JSFactory::getConfig();
    23.     $mainframe = JFactory::getApplication();
    24.  
    25.     $show_manufacturers = $params->get('show_manufacturers');
    26.     $show_categorys = $params->get('show_categorys');
    27.     $show_prices = $params->get('show_prices');
    28.     $show_characteristics = $params->get('show_characteristics');
    29.    
    30.     $category_id = JRequest::getInt('category_id');
    31.     $manufacturer_id = 1;//JRequest::getInt('manufacturer_id');
    32.      
    33.     $contextfilter = "";
    34.    // if (JRequest::getVar("controller")=="category"){
    35.         $contextfilter = "jshoping.list.front.product.cat.".$category_id;
    36.    // }
    37.   //  if (JRequest::getVar("controller")=="manufacturer"){
    38.         $contextfilter = "jshoping.list.front.product.manf.".$manufacturer_id;
    39.   //  }
    40.  
    41.    // if ($category_id && $show_manufacturers){
    42.         $category = JTable::getInstance('category', 'jshop');
    43.         $category->load($category_id);
    44.        
    45.         $manufacturers = $mainframe->getUserStateFromRequest( $contextfilter.'manufacturers', 'manufacturers', array());
    46.         $manufacturers = filterAllowValue($manufacturers, "int+");    
    47.        
    48.         $filter_manufactures = $category->getManufacturers();
    49.    // }
    50.  
    51.    // if ($manufacturer_id && $show_categorys){
    52.         $manufacturer = JTable::getInstance('manufacturer', 'jshop');        
    53.         $manufacturer->load($manufacturer_id);
    54.        
    55.         $categorys = $mainframe->getUserStateFromRequest( $contextfilter.'categorys', 'categorys', array());
    56.         $categorys = filterAllowValue($categorys, "int+");
    57.        
    58.         $filter_categorys = $manufacturer->getCategorys();
    59.   //  }
    60.    
    61.   //  if ($show_prices){
    62.         $fprice_from = $mainframe->getUserStateFromRequest( $contextfilter.'fprice_from', 'fprice_from');
    63.         $fprice_from = saveAsPrice($fprice_from);
    64.         $fprice_to = $mainframe->getUserStateFromRequest( $contextfilter.'fprice_to', 'fprice_to');
    65.         $fprice_to = saveAsPrice($fprice_to);
    66.   //  }
    67.   //  print_r($show_characteristics . $jshopConfig->admin_show_product_extra_field);
    68.   //  if ($show_characteristics && $jshopConfig->admin_show_product_extra_field){
    69.         $characteristic_fields = JSFactory::getAllProductExtraField();
    70.         $characteristic_fieldvalues = JSFactory::getAllProductExtraFieldValueDetail();
    71.         $characteristic_displayfields = JSFactory::getDisplayFilterExtraFieldForCategory($category_id);        
    72.         $extra_fields_active = $mainframe->getUserStateFromRequest($contextfilter.'extra_fields', 'extra_fields', array());
    73.         $extra_fields_active = filterAllowValue($extra_fields_active, "array_int_k_v+");
    74.        
    75.   //  }
    76.          
    77.     require(JModuleHelper::getLayoutPath('mod_jshopping_filters'));  
    78.      
    79. ?>

    /modules/mod_jshopping_filters
    Оффтопик (не в тему) - жми сюда!
     
  13. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 311
    Симпатии:
    375
    Пол:
    Мужской
    Мне непонятна логика этого фильтра. По-моему, его сделали для того, что "что-то было".
    Например, мне непонятны "взаимоисключающие" условия
    Код (PHP):
    1. if ($category_id && $show_manufacturers){

    и
    Код (PHP):
    1. if ($manufacturer_id && $show_categorys){


    Т.е. если выключено отображение производителей, то и список категорий не будет отображаться.
    А бездумное комментирование всех условий ни к чему хорошему не приведет.

    Оффтопик (не в тему) - жми сюда!
     
  14. Offline

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

    Регистрация:
    18.01.2014
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
    Ну так помогите правильно настроить фильтр! если у вас есть необходимые знания...
    Оффтопик (не в тему) - жми сюда!
     
  15. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 311
    Симпатии:
    375
    Пол:
    Мужской
    У меня нет таких знаний :(
    Я же говорю - не понимаю логики этого фильтра. А полностью переписывать мне не интересно.

    Но может найдутся другие...
     
  16. Offline

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

    Регистрация:
    18.01.2014
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
    ну особо активных, я не вижу...так помогите с фильтром, много народу его ищут... сделаете доброе дело...
     
  17. Offline

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

    Регистрация:
    18.01.2014
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
    НУ что никто не может или не хочет помочь???
     
  18. ganyak
    Offline

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

    Регистрация:
    23.08.2015
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Судя по коду php, должен выводить список производителей. Параметр в настройках Joomshopping включен, но список производителей не отображается.
     
  19. CB9T
    Offline

    CB9T Преподаватель по J! Команда форума ⇒ Профи ⇐

    Регистрация:
    21.05.2010
    Сообщения:
    2 604
    Симпатии:
    322
    Пол:
    Мужской
  20. director-rpd
    Offline

    director-rpd Недавно здесь

    Регистрация:
    03.03.2011
    Сообщения:
    12
    Симпатии:
    1
    Пол:
    Мужской
    Отличная тема, тем более актуальная до сих пор! Её апнуть - милое дело.
     
  21. ShiiRochi
    Offline

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

    Регистрация:
    13.02.2016
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Взгляните на следующие примеры из кода:
    if ($category_id && $show_manufacturers)
    if ($manufacturer_id && $show_categorys)
    if ($show_prices)
    if ($show_characteristics && $jshopConfig->admin_show_product_extra_field)

    Что в них общего?
    Это "$show_", когда мы включаем показ чего-то в настройках фильтра, переменные за это отвечающие приобретают значение 1, или же True, но что касается id категории и производителя, ИХ НЕТ, поскольку мы не перешли ни в какую-нибудь категорию, ни на страницу какого-либо производителя, следовательно, у нас нету идентификатора выбранной категории и производителя, поэтому эти переменные будут равны 0, а это даёт нам такое выражение 0 && 1, а это как известно даёт ложь, поэтому чтобы они начали выводится надо сделать эти выражения истинными, то есть вместо && поставить ||. Может это и самый банальный способ, но пока единственный, что я решил сделать.

    Пока остаётся проблема с экстра полями и производителями, они появляются когда вы уже на странице продуктов, то есть когда вы в определённой категории и там уже несколько продуктов, так что можно выбирать их с экстра полями, а производители вообще не выходят, но ещё стоит поработать с категориями и их выводом, то есть выводятся только нижние, но это уже думаю надо поработать с шаблонов, а не с контроллером
    В общем, начальный результат скинул на картинке, он работает на странице товаров, а не категорий
     

    Вложения:

    Последнее редактирование: 14.02.2016

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

Загрузка...