-
Публикации
4036 -
Зарегистрирован
-
Посещение
-
Days Won
269
Изменения репутации
-
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
-
abushyk получил репутацию от Анастасия в Жилые комплексы форма поиска.
Участвовали - это:
1. форма поиска искала объекты И жилые комплексы?
2. форма поиска искала объекты и имела в своем составе поле выбора ЖК из приложения ЖК и позволяла искать по списку ЖК принадлежащие к ним объекты?
-
abushyk получил репутацию от Helenblondi в шаблон новосел под портал аренды
Меню в главной навигации - это для того, что нужно поставить ПОСЛЕ топиков в навигашке
Меню перед главной навигацией - это для того, что нужно поставить ПЕРЕД топиками в навигашке
-
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.
-
abushyk изменил репутацию Chernetskiy в Обратная связь, персональные данные и штрафы
Пришлось законный дурдом для формы обратной связи развести народной непредсказуемостью
Поправил в форме "Имя" на "Как к вам обращаться", и пусть пишут хоть Царь всея Руси чтобы не возникало разговоров, что потребовали указать имя,
поправил позицию "Ваш телефон" на "телефон" - мы-же не спрашиваем именно его телефон (контакта), может нас интересует модель или цвет его телефона, но изменил параметр на mobileprhone и добавил mask= +7 (hhh) hhh-hhhh, ничего другого не укажешь, да и с маской удобнее
из обязательных полей оставил только e-mail, посмотрим прибавится-ли спама...
-
abushyk получил репутацию от Helenblondi в Метат теги в карточке объекта
"не должны" следует читать как "не обязаны"
-
abushyk получил репутацию от Chernetskiy в Форма поиска как на Авито
тут это не вариант. подразумевается игра на упреждение, что бы не давать к выбору геолокации в который в данный момент нет объектов. но проблема тут в том, что даже в том случае это будет неполное решение, так как на форме есть и другие параметры отбора. и даже если на локации есть объекты, то остальные выбранные фильтры могут исключить их их финальной выборки.
в принципе оптимальным тут будет заведение поля с числом объектов на объекте локации, например в модели улица поле "К-во объектов", куда периодически пересчитывать эти самые количества. А для применения на форме поиска уже в процессе раоты менять запрос на выборку улиц с условием дополнитеольным, которое будет откидывать улицы с нулевым этим полем.
-
abushyk получил репутацию от Smoke в Установка проверки граничных значений в формах
Если вас устраивает молчаливый режим, когда оно будет записывать в базу то, что удастся выжать числового из переданного значения, то можно только базой. Если же это поле вам важно и вы хотите что бы юзер получал предупреждение при попытке задать "левое" значение, тогда лучше rules и Type:int.
Последний способ отличается только тем, что по нему проходит проверка значения и, если оно неформат "5 сот.", "5.0", "пять соток" то форма будет возвращена на дозаполнение. А изменение формата поля в БД приведет к тому, что значение будет принято всегда, но вот в БД останется только то, что подходит под формат колонки в базе "5 сот."=>"5", "5.0"=>"5", "пять соток"=>"0", тогда как rules будут заворачивать форму до тех пор, пока пользователь не введет реальное целое число.
И,что главное, rules не изменяют переданные значения, а только обуславливают их формат и соотвествие ему (кроме decimal который с крайней версии будет вместе с проверкой еще и заменять запятую в числе на точку). Т.е. речи об осмысленном вырезании нет ни в одном из этих случаев.
ПС. Я долго боролся с человеками подсказаками при заполнении и в результате проставил rules на выжных для меня полях расстояний и площадей + выставил форматы колонок в БД на соотв. (это из соображений экономии памяти, така как числовой формат более худой, быстроты сортировки, так как сортировка по числам лучше и адекватнее чем по строкам, и потому что у меня много данных идет с парсеров и прогонять их через сложные проверки с созданием объекта формы не всегда выгодно по производительности).
-
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} и тогда их не вывести, а в остальных случаях вывести.
-
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} и тогда их не вывести, а в остальных случаях вывести.
-
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} <a href="{$url}&order=type&asc=asc">↓</a> <a href="{$url}&order=type&asc=desc">↑</a></td> <td width=13% class="row_title">{$L_CITY} <a href="{$url}&order=city&asc=asc">↓</a> <a href="{$url}&order=city&asc=desc">↑</a></td> <td width=13% class="row_title">{$L_DISTRICT} <a href="{$url}&order=district&asc=asc">↓</a> <a href="{$url}&order=district&asc=desc">↑</a></td> <td width=13% class="row_title">{$L_STREET} <a href="{$url}&order=street&asc=asc">↓</a> <a href="{$url}&order=street&asc=desc">↑</a></td> <td class="row_title" nowrap>{$L_PRICE} <a href="{$url}&order=price&asc=asc">↓</a> <a href="{$url}&order=price&asc=desc">↑</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>
-
abushyk получил репутацию от Realtor в Настройка apps_realty_update_date_added
пункт 2. биллинг. а он у вас, кажется, включен.
-
abushyk получил репутацию от Helenblondi в код для баннера
Что бы был виден только на главной, код баннера нужно обернуть в
{if $REQUESTURIPATH == '' } {/if} что бы был под формой поиска, то в search_form.tpl в конец
-
abushyk получил репутацию от Realtor в Настройка apps_realty_update_date_added
1. Эта настройка применима ТОЛЬКО к ЛК. При ее включенности и изменениях объявления из других мест она не влияет.
2. Эта настройка отменяется включенностью Биллинга. Если Биллинг включен, то управлением изменением даты добавления занимается кнопка Поднять из биллинга.
-
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} Упрощая или усложняя данный пример можно хорошо развлечься. А если не ограничиваться только заголовком а взяться еще и за описания...
ПС. Писанины будет много, но тут следует учесть, что если реализовывать этот метод продуманно, то вся писанина будет только на этапе проектирования. Дальше оно будет работать само изредка требуя коррекции, например при добавлении новых разделов. Поэтому никоим образом не рекомендую это для сайтов, которые "только начались" а скорее для тех, кто уже сформировался и хочет просто избавиться от лишних текстов, которые не очень важны, но которые нужно писать.
ППС. Не стоит пытаться впихнуть невпихуемое. Если вы решите делать интеллектуальные заголовки на большое количество параметров с нелинейной логикой, то вполне возможно, что в шаблоне вы просто запутаетесь. В таком случае будет иметь смысл вынести формирования заголовка в функцию в самом коде шаблона. Но даже там основная логика останется схожей.
-
abushyk получил репутацию от DoobBY в Гадкие урлы (url, alias) в поиске
Я тут немного перестарался, хотя сам становился на эти же грабли. После запрета нужно еще добавить
Allow: /sitemap.xml?page=* Сайтмап может иметь постраничку и закрывать от роботов ее не нужно в отличии от остальных.
-
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" /> картинка удаления
По строкам не скажу какие номера. Єти картинки можно заменить на свои или даже на авесомовские иконки по вкусу. И там же уже подключить какой-то плагин для всплывающих тултипов.
-
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}
-
abushyk получил репутацию от Chernetskiy в Кнопка "Редактировать" на странице объекта
Суть в том, что если подключить файл стилей так как я аписал с указанием
media="print" то браузер будет использовать стили из єтого файла только ксли нажать кнопку Печать в браузере. Определив в нем некоторый класс, который будет иметь свойство
display: none; т.е. невидимость, мы получим эффкт, что при выводе в печать элементы с этим классом будут невидимы на страницы, но в то же время будут видны во всех остальных случаях.
Для реалии невидимость сразу можно вешать на breadcrumb-wrapper header-wrapper navigation footer-wrapper и форму поиска
Центральный контент менее однозначен. Для списков можно убирать правую колонку, для карточки в правой есть контакты. Но тут можно сделать ход конем, так как в стиля для печати можно не только указать, что скрыть, но и показать скрытое. Например мы вестаем карточку как обычно. Но делаем дополнительнй блок сразу под описанием с еще одним выводом контактов. И ставим на этот блок display:none; Теперь он у нас есть на странице, но не показан в браузере. Добавим єтому блоку класс printable и в файле стиле печати опишем его как
.printable { display: block !important; } из-за чего при печати этот блок будет показан. А правую колонку для печати можно скрыть совсем.
Если кто-то поймет эту логику, то спокойно сможет организовать вывод картинок для печати в виде нормальных миниатюр заместо пустого места от скриптовой галереи.
-
-
abushyk изменил репутацию Moses в Модальное окно авторизации
Я нашел, у меня это файл в шаблоне: login_register.tpl.html
-
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]
-
abushyk получил репутацию от Vampir155 в Баг в шаблоне (может и я постарался) и другое
Ошиблись в имени переменной. в словарь записали одну метку а в шаблоне поставили другую. исправил. посмотрите в ЛК должен быть уже манат.
-
abushyk изменил репутацию metrpro в Добавляем плагин fotorama в realia
Короче. Если фото 1шт или 0шт, то я не загружаю скрипты, не перегружаю страницу. Разметку вывода самих картинок трогать не нужно при этом.
-
abushyk получил репутацию от Realtor в Регистрация, авторизация, профиль пользователя.
нет пока этой странички. так что бы поправить. вшита в код.