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


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

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


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

#11 usersJbzoo

usersJbzoo

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

Спасибо друг! Но я уже сделал костыль из 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

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

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


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

  • 1

#14 usersJbzoo

usersJbzoo

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

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

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

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

<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Denis Smetannikov <denis@jbzoo.com>
 */


// no direct access
defined('_JEXEC') or die('Restricted access');




if (!empty($elementHTML)) {


    // create label
    $label = '';
    if (isset($params['showlabel']) && $params['showlabel']) {
        $label .= '<div class="label">';
        $label .= ($params['altlabel']) ? $params['altlabel'] : $element->getConfig()->get('name');
        $label .= '</div>';
    }


    // create class attribute
    $classes = array_filter(array(
        'props-element',
        ($params['first']) ? 'first' : '',
        ($params['last']) ? 'last' : '',
    ));


$zam = 0;
$html = str_replace ( "</span>" , "", strip_tags($elementHTML, '<span>'), $count);
$html = str_replace ( "<span>" , "/", $html, $count);
$html = explode('/', $html);
$str = '<div id="goselect">';
$str .= '<select id="filterEl_dc698d2f-f51b-49ea-bb2c-e18f433f1b20562810" name="e[dc698d2f-f51b-49ea-bb2c-e18f433f1b20]">';



/* ВАОЖНО!!!! <select> этот забираем из того селекта на странице сайта, поля в котором собираемся менять. Главное зять у него атрибуты id и name */


if(count($html) == 2){
foreach($html as $K=>$V){
if(!empty($V)){
$str .= '<option value="'.trim($V).'" selected="selected">'.trim($V).'</option>';
}else{
$str .= '<option value=""> - Все - </option>';
}
}
}else{
foreach($html as $K=>$V){
if(!empty($V)){
$str .= '<option value="'.trim($V).'">'.trim($V).'</option>';
}else{
$str .= '<option value="" selected="selected"> - Все - </option>';
}
}
}
$str .= '</select>';
$str .= '</div>';
    ?>
    <div class="<?php echo implode(' ', $classes); ?>">
        <?php echo $label . '<div class="field">' . $str . '</div>'; ?>
        <div class="clear clr"></div>
    </div>
<?php
}
?>

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

<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Denis Smetannikov <denis@jbzoo.com>
 */
 
// no direct access
defined('_JEXEC') or die('Restricted access');
?>
<div class="filtr_left_block">
        <p>
        <label> Марка </label>
        <?php echo $this->renderPosition('marka', array('style' => 'filter.block')); ?>
</p>
        <p>    
        <label> Модель </label>    
<div id="model">
<?php echo $this->renderPosition('model', array('style' => 'filter.block')); ?>
</div>
        </p>
        <p>    
        <label> Тип кузова </label>  
<?php echo $this->renderPosition('kuzov', array('style' => 'filter.block')); ?>
</p>
        </div><!-- /filtr_left_block -->
        <div class="filtr_right_block">
        <p>
        <label> Тип КПП </label>
<?php echo $this->renderPosition('kpp', array('style' => 'filter.block')); ?>
         </p>
        <p>    
        <label> Привод </label>
<?php echo $this->renderPosition('privod', array('style' => 'filter.block')); ?>
</p>
        <p>    
        <label> Вид топлива </label> 
<?php echo $this->renderPosition('toplivo', array('style' => 'filter.block')); ?>
        </p>
        </div><!-- /filtr_right_block -->
        <div class="clr"></div>
        <div class="price">
        <div class="polzunok">
        <div class="summ_input_block">
<?php echo $this->renderPosition('cena', array('style' => 'filter.block')); ?>
        </div><!-- /summ_input_block -->
        </div><!-- /polzunok -->
        </div><!-- /price -->  <!-- /price --> 
    
 

positions.xml

<?xml version="1.0" encoding="utf-8"?>
<!--
    JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 
    @package     jbzoo
    @version     2.x Pro
    @author      JBZoo App http://jbzoo.com
    @copyright   Copyright (C) JBZoo.com,  All rights reserved.
    @license     http://jbzoo.com/license-pro.php JBZoo Licence
    @coder       Denis Smetannikov <denis@jbzoo.com>
-->
<renderer>
    <positions layout="default">
<position name="fields">Fields</position>
    </positions>
 
    <positions layout="inline">
        <position name="fields">Fields</position>
    </positions>
 
    <positions layout="2colomns">
        <position name="marka">marka</position>
<position name="model">model</position>
<position name="kuzov">kuzov</position>
<position name="kpp">kpp</position>
<position name="privod">privod</position>
<position name="toplivo">toplivo</position>
<position name="cena">cena</position>
    </positions>
 
    <positions layout="table">
        <position name="cell_1_1">Table cell #1:1</position>
        <position name="cell_1_2">Table cell #1:2</position>
        <position name="cell_1_3">Table cell #1:3</position>
        <position name="cell_1_4">Table cell #1:4</position>
        <position name="cell_2_1">Table cell #2:1</position>
        <position name="cell_2_2">Table cell #2:2</position>
        <position name="cell_2_3">Table cell #2:3</position>
        <position name="cell_2_4">Table cell #2:4</position>
    </positions>
 
    <positions layout="accordion">
        <position name="tab-1">Tab #1</position>
        <position name="tab-2">Tab #2</position>
        <position name="tab-3">Tab #3</position>
        <position name="tab-4">Tab #4</position>
        <position name="tab-5">Tab #5</position>
        <position name="tab-6">Tab #6</position>
        <position name="tab-7">Tab #7</position>
        <position name="tab-8">Tab #8</position>
        <position name="tab-9">Tab #9</position>
        <position name="tab-10">Tab #10</position>
    </positions>
 
</renderer>

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

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

<script type="text/javascript">
var goselect = document.getElementById("goselect");
var model = document.getElementById("model");
model.innerHTML = goselect.innerHTML;
goselect.innerHTML = "";
</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

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

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

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

 

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

 

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

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

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

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

  • 2




Click to return to top of page in style!