YUR@ 3 Жалоба Опубликовано: July 25, 2014 1-2. Для вставки обычного чекбокса нет надобности наследовать целый Kvartira_Search_FormЕсли уже потянули, то делаем daily_rent_id - системное имя чекбокса отвечающего за признак Посуточной<?phpclass Local_Kvartira_Search_Form extends Kvartira_Search_Form {function main () {parent::main();$data_model = new Data_Model();$kvartira_model = $data_model->get_kvartira_model(true)$kvartira_model['data'] = $data_model->init_model_data_from_request($kvartira_model['data']);$form_generator = new Form_Generator();$this->template->assert('daily_rent_list', $form_generator->get_checkbox($kvartira_model['data']['daily_rent_id']));}}Заменив ВСЁ в local_kvartira_search.php на данный код , получил чего-то белый экран! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: July 25, 2014 Заменив ВСЁ в local_kvartira_search.php на данный код , получил чего-то белый экран! после $kvartira_model = $data_model->get_kvartira_model(true) точку с зяпятой поставьте 1 YUR@ reacted to this Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: July 25, 2014 ...думал ещё вводить другие поля... потренеровался на Посуточной Аренде)) Тогда лучше оставить. Главное поменять как я показал, что бі ваши действия віполнялись после основных движковых операций - так как по сути вы дополняете функционал. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: July 25, 2014 Если нет надобности наследовать целый Kvartira_Search_Form, То просто в шаблонеПосуточная аренда <input type="checkbox" name="daily_rent"{if isset($smarty.get.daily_rent)} checked="checked"{/if} value="1" />или daily_rent заменить на daily_rent_id, смотря какое системное имя у поля. 1 YUR@ reacted to this Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
YUR@ 3 Жалоба Опубликовано: July 25, 2014 СПАСИБО! Всё заработало! Но оочень долго! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: July 25, 2014 Не буду утверждать, что тормозит из-за этого, но и не буду опровергать. Попробуйте заменить строку$kvartira_model['data'] = $data_model->init_model_data_from_request($kvartira_model['data']);на$kvartira_model['data']['daily_rent_id']['value']=(int)$this->getRequestValue('daily_rent_id'); 1 YUR@ reacted to this Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
YUR@ 3 Жалоба Опубликовано: July 25, 2014 Стало намного быстрее!Это в последующем, если добавлять новые поля для поиска, нужно будет так прописывать для каждого в отдельности? P.S. У меня везде только просто daily_rent (без id) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: July 25, 2014 P.S. У меня везде только просто daily_rent (без id) значит везде нужно заменить daily_rent _id на daily_rent Это в последующем, если добавлять новые поля для поиска, нужно будет так прописывать для каждого в отдельности? С большой долей вероятности. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
YUR@ 3 Жалоба Опубликовано: July 29, 2014 Тут у меня возникли ещё 2 маленькие проблемы в связи с внедрением Чекбокса "Посуточной аренды":1) Ничего не находит, если его установить в Новую (дополнительную) форму поиска2) Так же, почему-то выборка происходит и в блоке со Специальными предложениями. Причём, как-то странно: чекбокс установлен у 2-х объектов, а в VIP-блоке остаётся только один. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: July 29, 2014 А что за "Новая (дополнительная)" форма поиска? Обычно Спецпредложения реагируют на указанные параметры поиска. Т.е. если в форме вы выбрали искать по какому-то параметру, то и спецпредложения аналогично меняют свое содержимое. А вот почему выводится только одно - сложно сказать. Спецпредложения выводятся ограниченным количеством, возможно вторая запись просто не попадает в это количество. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
YUR@ 3 Жалоба Опубликовано: July 29, 2014 А что за "Новая (дополнительная)" форма поиска? Обычно Спецпредложения реагируют на указанные параметры поиска. Т.е. если в форме вы выбрали искать по какому-то параметру, то и спецпредложения аналогично меняют свое содержимое. А вот почему выводится только одно - сложно сказать. 1. Новая Форма поиска для главной страницы, которая создаётся в админке, допустим, под отдельную категорию (со своим набором полей).2. Этого не знал. Может это и хорошо. Но лучше бы было, чтобы это как-то отключалось. Пример: допустим спецпредложения/спецразмещения реализованы широкоформатным слайдером-каруселью с 10-ком превьюшек... Из них почти все о продаже квартир, домов и т.п., и только 1-2 — это объявления об аренде. В момент фильтрации, при поиске сдаваемого помещения - слайдер превращается в не очень красивую штуку. Это же, в принципе касается и боковой колонки, когда у тебя количество объявлений чётко подобрано под дизайн. "Спецпредложения выводятся ограниченным количеством, возможно вторая запись просто не попадает в это количество."Нет, ограничений не стоит! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: July 30, 2014 1. В принципе должна срабатывать даже из таких форм - они все, если мне не изменяет память, собирают параметры из одного места.Есть возможность взглянуть на сайт или он локальный? 2. Мне это "самоуправство", в принципе, тоже не нравится. Но отключить кнопкой варианта нет. Можно просто переопределить функцию-сборщик спецпредложений. Нет, ограничений не стоит! Количество спецпредложений, выбираемых из БД, для показа на странице лимитировано. Если в БД содержится спецпредложений больше этого лимита, от за один показ они все не будут показаны. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
XTRO 154 Жалоба Опубликовано: August 6, 2014 $params['tmp_var_id'] = (int)$this->getRequestValue('tmp_var_id');столкнулся со следущим:скажем в форму добавлено поле с типом selectbox,а если делаем в template_search.php var_dump ($params['tmp_var_id']); на стандартной форме поиска, то почему-то в сырце 2 массивапри этом, дефолтный 0 для поля ставить нельзя, не отработает, отработает только если будет null, т.е. не указано Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: August 7, 2014 а если делаем в template_search.php var_dump ($params['tmp_var_id']); на стандартной форме поиска, то почему-то в сырце 2 массива Я что-то не уловил суть.Если правильно понял - вызов template_search происходит несколько раз (не единожды). Построитель сетки, который вызывает template_search строит не только сетку результатов поиска, но и просто сетку топика, участвует в выборке данных для спецпредложений. Грубо говоря практически везде, где выбирается несколько объявлений. Насчет отработает 0 или null - не понял. Если в template_search вы приводите к целому, то пустое значение или ноль приведутся к нулю и дальше уже все будет зависеть от следующих проверок. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
XTRO 154 Жалоба Опубликовано: August 7, 2014 Если правильно понял - вызов template_search происходит несколько раз (не единожды).а зачем не 1 раз, если возвращаем всё равно массив? Построитель сетки, который вызывает template_search строит не только сетку результатов поиска, но и просто сетку топика, участвует в выборке данных для спецпредложений. Грубо говоря практически везде, где выбирается несколько объявлений.совершенно верно, в т.ч. влияет и на отображение сетки в админке (что уже имхо нонсонс, поскольку работаем с фронтэндом.) Насчет отработает 0 или null - не понял. Если в template_search вы приводите к целому, то пустое значение или ноль приведутся к нулю и дальше уже все будет зависеть от следующих проверок.всё верно, к целому. 0 - ясно, а null не приводится.Поэтому при указания дефолтного 0 - один вывод, с пустым значением - другой. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: August 7, 2014 0 - ясно, а null не приводится $d=NULL;var_dump((int)$d); возвращает что-то отличное от нуля? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: August 7, 2014 а зачем не 1 раз, если возвращаем всё равно массив? Я потерял нить логики. Какая связь между количеством вызовов и типом возвращаемого значения? в т.ч. влияет и на отображение сетки в админке (что уже имхо нонсонс, поскольку работаем с фронтэндом.) Почему нонсенс? У вас в админке не такие объявления как во фронте? Тем более, что бы условие сработало, надо зарядить в реквест соотв. переменную, чего в админке обычно нет. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
XTRO 154 Жалоба Опубликовано: August 7, 2014 $params['rayonkarelii_id'] = (int)$this->getRequestValue('rayonkarelii_id');var_dump ($params['rayonkarelii_id']); // при отсутствии дефолтного 0 в модели возвращает дважды null--------а нонсенс, т.к. считаю, что в админке не должны обрабатываться условия template_search.php Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: August 7, 2014 $params['rayonkarelii_id'] = (int)$this->getRequestValue('rayonkarelii_id');var_dump ($params['rayonkarelii_id']); // при отсутствии дефолтного 0 в модели возвращает дважды null Вообще-то дальше после$params['rayonkarelii_id'] = (int)$this->getRequestValue('rayonkarelii_id');должно бы идтиif($params['rayonkarelii_id']==0){unset($params['rayonkarelii_id']);}так как 0 - "мусорное" значение.Я верно догадался? считаю, что в админке не должны обрабатываться условия template_search.php Как аргументация - не убедительно))В темплейт_сеарч мы обрабатываем ведь не какие-то левые переменные. Точнее не только какие-то левые, но и те, которые есть явно в модели, но базовый движок не обрабатывает которые. А имея общий выборщик на сетку мы получаем предсказуемый и одинаково работающий механизм.А в чем проблема того, что для админки он обрабатывается? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
XTRO 154 Жалоба Опубликовано: August 7, 2014 Я верно догадался? ага, должно бы, естесно нету А в чем проблема того, что для админки он обрабатывается?в одном случае выведет 3 из 3, в другом 1 из 3 -х и естесно глаза квадратные, когда также в админке.Резюме: с IF вылечилось Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
vetalysd 8 Жалоба Опубликовано: May 11, 2015 Помогите.Как соединить 2 поля в поиске (регион и город) чтобы сохранить зависимости.Например: область 1 > город1область 1 > город2область 2 > город 1область 2 > город 2и т.д. Цель - уменьшить количество полей при поиске.Потом на это поле повесить автодополнение. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: May 12, 2015 Помогите.Как соединить 2 поля в поиске (регион и город) чтобы сохранить зависимости.Например: область 1 > город1область 1 > город2область 2 > город 1область 2 > город 2и т.д. Цель - уменьшить количество полей при поиске.Потом на это поле повесить автодополнение.Смотрите тут/apps/system/js/refresher.functions.jsИ по образу функции можете сделать своиfunction update_child_list ( id, context ) { if(context===undefined || context===null){ return; } var parent=$(context).parents('form').eq(0); parent.find('[id='+ id +'_div]').html('<div id="select_box_loading"></div>'); var country_id = parent.find('#country_id').val(); var region_id = parent.find('#region_id').val(); var city_id = parent.find('#city_id').val(); var district_id = parent.find('#district_id').val(); var metro_id = parent.find('#metro_id').val(); var street_id = parent.find('#street_id').val(); var url = estate_folder+'/js/ajax.php?action=get_'+ id +'&country_id='+ country_id +'®ion_id='+ region_id +'&city_id='+ city_id +'&district_id='+ district_id +'&metro_id='+ metro_id +'&street_id='+ street_id + '&callback=?'; //console.log(url); jQuery.ajax({ url: url, dataType: 'json', type: "get", timeout: 2000, success: function(json){ parent.find('[id='+ id +'_div]').replaceWith(json.response.body).fadeIn('slow', function() { if('function' == typeof refresher_global_callback){ refresher_global_callback(parent.find('[id='+ id +'_div] select')); } }); }, error: function(){/*alert("error");*/} });} Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Папоротниковый Пингвин 0 Жалоба Опубликовано: May 13, 2015 В сайтбилле есть два принципиально разных типа форм поиска - стандартная (та которая доступна в шаблоне при установке) и пользовательская (которые создаются Редактор Форм - Формы Поиска).Основная разница между ними в том, что последняя создается автоматически из выбранных вами элементов, в то время как первая - продукт ручной работы. За создание стандартной формы отвечает базовый класс Kvartira_Search_Form (/apps/system/lib/frontend/search/kvartira_search.php) либо его локальный наследник - Local_Kvartira_Search_Form (/template/frontend/nuzhendom/main/search/local_kvartira_search.php) как пример , либо его заменитель Kvartira_Search_Form (/template/frontend/capitol/main/search/kvartira_search.php).Эти классы либо заменяют базовый, либо расширяют его. Принцип работы таков, что в одном из этих классов, обычно локальном или переопределенном, что бы не затиралось при обновлениях, реализуется генерация нужных элементов. Например в базовом классе реализуется генерация $city_list. Поэтому жтот список выводится в форму. Но ваш $shosse_list не определен в этом классе, поэтому и не выводится.После генерации элементов стандартной формы, эти значения перехватываются в шаблоне search_form.tpl/standart_search_form.tpl( в зависимости от шаблона ). Тут вы сами нашли куда вставлять свою переменную. Грубо говоря порядок действий таков.В свой шаблон вы копируете файл /apps/system/lib/frontend/search/kvartira_search.php в папку /template/frontend/имя_шаблона/main/search/ и переименовываете его в local_kvartira_search.php. В этом файле меняете строку class Kvartira_Search_Form extends SiteBill {на class Local_Kvartira_Search_Form extends SiteBill {либо на class Local_Kvartira_Search_Form extends Kvartira_Search_Form {Родитель не важен, поскольку вы будете переопределять единственный доступный метод класса. Но я бы советовал наследовать от Kvartira_Search_Form поскольку возможно, что в Kvartira_Search_Form будут добавляться новые фичи. Метод function __construct() { $this->SiteBill(); } оставляете. Сердце поиска - функция main().В нем определена генерация элементов. Примерно вот так будет выглядеть ваш генератор$this->template->assert('shosse_list', $form_generator->get_single_select_box_by_query($kvartira_model['data']['shosse_id']));Этой строкой необходимо дополнить код функции main(). Единственное, что вот тут $kvartira_model['data']['shosse_id'] вместо shosse_id должно стоять системное имя вашего поля, в котором хранится ид шоссе, из модели таблицы data. После этого переходим к контроллеру шаблона \template\frontend\имя_шаблона\main\main.php и ищем в нем строки require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/frontend/search/kvartira_search.php');$kvartira_search_form = new Kvartira_Search_Form();$kvartira_search_form->main();Это инициализация формы поиска. Так как у вас уже локальный файл, а не базовы, то заменяем это все на require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/frontend/search/kvartira_search.php');require_once(SITEBILL_DOCUMENT_ROOT.'/template/frontend/'.$this->getConfigValue('theme').'/main/search/local_kvartira_search.php');$kvartira_search_form = new Local_Kvartira_Search_Form();$kvartira_search_form->main();т.е. инициализируем локальный поиск. Вот после этого можем в шаблон формы поиска вставлять {$shosse_list} После всего этого, если вывод списка шоссе состоялся, встает другой вопрос - как обработать переданные с запросом значения выбранных шоссе. Здравствуйте, я проделал все данные инструкции, в стандартной форме поиска теперь имеются созданные мной поля, но беда в том, что не происходит фильтрация объявлений. Добавил параметр поиска - "Удалённость от моря", по природе своей в data - это селектбокс с 6-тью значениями. И в поисковике точно так же хочу сделать поиск по 6ти значениям, что по сути и получилось, только резултата нет. Что делать? как поправить? как заставить поиск работать? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: May 16, 2015 Что делать? как поправить? как заставить поиск работать? Мне нужно увидеть код, что бы сказать что-то определенное.Контакты в профиле. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Андрей В. 0 Жалоба Опубликовано: May 29, 2015 Добрый день! Просмотрев эту тему, прихожу к мнению, что сделать поиск в Realia \ slider сложно будет....Необходимо для работы, чтобы после выбора Типа недвижимости ниже в поиске появлялись нужные поля. Например, для Квартиры, ниже появляется выбор по Район, количество комнат (чек-боксами), общая площадь, площадь кухни, Срок сдачи, ценадля Домовладения и Таунхаусы, ниже будет Район, площадь участка (от и до), общая площадь, цена,для Участки, ниже параметры поиска: Район, площадь участка, цена,для Коммерческих помещений, поиск: Район, назначение, площадь участка, общая площадь, цена. А мебель и телефон убрать... Вопрос: можно это сделать самому? Есть какая-то подробная инструкция? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах