Перейти к содержимому


Фотография
- - - - -

Связанные поля для фильтра


  • Закрытая тема Тема закрыта
Сообщений в теме: 17

#11 usersJbzoo

usersJbzoo

Отправлено 12 October 2014 - 16:01

kostyk сказал(а) 12 Окт 2014 - 12:59:

Спасибо друг! Но я уже сделал костыль из JBZoo Search List, который выводит мне и доступные позиции не виде списка ссылок, а в виде селекта. Ну и при помощи яваскрипта, буду этот селект подставлять в нужное мне место ф форме поиска. Если будет нужно кому отпишу как я это делал, но нужно помнить что это костыль, и так делать не комильфо ) 

Покажешь пример или опиши, не совсем понятно как работает костыль.

Ну и буду рад если поделишься))), сейчас именно над этим ломаю голову. 


Сообщение отредактировал Chester1988: 12 October 2014 - 16:03

  • 0

#12 Roman

Roman

Отправлено 13 October 2014 - 12:54

Chester1988, можно подробнее как это оформить? То, что на официальном видео я выполнил. Меня интересует как скрывать вложенные подкатегории до выбора родительской категории.


  • 0

#13 Na_uM

Na_uM

Отправлено 13 October 2014 - 13:09

Roman сказал(а) 13 Окт 2014 - 11:54:

Chester1988, можно подробнее как это оформить? То, что на официальном видео я выполнил. Меня интересует как скрывать вложенные подкатегории до выбора родительской категории.

вот как вариант решение с форума


Сообщение отредактировал Na_uM: 13 October 2014 - 13:10

  • 1

#14 usersJbzoo

usersJbzoo

Отправлено 13 October 2014 - 13:37

Roman сказал(а) 13 Окт 2014 - 11:54:

Chester1988, можно подробнее как это оформить? То, что на официальном видео я выполнил. Меня интересует как скрывать вложенные подкатегории до выбора родительской категории.

Жду когда kostyk поделится этим решением, пока что еще не получилось сделать подобное:

Chester1988 сказал(а) 12 Окт 2014 - 15:01:

kostyk сказал(а) 12 Окт 2014 - 19:59: Спасибо друг! Но я уже сделал костыль из JBZoo Search List, который выводит мне и доступные позиции не виде списка ссылок, а в виде селекта. Ну и при помощи яваскрипта, буду этот селект подставлять в нужное мне место ф форме поиска. Если будет нужно кому отпишу как я это делал, но нужно помнить что это костыль, и так делать не комильфо ) 
 
  • 0

#15 kostyk

kostyk

Отправлено 13 October 2014 - 14:14

Не было времени. Доделывал заказ. Вот теперь делюсь )
Значит именно потому что не было времени, делал такой костыль. Сделан он не совсем правильно, но работает, а для меня это было самое главное.
 
И так 1. Заходим в наш модуль поиска «JBZoo search» и включаем там Авто-отправка формы! Без этого костыль не работает.[/size]
 
2. Редактируем фаил модуля JBZoo Search List.
находится он по адресу: /modules/mod_jbzoo_props/renderer/filterprops/block.php

  1. <?php
  2. /**
  3.  * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
  4.  *
  5.  * @package     jbzoo
  6.  * @version     2.x Pro
  7.  * @author      JBZoo App http://jbzoo.com
  8.  * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
  9.  * @license     http://jbzoo.com/license-pro.php JBZoo Licence
  10.  * @coder       Denis Smetannikov <denis@jbzoo.com>
  11.  */
  12.  
  13.  
  14. // no direct access
  15. defined('_JEXEC') or die('Restricted access');
  16.  
  17.  
  18.  
  19.  
  20. if (!empty($elementHTML)) {
  21.  
  22.  
  23.     // create label
  24.     $label = '';
  25.     if (isset($params['showlabel']) && $params['showlabel']) {
  26.         $label .= '<div class="label">';
  27.         $label .= ($params['altlabel']) ? $params['altlabel'] : $element->getConfig()->get('name');
  28.         $label .= '</div>';
  29.     }
  30.  
  31.  
  32.     // create class attribute
  33.     $classes = array_filter(array(
  34.         'props-element',
  35.         ($params['first']) ? 'first' : '',
  36.         ($params['last']) ? 'last' : '',
  37.     ));
  38.  
  39.  
  40. $zam = 0;
  41. $html = str_replace ( "</span>" , "", strip_tags($elementHTML, '<span>'), $count);
  42. $html = str_replace ( "<span>" , "/", $html, $count);
  43. $html = explode('/', $html);
  44. $str = '<div id="goselect">';
  45. $str .= '<select id="filterEl_dc698d2f-f51b-49ea-bb2c-e18f433f1b20562810" name="e[dc698d2f-f51b-49ea-bb2c-e18f433f1b20]">';
  46.  
  47.  
  48.  
  49. /* ВАОЖНО!!!! <select> этот забираем из того селекта на странице сайта, поля в котором собираемся менять. Главное зять у него атрибуты id и name */
  50.  
  51.  
  52. if(count($html) == 2){
  53. foreach($html as $K=>$V){
  54. if(!empty($V)){
  55. $str .= '<option value="'.trim($V).'" selected="selected">'.trim($V).'</option>';
  56. }else{
  57. $str .= '<option value=""> - Все - </option>';
  58. }
  59. }
  60. }else{
  61. foreach($html as $K=>$V){
  62. if(!empty($V)){
  63. $str .= '<option value="'.trim($V).'">'.trim($V).'</option>';
  64. }else{
  65. $str .= '<option value="" selected="selected"> - Все - </option>';
  66. }
  67. }
  68. }
  69. $str .= '</select>';
  70. $str .= '</div>';
  71.     ?>
  72.     <div class="<?php echo implode(' ', $classes); ?>">
  73.         <?php echo $label . '<div class="field">' . $str . '</div>'; ?>
  74.         <div class="clear clr"></div>
  75.     </div>
  76. <?php
  77. }
  78. ?>

