Не было времени. Доделывал заказ. Вот теперь делюсь )
Значит именно потому что не было времени, делал такой костыль. Сделан он не совсем правильно, но работает, а для меня это было самое главное.
И так 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