abushyk

Модераторы
  • Публикации

    4036
  • Зарегистрирован

  • Посещение

  • Days Won

    269

Все публикации пользователя abushyk

  1. На карте отображается не адрес, а та точка, которую удастся получить в результате геокодирования по некоторым "адресным" параметрам. так как балуна на карте нет - предполагаю, что данных для геокодирования не хватило (у вас Местоположение, но я не вижу системного имени этого поля. А самому движку нет возможности понять в каком поле у вас город\село\нп, а в котором нет. Если местоположение не входит в ряд "знакомых" ему полей, то оно просто не учтется при геокодировании), вот оно и вывело пустую карту. А центр москвы просто указан в шаблоне как отправная точка. По шаблонам. /template/frontend/agency/realty_grid.tpl /template/frontend/agency/realty_grid_thumbs.tpl.html Это два шаблона списков. Суть в том, что бы внутри этих шаблонов проставить условие, которая категория выводится в данный момент, и выводить нужные поля. Но тут нужно быть осторожным - если в категории "Дома. дачи..." все понятно, то в результате поиска без учета категории в один список попадут и дачи и кмнаты. Поэтому условие нужно будет ставить на уровне строки таблицы, тогда как в категории можно применить ко всей таблице. Но этой проблемы не будет при выводе в виде блочков.
  2. Для гуглокарты таккая подмена кажется прокатывает. А вот для яндекс не особо, там нужно по другому указывать маркер при запуске скрипта карты на карточке объекта. Или наоборот. Но попробьовать можно)) если картинка пропорциональна исходной, то должно быть относительно вменяемо.
  3. Скорее всего вы ищете это /apps/getrent/site/site.php
  4. Что бы не лезть в реалтимап.жс нужно в строке RM.initJSON('map', loc_objects, map_type);сделать изменения RM.initJSON('map', loc_objects, map_type, {scrollZoom: false, minimap: false, yandexMapType: 'yandex#map'});
  5. Возьмите этот файлик http://realia.sitebill.ru/template/frontend/agency/img/marker.png и покладите в папку /template/frontend/agency/img/
  6. realty_view.tpl Находим строку {elseif $data_item.type eq "select_by_query"} и перед ней добавляем {elseif $data_item.type eq "uploads"}
  7. В реалии используется модуль realtymap.js для вывода карты в сетке. Так что искомого кода вы там не найдете. Там есть RM.initJSON('map', loc_objects, map_type);И все изменения проводятся через него посредством параметров. Что вам нужно сделать с картой? Внес изменения в realty_grid.tpl.bak.bak - означает резервную копию. Этот файл не включается в шаблон. Правки нужно вносить в realty_grid.tpl
  8. if(''!==$this->getRequestValue('action_d')){ $params['action_d'] = (int)$this->getRequestValue('action_d'); }замените на if(0!==(int)$this->getRequestValue('action_d')){ $params['action_d'] = (int)$this->getRequestValue('action_d'); }
  9. $params['page_limit'] = 10; В том кусочке, который вы запостили выше. Но есть\были шаблоны где обрезка вывода регулировалась еще и шаблоном. Попробуйте сначала менять этот параметр. Если его изменения не повлияют на количство, то нужно будет проверить шаблон.
  10. //опеределяем границы. метод получения ихх не учитываем $MIN_SEA_DIST=10; $MAX_SEA_DIST=1000; $kvartira_model=array_merge($kvartira_model, $this->addField('sea_distance_min')); $kvartira_model=array_merge($kvartira_model, $this->addField('sea_distance_max')); $kvartira_model = $data_model->init_model_data_from_request($kvartira_model, true, true); //получение данных из запроса //если пуст или ноль, забиваем максималку if(intval($kvartira_model['sea_distance_max']['value'])<0 || intval($kvartira_model['sea_distance_min']['value'])>$MAX_SEA_DIST){ $kvartira_model['sea_distance_max']['value']=$MAX_SEA_DIST } //если пуст или ноль, забиваем минималку if(intval($kvartira_model['sea_distance_min']['value'])<0 || intval($kvartira_model['sea_distance_min']['value'])>$MAX_SEA_DIST){ $kvartira_model['sea_distance_min']['value']=$MIN_SEA_DIST } $e=$form_generator->compile_safe_string_element($kvartira_model['sea_distance_min']); $form_parts['sea_distance_min']=$e['html']; $e=$form_generator->compile_safe_string_element($kvartira_model['sea_distance_max']); $form_parts['sea_distance_max']=$e['html']; $this->template->assert('search_form_parts', $form_parts);
  11. на этом кусочке скрина - вывод блока Похожие объявления. А вывод шалереи фоток самого объекта должен быть выше.
  12. До горизонтальной черты все верно поняли. addField просто доьавляет. Что бы не писать длинный код формирования элемента массива я вынес его в функцию для однотипных элементов. Вот и вся его работа. Откуда берутся значения - пастебин тотже. строка 45 - $kvartira_model = $data_model->init_model_data_from_request($kvartira_model, true, true); Это инициализация модели. Т.е. сформированная нами модель через эту функцию выковыряет из запроса соотв. своим полям переменный и разложит их по нужным полям. Абсолютно аналогично любой другой форме в движке. Макс и мин - это уже отдельная история. Даже две - откуда брать и куда девать. Откуда брать - вопрос спорный. Не всегда есть смысл забивать готово даже максимальную цену. Нет от этого никакой реальной пользы. С минимальным значением любого параметра - та же беда. Можно и из БД высчитывать, можно и эмпирически предположить некие граничные значения без привзки к реальным данным - это не принципиально совершенно. Куда девать - вставлять в модель после init_model_data_from_request По сути задача сведется к тому, что после того как модель возьмет свои значения из запроса, определить по некоторім условиям то ли там лежит и если нет, то заменить мин и мак. Например проверяем поле price_max. Если оно равно нулю или больше PRICE_MAX, тогда $kvartira_model['price_max']['value']=PRICE_MAX Или для мин. цены если она равна 0 или больше PRICE_MAX, тогда $kvartira_model['price_min']['value']=PRICE_MIN или PRICE_MAX, смотря какая логика вам нравится. кажется плохо объяснил.
  13. 1. Смотрим удалено ли приложение upper 2. /apps/system/lib/sitebill_krascap.php ищем длинную строку if ( $this->getRequestValue('country_id') == '' && $this->getRequestValue('city_id') == '' && $this->getRequestValue('topic_id') == '' and ($url_info['path'] != $cmp_url and $url_info['path'] != $cmp_url.'index.php' and $url_info['path'] != $cmp_url.'search/') and $this->getRequestValue('user_id') === NULL) {После нее должно идти $sapi_name = php_sapi_name();if ($sapi_name == 'cgi' || $sapi_name == 'cgi-fcgi') {header('Status: 404 Not Found');} else {header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');}если не, значит может не обновлен system
  14. На какие именно цифры заменили текстовые названия? Этот кусок if(''!==$this->getRequestValue('action_d')){ $params['action_d'] = (int)$this->getRequestValue('action_d'); }так и остался без изменений?
  15. Исключительного для чисел в данный момент нет. Для хранения числовых значений чаще всего - safe_string. С использованием правил например. Для выведения на форму поиска в принципе он же, но правила на них не действуют и этот функционал достигается через логику template_search.
  16. Почему нет? Он же градуированный набор значений. Нет разницы как из него выбирать - кликая в вывалившемся списке или передвигая ручечку, каждой позициий которой отвечает определенное значение из вариантов. Я поступаю следующим образом: 1. не использую ВСЮ модель data для создания формы поиска. Она избыточна и, в принципе, не соответствует в полной мере виду формы. 2. Я использую ОТДЕЛЬНУЮ модель формы поиска, в том числе и на базе модели data. Поясню. Для формы поиска я могу взять модель data и выкинуть из нее все ненужные для формы поиска поля (мне не нужно, что бы движок пытался проинициализировать несуществующие на форме поля, тратя лишнее время и усилия). Я могу описать свою модель в виде массива, как это делается с большинством исходных моделей перед тем, как они попадут в БД. Так же в свою модель я могу добавить СВОИ поля. Например в объявлении вам не нужно поле мин. цена и макс. цена, а нужно одно поле Цена. А вот в форме поиска вам не нужно поле Цена, так как только умалишенній найдет удовольствие в поиске по четкому хзначению, а вот мин и мак нужны. В это и состоит смысл конфликта логики формы поиска и формы данных. 3. Вся магия кроется в Local_Kvartira_Search_Form protected function addField($name) - это моя функция быстрого добавления поля ввода. В данном случае я использую как исходную модель data, поэтому мои манипуляции будут заключаться в удалении ненужных полей и добавлении нужных. Вот эта функция добавляет. Строки 19-20 Полчение модели объявы и сохранение ее в отдельную переменную. Дальше она у нас как пластилин, из которого мы вылепим нужное. Строка 21 Описание полей из модели data которые нам нужны в поиске. Все остальные поля будут удалены и на форму не попадут никаким способом. И операции по их инициализации из запроса тоже не будут проводиться. Строка 22-28 Собственно очистка от лишних полей и убирание этого неказистого combo-элемента. Строка 30-43 Дополнение модели нужными полями. Вся прелесть модели в том, что она способна сама взять свои значения из запроса. Но если поля минимальной цены нет в модели, то взять его она не может. И вот мы добавляем свои поля. $kvartira_model=array_merge($kvartira_model, $this->addField('price_min')); - это добавление поля ввода с name="price_min". Но не забывайте, тут мы описываем ТОЛЬКО поля для создания формы поиска. Все это не имеет отношения к самому поиску. Т.е. добавив поле price_min мы просто добавили поле в место, где его удобно брать и обрабатывать. Но правила для самого поиска, что искать в каком поле БД в зависимости откакого поля в запросе - это уже template_search (!Важно) Аналогично мы напихиваем множество нужных нам полей под площади уастков, кухонь и т.д. Строки 51-89 - Само физическое создание элементов формы поиска и выдача их в шаблон. Я использовал здесь немного не стандартный спосбоб - элементы не идут в шаблон напрямую, а собираются в один элемент и уже он идет в шаблон. Это меня страхует от того, что где-то какой-то модуль переопределит одну из моих переменных своим значением нечаянно. И сам я не переопределю никакую. Все. Дальше я на форме поиска распихиваю как мне нужно эти элементы и прописываю правила в template_serach. В чем плюс? 1. нет лишней работы движку. Вы за один раз настраиваете и движек потом не повторяет безсмыслленых операций. 2. Нет конструкций типа <input type="text" name="floor_min" value="{if (isset($smarty.request.floor_min) && $smarty.request.floor_min!=0)}{$smarty.request.floor_min}{/if}" /> Элемент генерируется моделью вместе со значением и нам не нужно уже смотреть в смарти.реквест и писать условия. 3. У меня могут быть нужные мне элементы, которых нет или не может быть в модели объявления. Соотв. я могу наладить произвольный или комплексный поиск. Запрос в БД на получение MAX и MIN и assert в шаблон. Или, что является приоритетным - вести эти значения как настройки или вшить в код с запасом.
  17. 1. Абсолютно не важно. Ползунок - это элемент UI и связь с моделью у него косвенная и односторонняя - т.е. вы приклеиваете ползунок к какому-то полю, но это никак не влияет на данные в модели. 2. get_single_select_box_by_query(), get_select_box() в зависимости от типа. Первый под selectbox_by_query, второй - select_box 3. Шаблон, скрипт ползунка и немного фантазии) Ползунок, по сути - это оболочка для инициализации двух текстовых полей - верхней и нижней границы значений. ПС. Если вы используете is_ranged у вас НЕТ контроля за этим элементом в шаблоне. А следовательно и человечной возможности включить на него ползунок тоже нет.
  18. <option value="prodam"> Продажа</option> <option value="arenda"> Аренда</option> <option value="kuplu"> Куплю</option> <option value="snimu"> Сниму</option> Тут у вас prodam, arenda.... А тут $params['action_d'] = (int)$this->getRequestValue('action_d'); вы эти значения приводите к цлому числу - в данном случае к нулю, в который превращаются все слова. И в поиск в запрос даете уже ноль, а не " prodam, arenda...." . Вот и не ищет. Либо убрать нафик prodam, arenda.... и заменить их нормальными цифрами Либо в проверке $params['action_d'] = (int)$this->getRequestValue('action_d'); изменить на условие совпадения с одним из допустимых значений.
  19. 1 2 3. 4. Откріваем /template/frontend/шабло/realty_view.tpl Ищем в нем создание галлереи. Расскажу на примере агенси, но остальные практически подобны - некоторые различия могут быть в зависимости от движка всплывалки. {section name=j loop=$photo} <div class="gitem"><a href="{$estate_folder}/img/data/{$photo[j].normal}" title="Фото" ><img src="{$estate_folder}/img/data/{$photo[j].preview}" style="max-width: none;" ></a></div>{/section}Этот код формирует элементы всплывалки. Нужно title="Фото" заменить на title="{$photo[j].title}"5. В результате
  20. ajax-вариант по принципу "хотя бы" не выйдет. То, что вы нашли - это таки аякс, но по нему еще есть крупные вопросы. так что выпускать его на волю я бы пока не советовал.
  21. Мы сейчас говорим о геокодировании как: - о процессе запускаемом с админки для массового геокодирования записей - о процессе геокодирования объявлений при их добавлении при включенной соответствующей настройке - о процессе вывода на карту метки в карточке объявления, когда координаты не указаны и геокодировака метки происходит на лету ?
  22. Вы случайно не пустую таблицу пытались создать? Нужно сначала через Редактор форм добавить хотя бы одно поле.