Не забывает изменить селект как указанно в комментарии. 
 
3. Редактируем фаил шаблона нашего поиска.
адрес файла:
/avto.iw.ru/public_html/modules/mod_jbzoo_search/renderer/item/2colomns.php
 
Я взял шаблон 2colomns.php, просто потому что тестировал на нем. Вы можете выбрать любой понравившийся вам шаблон.
И в этом шаблоне самое главное это позицию вывода обрамить тегом <div id="model">
В эту позицию необходимо вывести только одно поле, которое и планируете заменять. Да и я рассказываю про тип поля "Всплывающий список".
 
Не забываем эту позицию добавить в фаил positions.xml,который лежит в этой же папке, для тега 2colomns, если ее там нет.
 
Мои файлы 2colomns.php
 
 

  1. <?php
  2. /**
  3.  * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
  4.  *
  5.  * @package     jbzoo
  6.  * @version     2.x Pro
  7.  * @author      JBZoo App http://jbzoo.com
  8.  * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
  9.  * @license     http://jbzoo.com/license-pro.php JBZoo Licence
  10.  * @coder       Denis Smetannikov <denis@jbzoo.com>
  11.  */
  12.  
  13. // no direct access
  14. defined('_JEXEC') or die('Restricted access');
  15. ?>
  16. <div class="filtr_left_block">
  17.         <p>
  18.         <label> Марка </label>
  19.         <?php echo $this->renderPosition('marka', array('style' => 'filter.block')); ?>
  20. </p>
  21.         <p>    
  22.         <label> Модель </label>    
  23. <div id="model">
  24. <?php echo $this->renderPosition('model', array('style' => 'filter.block')); ?>
  25. </div>
  26.         </p>
  27.         <p>    
  28.         <label> Тип кузова </label>  
  29. <?php echo $this->renderPosition('kuzov', array('style' => 'filter.block')); ?>
  30. </p>
  31.         </div><!-- /filtr_left_block -->
  32.         <div class="filtr_right_block">
  33.         <p>
  34.         <label> Тип КПП </label>
  35. <?php echo $this->renderPosition('kpp', array('style' => 'filter.block')); ?>
  36.          </p>
  37.         <p>    
  38.         <label> Привод </label>
  39. <?php echo $this->renderPosition('privod', array('style' => 'filter.block')); ?>
  40. </p>
  41.         <p>    
  42.         <label> Вид топлива </label> 
  43. <?php echo $this->renderPosition('toplivo', array('style' => 'filter.block')); ?>
  44.         </p>
  45.         </div><!-- /filtr_right_block -->
  46.         <div class="clr"></div>
  47.         <div class="price">
  48.         <div class="polzunok">
  49.         <div class="summ_input_block">
  50. <?php echo $this->renderPosition('cena', array('style' => 'filter.block')); ?>
  51.         </div><!-- /summ_input_block -->
  52.         </div><!-- /polzunok -->
  53.         </div><!-- /price -->  <!-- /price --> 
  54.     
  55.  

