abushyk

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

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

  • Посещение

  • Days Won

    269

Изменения репутации

  1. Like
    abushyk получил репутацию от Chernetskiy в Центр и масштаб карты -- как?   
    Устанавливаем центр и масштаб для карты "все объекты" загружаемой как показано у топикстартера.
    В приложенном архиве два файла:
    /apps/system/template/iframe_map.tpl
    /apps/system/js/realtymap.js
    Вам необходимо заменить такие же файлы в вашей копии движка. Они войдут в обновления позже. Поэтому внедрять это лучше на самой свежей версии system. Обязательно сделайте копию заменяемых файлов, я допускаю, что мои файлы могут иметь функционал ушедший немного вперед по отношению к доступны файлам.
     
    Далее, в файле /apps/system/lib/system/ajax/ajax_server.php необходимо найти protected function _iframe_mapAjaxAction() и у нее внутри после
    $DBC=DBC::getInstance(); добавить строки
    if(isset($_GET['custom_center'])){ $crds=preg_replace('/[^\d\.,-]/', '', $_GET['custom_center']); if($crds!=''){ $this->template->assign('custom_center', $crds); } } if(isset($_GET['defaultZoom'])){ $dz=intval($_GET['defaultZoom']); if($dz>0 && $dz<21){ $this->template->assign('defaultZoom', $dz); } }  
    Подготовительный этап завершен. Теперь передаем параметры. В строке подключения
    <iframe src="{$estate_folder}/js/ajax.php?action=iframe_map&custom_center=42.556334,27.645153&defaultZoom=10" style="border; 0px;" border="0" width="100%" height="100%"></iframe>
    добавляем два параметра - custom_center и defaultZoom
    Первый указывает центр карты. Если он передан, то карта отцентрируется по этой точке вне зависимости от количество попавших маркеров в область видимости.
    Второй указываем масштаб отцентрированной карты. Эта настройка не имеет смысла без указания предыдущей - если пользовательский центр не задан, то карта отцентрируется  и отмасштабируется так, что бы показать все маркеры.
    rmap_mod.zip
  2. Like
    abushyk получил репутацию от Анастасия в Жилые комплексы форма поиска.   
    Участвовали - это:
    1. форма поиска искала объекты И жилые комплексы?
    2. форма поиска искала объекты и имела в своем составе поле выбора ЖК из приложения ЖК и позволяла искать по списку ЖК принадлежащие к ним объекты?
  3. Like
    abushyk получил репутацию от Helenblondi в шаблон новосел под портал аренды   
    Меню в главной навигации - это для того, что нужно поставить ПОСЛЕ топиков в навигашке
    Меню перед главной навигацией - это для того, что нужно поставить ПЕРЕД топиками в навигашке
  4. Like
    abushyk получил репутацию от Helenblondi в Сео текст на главной   
    Для реалия в шаблоне main.tpl есть часть
    {if $REQUESTURIPATH == '' } <div class="bottom-wrapper"> <div class="bottom container"> ... </div><!-- /.bottom --> </div><!-- /.bottom-wrapper --> {/if} Это те самые три блочка, что у вас на скрине. Сразу после </div><!-- /.bottom-wrapper --> вставьте {include file='home_text.tpl'} , создайте в папке шаблона файлик home_text.tpl и вписывайте в него свой текст с разметкой или еще чем-то. Хоть через фтп, хоть через редактор шаблонов в админке.
    Вариант с шаблонным файлом лучше, так как позволяет более богато напихать туда своего контента, в том числе и скрипты, которые не выйдет через обычное поле textarea.
  5. Like
    abushyk изменил репутацию Chernetskiy в Обратная связь, персональные данные и штрафы   
    Пришлось законный дурдом для формы обратной связи развести народной непредсказуемостью  
    Поправил в форме "Имя" на "Как к вам обращаться", и пусть пишут хоть Царь всея Руси  чтобы не возникало разговоров, что потребовали указать имя, 
    поправил позицию "Ваш телефон" на "телефон" - мы-же не спрашиваем именно его телефон (контакта), может нас интересует модель или цвет его телефона, но изменил параметр на mobileprhone и добавил mask= +7 (hhh) hhh-hhhh, ничего другого не укажешь, да и с маской удобнее  
    из обязательных полей оставил только e-mail, посмотрим прибавится-ли спама...
  6. Like
    abushyk получил репутацию от Helenblondi в Метат теги в карточке объекта   
    "не должны" следует читать как "не обязаны"
  7. Like
    abushyk получил репутацию от Chernetskiy в Форма поиска как на Авито   
    тут это не вариант. подразумевается игра на упреждение, что бы не давать к выбору геолокации в который в данный момент нет объектов. но проблема тут в том, что даже в том случае это будет неполное решение, так как на форме есть и другие параметры отбора. и даже если на локации есть объекты, то остальные выбранные фильтры могут исключить их их финальной выборки.
    в принципе оптимальным тут будет заведение поля с числом объектов на объекте локации, например в модели улица поле "К-во объектов", куда периодически пересчитывать эти самые количества. А для применения на форме поиска уже в процессе раоты менять запрос на выборку улиц с условием дополнитеольным, которое будет откидывать улицы с нулевым этим полем.
  8. Like
    abushyk получил репутацию от Smoke в Установка проверки граничных значений в формах   
    Если вас устраивает молчаливый режим, когда оно будет записывать в базу то, что удастся выжать числового из переданного значения, то можно только базой. Если же это поле вам важно и вы хотите что бы юзер получал предупреждение при попытке задать "левое" значение, тогда лучше rules и Type:int.
    Последний способ отличается только тем, что по нему проходит проверка значения и, если оно неформат "5 сот.", "5.0", "пять соток" то форма будет возвращена на дозаполнение. А изменение формата поля в БД приведет к тому, что значение будет принято всегда, но вот в БД останется только то, что подходит под формат колонки в базе "5 сот."=>"5", "5.0"=>"5", "пять соток"=>"0", тогда как rules будут заворачивать форму до тех пор, пока пользователь не введет реальное целое число.
    И,что главное, rules не изменяют переданные значения, а только обуславливают их формат и соотвествие ему (кроме decimal который с крайней версии будет вместе с проверкой еще и заменять запятую в числе на точку). Т.е. речи об осмысленном вырезании нет ни в одном из этих случаев.
    ПС. Я долго боролся с человеками подсказаками при заполнении и в результате проставил rules на выжных для меня полях расстояний и площадей + выставил форматы колонок в БД на соотв. (это из соображений экономии памяти, така как числовой формат более худой, быстроты сортировки, так как сортировка по числам лучше и адекватнее чем по строкам, и потому что у меня много данных идет с парсеров и прогонять их через сложные проверки с созданием объекта формы не всегда выгодно по производительности).
  9. Like
    abushyk получил репутацию от Helenblondi в Заполнение пустот на последних страницах сайта   
    Как и писал Игорь Иванович, в realty_grid.tpl ближе к концу есть 
    <div class="sidebar span3"> <h2>{$LT_SEARCH}</h2> {include file='search_form.tpl'} <br/> {include file='right_special.tpl'} </div> это правая колонка.
    По условию
    {if intval($smarty.get.page)==$_max_page} {/if} можно определить, что мы находимся на последней из возможных страниц. соотв. по нему можно что-то показать или не показать. например если баннеры включены в этой же странице, то их вывод можно обернуть как
    {if intval($smarty.get.page)<$_max_page} тут выводим, а вне этого условия нет {/if} если же баннер например включаются не сразу тут а в search_form.tpl, тогда в єтом условии можно сделать передачу параметра во включаемый файл
    {if intval($smarty.get.page)<$_max_page} {include file='search_form.tpl'} {else} {include file='search_form.tpl' hide_banners=1} {/if} и тогда уже во включенном файле проверить {if $hide_banners==1} и тогда их не вывести, а в остальных случаях вывести.
  10. Like
    abushyk получил репутацию от Chernetskiy в Заполнение пустот на последних страницах сайта   
    Как и писал Игорь Иванович, в realty_grid.tpl ближе к концу есть 
    <div class="sidebar span3"> <h2>{$LT_SEARCH}</h2> {include file='search_form.tpl'} <br/> {include file='right_special.tpl'} </div> это правая колонка.
    По условию
    {if intval($smarty.get.page)==$_max_page} {/if} можно определить, что мы находимся на последней из возможных страниц. соотв. по нему можно что-то показать или не показать. например если баннеры включены в этой же странице, то их вывод можно обернуть как
    {if intval($smarty.get.page)<$_max_page} тут выводим, а вне этого условия нет {/if} если же баннер например включаются не сразу тут а в search_form.tpl, тогда в єтом условии можно сделать передачу параметра во включаемый файл
    {if intval($smarty.get.page)<$_max_page} {include file='search_form.tpl'} {else} {include file='search_form.tpl' hide_banners=1} {/if} и тогда уже во включенном файле проверить {if $hide_banners==1} и тогда их не вывести, а в остальных случаях вывести.
  11. Like
    abushyk получил репутацию от Chernetskiy в Небольшая админка   
    В помощь тому, кто возьмется делать (пример на базе realia).
    1. в main.php шаблона столбим адрес обработчика
    if ( !$has_result && $REQUESTURIPATH=='tables' ) { // выбираем текущий гриддер $grid_constructor = $this->_getGridConstructor(); //собираем параметры из запроса. это нуно толко для того что бы взять из запроса страницу или если используются сортировки-фильтровки $params=$this->gatherRequestParams(); //жестко ставим юзера-владельца $params['user_id']=intavl($_SESSION['user_id']); //указываем страницу отсчета $params['pager_url']=$REQUESTURIPATH; // собираем список $res = $grid_constructor->get_sitebill_adv_ext( $params, false, false ); //гоу в шаблон $this->template->assign('tables_grid_items', $res); //указываем кастомный макет и шаблон вывода списка $this->template->assert('main_file_tpl', 'realty_grid_tables.tpl'); $work_subcontroller='tables'; $has_result=true; } 2. В main.php дополняем блок $layouts новым макетом (в realia layout_full.tpl - это макет на всю ширину страницы без предустановленных колонок. т.е. вывод в этот макет будет на всю ширину сайта)
    'tables'=>'layout_full.tpl' 3. Создаем realty_grid_tables.tpl
    Основой может быть тот же шаблон ЛК, только вместо $grid_items используем $tables_grid_items
    Ориентировочный пример
    <table class="content_main table" cellspacing="2" cellpadding="2"> <tr class="row_head"> <td width="1%" class="row_title">{$L_DATE}</td> <td width="1%" class="row_title">{$L_ID}</td> <td width="1%" class="row_title">{$L_PHOTO}</td> <td width="70" class="row_title">{$L_TYPE}&nbsp;<a href="{$url}&order=type&asc=asc">&darr;</a>&nbsp;<a href="{$url}&order=type&asc=desc">&uarr;</a></td> <td width=13% class="row_title">{$L_CITY}&nbsp;<a href="{$url}&order=city&asc=asc">&darr;</a>&nbsp;<a href="{$url}&order=city&asc=desc">&uarr;</a></td> <td width=13% class="row_title">{$L_DISTRICT}&nbsp;<a href="{$url}&order=district&asc=asc">&darr;</a>&nbsp;<a href="{$url}&order=district&asc=desc">&uarr;</a></td> <td width=13% class="row_title">{$L_STREET}&nbsp;<a href="{$url}&order=street&asc=asc">&darr;</a>&nbsp;<a href="{$url}&order=street&asc=desc">&uarr;</a></td> <td class="row_title" nowrap>{$L_PRICE}&nbsp;<a href="{$url}&order=price&asc=asc">&darr;</a>&nbsp;<a href="{$url}&order=price&asc=desc">&uarr;</a></td> <td class="row_title">{$L_FLOOR}</td> <td class="row_title">{$L_SQUARE} м<sup>2</sup></td> {if $admin !=''} <td class="row_title"></td> {/if} </tr> {foreach name=i from=$tables_grid_items item=tables_grid_item} <tr valign="top" class="row3{if isset($tables_grid_item.export_cian) && $tables_grid_item.export_cian==1} cianexported{/if}" {if $tables_grid_item.active == 0}style="color: #ff5a5a;"{/if}> <td><b><a href="{$tables_grid_item.href}">{$tables_grid_item.date}</a></b></td> <td><b><a href="{$tables_grid_item.href}">{$tables_grid_item.id}</a></b></td> <td align="center"> {if $tables_grid_item.img != '' } <a href="{$tables_grid_item.href}"><img src="{$estate_folder}/img/data/{$tables_grid_item.img[0].preview}" width="50"></a> <!-- img src="{$estate_folder}/img/hasphoto.jpg" border="0" width="16" height="14" /--> {/if} </td> <td><b>{$tables_grid_item.type_sh}</b></td> <td>{$tables_grid_item.city}</td> <td>{$tables_grid_item.district}</td> <td>{$tables_grid_item.street}</td> <td nowrap><b>{$tables_grid_item.price|number_format:0:",":" "} {if $tables_grid_item.currency_name != ''}{$tables_grid_item.currency_name}{/if} {if $tables_grid_item.currency != 'RUR'}({$tables_grid_item.price_ue} {$L_RUR_SHORT}){/if}</b></td> <td>{$tables_grid_item.floor}/{$tables_grid_item.floor_count}</td> <td>{$tables_grid_item.square_all}/{$tables_grid_item.square_live}/{$tables_grid_item.square_kitchen}</td> {if $admin !=''} <td nowrap> <a class="btn btn-small btn-info" href="{$estate_folder_control}?do=edit&id={$tables_grid_item.id}"><i class="icon-white icon-pencil"></i></a> <a class="btn btn-small btn-danger" onclick="return confirm('{$L_MESSAGE_REALLY_WANT_DELETE}');" href="{$estate_folder_control}?{if $topic_id != ''}topic_id={$topic_id}&{/if}do=delete&id={$tables_grid_item.id}"><i class="icon-white icon-remove"></i></a> </td> {/if} </tr> {/foreach} {if $pager != ''} <tr> <td colspan="11" class="pager">{$pager}</td> </tr> {/if} </table>  
  12. Like
    abushyk получил репутацию от Realtor в Настройка apps_realty_update_date_added   
    пункт 2. биллинг. а он у вас, кажется, включен.
  13. Like
    abushyk получил репутацию от Helenblondi в код для баннера   
    Что бы был виден только на главной, код баннера нужно обернуть в 
    {if $REQUESTURIPATH == '' } {/if} что бы был под формой поиска, то в search_form.tpl в конец
  14. Like
    abushyk получил репутацию от Realtor в Настройка apps_realty_update_date_added   
    1. Эта настройка применима ТОЛЬКО к ЛК. При ее включенности и изменениях объявления из других мест она не влияет.
    2. Эта настройка отменяется включенностью Биллинга. Если Биллинг включен, то управлением изменением даты добавления занимается кнопка Поднять из биллинга.
  15. Like
    abushyk получил репутацию от Realtor в Все тот же тайтл   
    Что бы далеко не ходить, сразу предложу вариант в общих чертах.
    Имеем:
    разделы Дом с ид 5002 и Квартира с ид=6015
    поле optype c контрактом, где у нас 1-Продажа и 2-Аренда.
    1. Заводим в языковые файлы переменные
    LT_OPTYPE_NAME_G_0='Найти' LT_OPTYPE_NAME_G_1='Купить' LT_OPTYPE_NAME_G_2='Снять' LT_TYPE_NAME_G_0='недвижимость' LT_TYPE_NAME_G_5002='дом или дачу' LT_TYPE_NAME_G_6015='апартаменты' думаю логику именования проследить не сложно.
    2. В шаблоне списка анализируем параметры запроса
    {assign var=tid value=intval($_params.topic_id)} {assign var=oid value=intval($_params.optype)} 3. Там же формируем тайтл
    {if isset($LT_OPTYPE_NAME_G_{$oid})} {$LT_OPTYPE_NAME_G_{$oid}} {else} {$LT_OPTYPE_NAME_G_0} {/if}  {if isset($LT_TYPE_NAME_G_{$tid})} {$LT_TYPE_NAME_G_{$tid}} {else} {$LT_TYPE_NAME_G_0} {/if} Упрощая или усложняя данный пример можно хорошо развлечься. А если не ограничиваться только заголовком а взяться еще и за описания...
    ПС. Писанины будет много, но тут следует учесть, что если реализовывать этот метод продуманно, то вся писанина будет только на этапе проектирования. Дальше оно будет работать само изредка требуя коррекции, например при добавлении новых разделов. Поэтому никоим образом не рекомендую это для сайтов, которые "только начались" а скорее для тех, кто уже сформировался и хочет просто избавиться от лишних текстов, которые не очень важны, но которые нужно писать.
    ППС. Не стоит пытаться впихнуть невпихуемое. Если вы решите делать интеллектуальные заголовки на большое количество параметров с нелинейной логикой, то вполне возможно, что в шаблоне вы просто запутаетесь. В таком случае будет иметь смысл вынести формирования заголовка в функцию в самом коде шаблона. Но даже там основная логика останется схожей.
  16. Like
    abushyk получил репутацию от DoobBY в Гадкие урлы (url, alias) в поиске   
    Я тут немного перестарался, хотя сам становился на эти же грабли. После запрета нужно еще добавить
    Allow: /sitemap.xml?page=* Сайтмап может иметь постраничку и закрывать от роботов ее не нужно в отличии от остальных.
  17. Like
    abushyk получил репутацию от Dmitrii в редактирование иконок в админке риэлтора   
    /template/frontend/realto/realty_grid_account.tpl
    <img src="{$estate_folder}/img/edit.gif" border="0" width="16" height="16" /> картинка редактирования
     
    <img src="{$estate_folder}/img/delete.gif" border="0" width="16" height="16" /> картинка удаления
    По строкам не скажу какие номера. Єти картинки можно заменить на свои или даже на авесомовские иконки по вкусу. И там же уже подключить какой-то плагин для всплывающих тултипов.
  18. Like
    abushyk получил репутацию от DoobBY в Дата и время в "list"   
    /template/frontend/agency/realty_grid.tpl
    <td width="1%" class="row_title">{$L_DATE}</td> <td width="1%" class="row_title">{$L_ID}</td> это колонки в заголовке таблицы. их нужно убирать, если убирается вывод даты и идешки.
     
    <td{if $admin == ''} onClick="document.location='{$grid_items[i].href}'" {/if}><b><a href="{$grid_items[i].href}">{$grid_items[i].date}</a></b></td> <td{if $admin == ''} onClick="document.location='{$grid_items[i].href}'" {/if}><b><a href="{$grid_items[i].href}">{$grid_items[i].id}{if isset($grid_items[i].uniq_id)} ({$grid_items[i].uniq_id}){/if}</a></b></td> а то вывод уже ячеек с самими датой и ид. Они могут быть не один в один, но в них обязаельно будут {$grid_items.date} и {$grid_items.id}
  19. Like
    abushyk получил репутацию от Chernetskiy в Кнопка "Редактировать" на странице объекта   
    Суть в том, что если подключить файл стилей так как я аписал с указанием 
    media="print" то браузер будет использовать стили из єтого файла только ксли нажать кнопку Печать в браузере. Определив в нем некоторый класс, который будет иметь свойство 
    display: none; т.е. невидимость, мы получим эффкт, что при выводе в печать элементы с этим классом будут невидимы на страницы, но в то же время будут видны во всех остальных случаях.
    Для реалии невидимость сразу можно вешать на breadcrumb-wrapper header-wrapper navigation footer-wrapper и форму поиска
    Центральный контент менее однозначен. Для списков можно убирать правую колонку, для карточки в правой есть контакты. Но тут можно сделать ход конем, так как в стиля для печати можно не только указать, что скрыть, но и показать скрытое. Например мы вестаем карточку как обычно. Но делаем дополнительнй блок сразу под описанием с еще одним выводом контактов. И ставим на этот блок display:none; Теперь он у нас есть на странице, но не показан в браузере. Добавим єтому блоку класс printable и в файле стиле печати опишем его как
    .printable { display: block !important; } из-за чего при печати этот блок будет показан. А правую колонку для печати можно скрыть совсем.
    Если кто-то поймет эту логику, то спокойно сможет организовать вывод картинок для печати в виде нормальных миниатюр заместо пустого места от скриптовой галереи.
  20. Like
    abushyk получил репутацию от DoobBY в Гадкие урлы (url, alias) в поиске   
    User-Agent: * Disallow: *?*  
  21. Like
    abushyk изменил репутацию Moses в Модальное окно авторизации   
    Я нашел, у меня это файл в шаблоне: login_register.tpl.html
  22. Like
    abushyk получил репутацию от doma в Редирект со страницы без слеша в конце адреса на со слешем   
    Все запросы, которые не являются POST, PUT, DELETE или иными, являются GET. В вашем случае все запросы, которые не отправляют форму - это гет. Даже форма поиска гет. редиректить пост нет смысла, так как боты их обычно не создают, данный тип запросов предназначен для изменения или добавления данных и индексировать их не рационально. т.е. их не только нет смысла завешивать редиректом, но, в целом, стоит прятать от индексаторов.
    а учсловие прописать дополнительно ко всем
    RewriteCond %{REQUEST_METHOD} GET RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteRule ^(.*)\/$ /$1 [R=301,L]  
  23. Like
    abushyk получил репутацию от Vampir155 в Баг в шаблоне (может и я постарался) и другое   
    Ошиблись в имени переменной. в словарь записали одну метку а в шаблоне поставили другую. исправил. посмотрите в ЛК должен быть уже манат.
  24. Like
    abushyk изменил репутацию metrpro в Добавляем плагин fotorama в realia   
    Короче. Если фото 1шт или 0шт, то я не загружаю скрипты, не перегружаю страницу. Разметку вывода самих картинок трогать не нужно при этом.
  25. Like
    abushyk получил репутацию от Realtor в Регистрация, авторизация, профиль пользователя.   
    нет пока этой странички. так что бы поправить. вшита в код.