abushyk

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

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

  • Посещение

  • Days Won

    269

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

  1. Постараюсь через выходные сделать. Это действительно полезная и назревшая штука. Единственное, что я не могу пока определиться, делать ли это в виде чекбокса или в виде фильтрационной программы, например "country_id=1&user_id=5&price_min=1000".
  2. В конце поста http://www.etown.ru/s/topic/122-как-создать-связи-в-форме-поиска/?p=3554
  3. Дайте ему имя на форме not_last_floor и будет вам счастье. Этот параметр обрабатывается автоматически. При нахождении такого параметра в запросе со значением равным 1, автоматически применится условие отфильтровывающее те записи у которых этаж и этажность совпадают.
  4. Откройте файл /apps/system/lib/frontend/grid/grid_constructor.php и запустите в нем поиск по $params['added_in_days']там можно увидеть логику обработки, при условии, что в этом параметре приходит количество дней за которые нужно выбрать добавленные объявления.
  5. А что значит с возможностью расширенного поиска?
  6. Архиразумно. Более разумно могло бы только быть добавление двух полей - одного под выбор аренда\продажа и второго под признак Долгосрочной или Краткосрочной аредны (в зависимости от того какая превалирует на сайте). Но из этого есть минус, нельзя обусловить тогда появления этого чекбокса длинны аренды на форме добавления\правки, но можно на форме поиска.
  7. При данном условии секция прокручивается без всяких условий на всю длину. Возможно не удалось сделать выборку похожих. Какой сайт?
  8. Пока не вижу красивого решения. Кроме навески обработчика на кнопку открывающую модалку, что бы по клику делалось копирование элементов из формы поиска общей и их клоны добавлялись в модалку в форму поиска по карте в какой-нибудь блок с погашенной видимостью или в поля типа <input type="hidden" value="текущее значение поля с главной формы" name="имя поля с главной формы">
  9. Эти поля выводятся не только там, где вы ставите условие. Так же они будут пытаться вывестись и выше, вместе с данными объявления (комнаты, площади...). Если вы на эти поля поставили видимость для группы Риелтор в редакторе форм, то этим вы скрыли их от гостей. Но авторизированным риелторам они все равно выведутся, так как есть совпадение по группе. Если в автовыводе, чуть выше вывода контактов есть страшный блок с кучей {if...} не запретить вывод этих полей, то они выведутся, не смотря на условия ниже, где они не выведутся.
  10. Плохое условие {if $item.optype == 'Продам'}лучше {if $item._optype_ == N}где N - идешка соотв. контракта
  11. В корне неправильный подход. realty_grid_html.tpl - это шаблон блока ОДНОГО объявления в выборке. Весь ваш список результатов поиска на карте будет состоять по принципу из realty_grid_html.tpl для первого найденогоrealty_grid_html.tpl для второго найденого...realty_grid_html.tpl для последнего найденогоВставлять туда количество найденых не имеет никакого логического смысла. Тут разве что в самом search.js где вы формируете списко блоков вычислять длину json и доабвлять ее в качестве количества найденных.
  12. эти условия следует формировать так if([если перехвачен параметр по которому происходит поиск] И [в текущей модели data есть активное поле по которому происходит поиск]){ тогда описываем условие поиска}если ищем по полю date_added, то if(isset($params['date_from']) && isset($data_model_array['date_added'])){ $where_array[]='('.DB_PREFIX.'_data.date_added>=\''.$params['date_from'].'\')';}$params['date_from'] стоит заключать в кавычки в выражении, так как оно скорее текстовое. А в перехвате из запроса нужно гарантирвано приводить date_from к нужному виду if(preg_match('/^(\d\d\d\d-\d\d-\d\d)$/', $this->getRequestValue('date_from'))){ $params['date_from']=$this->getRequestValue('date_from');}
  13. Поиск по дате. Поля я добавил. Думаю сориентируетесь. Изменения в local_kvartira_search.php и двух файлах форм поиска - advanced и standart. Вам остается прописать в темплейт_сеарч условия поиска по ним и подправить стили на элементах формы. ПС. В принципе движек умеет обрабатывать аналогичные поля, но вот только не умеет их перехватывать сам из запроса. По типу добавившего там же добавил поле add_by
  14. такс))) ваши желания опережают мои возможности))) Тип photo используется и обрабатывает исключительно в контексте модели user. Прикреплять его куда либо, кроме нее не имеет смысла. Это очень древнее поле. Я сейчас разрабатываю отдельный элемент под подобные цели, который можно будет использовать в любых моделях. Если есть необходимость хранить фотку владельца в данных объявления, лучше пока использовать поле типа uploads. они явно избыточны, но применимы в любом объекте.
  15. И не найдете. Как-то этот момент уведомления прошел мимо нашего внимания. Есть немного схожая опция - "moderate_first" Использовать премодерацию. Она добавляет пользовательские объявления в неактивном состоянии и тогда нотифицирует админа, что нужно промодерировать. А вот если эта опия отключена и объявления идут сразу в паблик, то нотификации нет.
  16. вот кстати отличнейший вариант. я недавно нашел это в своих шаблонах и долго не мог вспомнить у кого стырил идею)))
  17. 1. Про кеш замечено верно, но не совсем про тот))) У выгрузки ЯН есть свой кеш - он называется "Время жизни файла кеша (в секундах)" в настройках самого приложения. его стоит выставлять для отлаженных загрузок, а если количество выгружаемых записей в пределех сотни, то можно вообще нуллить. Если это не совсем слабый хостинг. При загрузках данных из внешних источников с последующей выгрузкой на тот же ЯН имеет смысл либо ставить маленький срок жизни кеша, либо отключать его после вгрузок, запрашивать фид выгрузки, что бы обновились данные и снова включать. 2. В data поставляются при установке три гадких поля fio, phone, email - Ваше имя, телефон, мейл. Сами по себе поля в принципе безобидные, но у них есть особенность - эти поля, в некоторых приложениях при некоторых условиях могут накрывать поля из user. Поэтому если у вас не водятся толпы анонимных подателей объявлений имеет смысл гасить или удалять их, в том числе и из таблицы data в БД. И они абсолютно не подходят для хранения данных реального владельца вместе с данными объявления, как обычно делают риелторы, ведущие объекты. Под данные владельца-клиента лучше завести риелторам отдельные поля, поскольку это будет служебная инфо, а на сайте должны светиться только телефоны самих риелтеров.
  18. 1. Добавления объявления гостем или авторизированным пользователем? 2. Стандартный адрес на листинг агента выглядит так /userN.html Т.е. ссылка должна иметь вид (для realty_view.tpl) {if $data_shared.user_id.value>0}<a href="{$estate_folder}/user{$data_shared.user_id.value}.html">Тут имя пользователя или надпись "все объявления ХХХ"</a>{else}тут текст или что-то другое, если объявление анонимное{/if}
  19. 1) каждый функционал имеет два аспекта - внутренний (сбор данных для карты, который относится к высоконагруженным операциям) и внешний (рисование собранных данных в шаблоне). Часть настроек регулирует именно внутренний аспект. Т.е. его можно включить или выключить, но шаблон сам решает куда и когда выводить собранные данные если они есть. Поскольку "карта на главной" это опция, которая присуща далеко не каждому шаблону в силу особенностей дизайна, то ее вывод может потребовать некоторых трудозатрат. 2) дальше влияет само понятие "главная страница". Сам по себе этот признак абстрактный и может обозначать разные вещи в рамках разных концепций. Поэтому и все штучки связанные с "главной страницей" могут управляться именно логикой шаблона. В данный момент основным признаком главной является - пустой урл и отсутствие GET-переменных запроса. Для массы случаев это подходит, но ни в коем случае не является единственно правильным решением. 3) другой вариант отображения не всегда ок. Они весьма различны друг от друга и переключение между ними может слишком сильно изменить логику "главной" страницы. Другими словами эти режимы предназначены для первичного выбора вида отображения, а не для регулярных переключаний между ними. Для запущенного сайта вообше имеет смысл зачищать шаблон от неиспользуемых отображений и шаблонов, что бы сократить количество условий в шаблонах. 4) но если до этого момента шаблон был запущен в режиме "без главной", так называемый classic, то переключение в режим отображения одной из "главных" страниц типа slider или map изменит входную страницу до неузнаваемости. Грубо говоря имеет смісл переключаться между однотипными режимами, но не между принципиально разными. Тут принципиально неверный подход. На текущем режиме отображения на вашем сайте нет смысла включать или выключать карту на главной, поскольку главная страница представляет собой просто одну из страниц листинга. Но так как там есть еще вторая настройка "Выводить карту со списком", которая включена, то карта выводилась у вас естественно на каждой страниц на который присутствовал хоть один элемент с указанными геокоординатами. Я сделал следующее. Поскольку на этом режиме гпризнак главной страницы не устанавливается и для вывода используется стандартный шаблон листинга, то в /main/main.php в 582 строке при условной нахождении на главной (см. выше пункт 2) я указал шаблону метку $this->template->assert('homepage', 1);после этого в шаблоне самого листинга /realty_grid.tpl все строки {if $geodata_show_grid_map==1},которые управляют выводом карты со списком, я дополнил еще одним условием {if $geodata_show_grid_map==1 && intval($homepage)!==1}и теперь оно проверяет не только нужность вывода карты, но и момент нахождения на главной, при попадании в которое карта не рисуется. это не совсем верное решение, но в данном случае действенное. Для возврата к штатному поведению, достаточно в /main/main.php удалить 582 строку.
  20. С картой тут немного не так прозрачно. Есть "карта на главной" и есть "карта со списком на странице". В вашем случае работает вторая, которая выводится сопровождая любой листинг и содержит на себе позиции из этого листинга. Ваша главная страница по сути является не чистой главной, а просто "первой страницей поиска без участия фильтров". Но так как она является листингом, то и карта ее сопровождает, хотя складывается впечатление, что это именно карта на главной. Я поставил признак "главной страницы", учел его в выводе списка и при наличии оного запретил вывод карты. Теперь на "главной" ее нет, если только не обратиться к ней с параметрами, например так http://www.metrpro.ru/?page=1
  21. Я перенес исправленный вами файл шаблона в локальное место /template/frontend/realia/apps/news/site/template/news_view.tpl Свои изменения\дополнения лучше хранить именно таким образом, так как все шаблоны расположенные в папке apps/ подвержены замене при обновлениях соотв. приложений. А снесенные (локализированные) в папке шаблона уже не затрагиваются механизмом обновлений.
  22. В /apps/mapviewer/site/template/search.tpl это: <div id="activemap_holder" style="position: relative;"><div id="activemap_loading"><span>LOADING...</span></div><div id="activemap" style="width: 100%; height: 500px;"></div></div>блок карты это: <div id="main" class="searchonmap">...</div>блок формы поиска. Можно просто поменять их местами.
  23. Хорошо, идем далее. 1 /apps/mapviewer/admin/admin.php функция __construct в самом конце ее добавляем новую конфигину if ( !$config_admin->check_config_item('apps.mapviewer.add_grid_html') ) { $config_admin->addParamToConfig('apps.mapviewer.add_grid_html','0','Добавить HTML разметку для объектов на карте',1);}2 /apps/mapviewer/admin/admin.php функция ajax подсекция оператора switch с меткой collect_data После строки $res = $grid_constructor->get_sitebill_adv_core( $params, false, false, false, false );добавляем вставку if(1===intval($this->getConfigValue('apps.mapviewer.add_grid_html'))){ global $smarty; if(file_exists(SITEBILL_DOCUMENT_ROOT.'/template/frontend/'.$this->getConfigValue('theme').'/apps/mapviewer/site/template/realty_grid_html.tpl')){ $tpl=SITEBILL_DOCUMENT_ROOT.'/template/frontend/'.$this->getConfigValue('theme').'/apps/mapviewer/site/template/realty_grid_html.tpl'; }else{ $tpl=SITEBILL_DOCUMENT_ROOT.'/apps/mapviewer/site/template/realty_grid_html.tpl'; } foreach($res['data'] as $k=>$v){ $smarty->assign('item', $v); $res['data'][$k]['_html']=addslashes($smarty->fetch($tpl)); }}3 В папку /apps/mapviewer/site/template добавляем файл с именем realty_grid_html.tpl и содержимым из этой пасты Заходим в админку, в приложение MapViewer что бы новая настройка прописалась в конфиг. После этого мы имеем настройку, при включении которой в данные объектов, выдаваемые на карту будет добавлен служебный элемент _html с содержимым анонсного блока для объекта. Данный элемент будет добавлен к каждому отдельному объекту. В контексте кода с циклом в скрипте, вы сможете аналогично выхватить их через json[i]._html Это наша внутренняя часть. Переходим к внешней. 4 /apps/mapviewer/js/search.js функция makeSearch Вместо того, что мы вставляли в посте ставим иной кодvar am=$('#activemap_grid');if(am.length==1 && typeof json[0]._html !== 'undefined'){ var str=''; for(var i = 0, l = json.length; i < l; i++) { var html = json[i]._html.replace(/\\'/g, '\''); html = html.replace(/\\"/g, '"'); html = html.replace(/\\0/g, '\0'); html = html.replace(/\\\\/g, '\\'); str+=html; } $('#activemap_grid').html(''); $('#activemap_grid').html(str);}идея такова. Первым делом мы ищем на странице элемент-вместилище с id="activemap_grid". В принципе это может быть как табличный, так и блочный элемент, но, что бы не усложнять, будем считать, что он блочный. При наличии такого элемента наличии подэлемента _html в данных объявления (который будет отсутствовать, если мы например не включили добавленную выше настройку) мы в цикле обходим элементы, собираем их анонсный хтмл и упаковываем в строку. И готовую строку вставляем в наш объект-вместилище. Все практически аналогично предыдущему способу. 5. Адаптация. Шаблон для realty_grid_html.tpl из моей пасты самый общий. Естественно мы захотим что-то поменять, добавить или удалить. Для этого делаем копию файла /apps/mapviewer/site/template/realty_grid_html.tpl в /template/frontend/шаблон/apps/mapviewer/site/template/realty_grid_html.tpl и упражняемся там как хотим. 6. Естественно нам нужно добавить объект вместилище, куда выпадут все наши хтмл от объявлений. Это логичнее всего сделать в файл /apps/mapviewer/site/template/search.tpl или его локальную копию в шаблоне в виде вставки строки <div id="activemap_grid"></div> На него можно придать дополнительные свои классы, но ид у него должен остаться именно этот.
  24. Стандартный он потому и назвался стандартным, что там не может быть никаких своих полей. Но я немного не понял первого предложения. "при последующих обновлениях алиасов" - это что имеется в виду? Пересохранение объявления после изменения? Изменяется набор нестандартных полей - в самом конфиге изменяется указанный вами набор полей для формирования частей алиаса?