positions.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!--
  3.     JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
  4.  
  5.     @package     jbzoo
  6.     @version     2.x Pro
  7.     @author      JBZoo App http://jbzoo.com
  8.     @copyright   Copyright (C) JBZoo.com,  All rights reserved.
  9.     @license     http://jbzoo.com/license-pro.php JBZoo Licence
  10.     @coder       Denis Smetannikov <denis@jbzoo.com>
  11. -->
  12. <renderer>
  13.     <positions layout="default">
  14. <position name="fields">Fields</position>
  15.     </positions>
  16.  
  17.     <positions layout="inline">
  18.         <position name="fields">Fields</position>
  19.     </positions>
  20.  
  21.     <positions layout="2colomns">
  22.         <position name="marka">marka</position>
  23. <position name="model">model</position>
  24. <position name="kuzov">kuzov</position>
  25. <position name="kpp">kpp</position>
  26. <position name="privod">privod</position>
  27. <position name="toplivo">toplivo</position>
  28. <position name="cena">cena</position>
  29.     </positions>
  30.  
  31.     <positions layout="table">
  32.         <position name="cell_1_1">Table cell #1:1</position>
  33.         <position name="cell_1_2">Table cell #1:2</position>
  34.         <position name="cell_1_3">Table cell #1:3</position>
  35.         <position name="cell_1_4">Table cell #1:4</position>
  36.         <position name="cell_2_1">Table cell #2:1</position>
  37.         <position name="cell_2_2">Table cell #2:2</position>
  38.         <position name="cell_2_3">Table cell #2:3</position>
  39.         <position name="cell_2_4">Table cell #2:4</position>
  40.     </positions>
  41.  
  42.     <positions layout="accordion">
  43.         <position name="tab-1">Tab #1</position>
  44.         <position name="tab-2">Tab #2</position>
  45.         <position name="tab-3">Tab #3</position>
  46.         <position name="tab-4">Tab #4</position>
  47.         <position name="tab-5">Tab #5</position>
  48.         <position name="tab-6">Tab #6</position>
  49.         <position name="tab-7">Tab #7</position>
  50.         <position name="tab-8">Tab #8</position>
  51.         <position name="tab-9">Tab #9</position>
  52.         <position name="tab-10">Tab #10</position>
  53.     </positions>
  54.  
  55. </renderer>

Все, теперь публикуем эти модули в одной позиции шаблона вашего сайта, первым лучше публиковать модуль поиска.

Ну и конечно в модуле JBZoo Search List нужно при этом публиковать только 1 поле, то по которому работает поиск. 
 
И сразу после этих модулей в шаблоне вашего сайта вставляем яваскрипт.

  1. <script type="text/javascript">
  2. var goselect = document.getElementById("goselect");
  3. var model = document.getElementById("model");
  4. model.innerHTML = goselect.innerHTML;
  5. goselect.innerHTML = "";
  6. </script>

На этом все, будут вопросы пишите.


Сообщение отредактировал Sliapy: 13 October 2014 - 14:57

  • 2

#16 usersJbzoo

usersJbzoo

Отправлено 13 October 2014 - 14:57

Спасибо kostyk большое!

Если я правильно понял, получается при выборе marka остаются только доступные для выбора model? А как то можно сделать что бы после выбора модели появлялись только доступные год, потом кузов и т.д (зависимые от ранее сделанного выбора)?


  • 0

#17 Sliapy

Sliapy

Отправлено 13 October 2014 - 14:58

Подправил немного сообщение. В будущем используйте, пожалуйста, кнопку "Код" редактора.

 

И, если не сложно, приложите измененные файлы - иногда при копировании кода с форума могут возникнуть проблемы из-за лишних пробелов и у людей будут возникать лишние вопросы.


  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#18 kostyk

kostyk

Отправлено 13 October 2014 - 16:16

Chester1988 сказал(а) 13 Окт 2014 - 13:57:

Спасибо kostyk большое!

Если я правильно понял, получается при выборе marka остаются только доступные для выбора model? А как то можно сделать что бы после выбора модели появлялись только доступные год, потом кузов и т.д (зависимые от ранее сделанного выбора)?

Да можно, нужно будет повторить эту процедуру несколько раз, делать каждый раз новый шаблон для модуля JBZoo Search List. Не забывая при этом заменять id у дивов и в яваскрипте. Но я бы таким путем не пошел, тут проще полностью переписать модуль JBZoo Search List, сделать его для работы с селектом и яваскриптами переводить пользователя на нужную страницу, когда он сделает выбор в селекте.

 

Но и вообще дорогие разработчики!!! Переписать модуль JBZoo Search List. так чтоб вместо ссылок у него были селекты работы на несколько часов! Может сделаете? ) Ведь нужная штука! В настройках чтоб выбор был селектом выводить этот модуль или списком ссылок.

 

Спасибо за правки! В будущем обязательно буду пользоваться этой кнопкой, если найду )

Прикрепляю файлы.

Прикрепленные файлы

  • Прикрепленный файл  2colomns.php   1.97К   62 Количество загрузок:
  • Прикрепленный файл  positions.xml   2.06К   51 Количество загрузок:
  • Прикрепленный файл  block.php   2.19К   47 Количество загрузок:

  • 2




Click to return to top of page in style!