Leaderboard
Popular Content
Showing content with the highest reputation since 09/22/18 in all areas
-
3 points
Скачивание фото одним архивом из объявлений
Helenblondi and 2 others reacted to Chernetskiy for сообщение в теме
Ну или вариант готового блока кнопок, под заголовок объявления: <div class="editblock"> <a title="На главную" href="/" class="btn btn-info"><i class="icon-white icon-home"></i></a> <a title="Назад" href="#" onclick="history.back();return false;" class="btn btn-info"><i class="icon-white icon-chevron-left"></i> Назад</a> {if $apps_pdfreport_enabled==1} <a title="Печать PDF" href="?format=pdf" class="btn btn-info"><i class="icon-white icon-print"></i></a> {/if} <a title="Печать" href="#" onClick="window.print()" class="btn btn-info"><i class="icon-white icon-print"></i></a> {if $photo|count>0} <a title="Скачать все фото" href="{$estate_folder}/imgzip/{$data.id.value}" class="btn btn-info"><i class="icon-white icon-share-alt"></i></a> {/if} {if $data.user_id.value eq $smarty.session.user_id} <a title="Редактировать" href="{$estate_folder}/account/data/?do=edit&id={$data.id.value}" class="btn btn-warning"><i class="icon-white icon-pencil"></i></a> <a title="Удалить" href="{$estate_folder}/account/data/?do=delete&id={$data.id.value}" class="btn btn-danger"><i class="icon-white icon-trash"></i></a> {/if} </div> Последние кнопки Редактировать и Удалить для удобства владельца объявления и показываются зарегистрированным - риэлтору, админу... кого определите в настройках. К стати, можете "Выгрузить все фото" переместить к показу не всем а туда-же, к зарегистрированным, если это платная услуга. -
2 points
Обновление system 4.1.8
ReatEstate and one other reacted to Дмитрий Кондин for сообщение в теме
Для обновления вам нужно сначала включить на сервере PHP 7.1 Затем обновить приложение third, после появится возможность обновить system и все остальное (обновите). Затем можно на сервере включать PHP 7.3, но можно и на 7.1 остаться. Из глобальных улучшений - внедрили поддержку blade-шаблонов, думаю вскоре выпустим новый шаблон на Blade, вместо устаревшего Smarty. Также в систему мы активно внедряем компоненты фреймворка Laravel. -
2 points
Миллион для Sitebill
Pavel88 and one other reacted to Дмитрий Кондин for сообщение в теме
Друзья! Sitebill участвует в гранте на 1 миллион рублей! Проголосуйте, пожалуйста! Мы на этот миллион так Sitebill обновим, что не узнаете ) https://kassa.yandex.ru/grant-project-des-743/ -
2 points
Автоматический перевод через Google Translate
Chernetskiy and one other reacted to Дмитрий Кондин for сообщение в теме
1. В редакторе форм нужно добавить для текстового поля или для строки поле для хранения языковой версии. Если это поле называется text, тогда для хранения английской версии нужно создать поле text_en 2. Получаем ключ Google Translation API https://cloud.google.com/translate/docs/getting-started Внимание! API перевода платное, вам нужно будет в гугле добавить информацию о способе платежей. 3. Включаем в настройках - Редактор перевода опцию Использовать мультиязычность (apps.language.use_langs) 4. Прописываем ключ Google Translation API в поле Google Translate API key получить (apps.language.google_translate_api_key) 5. Теперь при создании объявления можно заполнять только поле русского описания 6. Чтобы появился перевод - сохраните объявление и откройте его на редактирование снова 7. Теперь можно сохранять --------- Переводить можно любые поля textarea, safe_string - если добавлять к ним языковые постфиксы с нужным языком. -
2 points
Текстовый редактор для поля описание объекта
Realtor and one other reacted to TopRaN for сообщение в теме
ckeditor настраиваемый, вот описание по настройке либо тут . Самое главное смотрите какая стоит у вас версия -
2 points
Как Добавить Надпись VIP
m0r0z0v4 and one other reacted to TopRaN for сообщение в теме
тут подсказка -
2 points
Авторизация для сайтов и сервисов через Яндекс
Helenblondi and one other reacted to Дмитрий Кондин for сообщение в теме
Будем внедрять эту функцию. -
2 points
PageSpeed. Скорость загрузки сайта.
doma and one other reacted to Дмитрий Кондин for сообщение в теме
У нас появился чемпион по оптимизации скорости сайта - kvart.by Не знаю как, но они сделали 100! -
2 points
С Новым 2020 Годом!
TopRaN and one other reacted to Дмитрий Кондин for сообщение в теме
Пусть в этом году бизнес получит новую энергию и порадует вас хорошим доходом! -
2 points
Делаем правильный OpenGraph
Chernetskiy and one other reacted to TopRaN for сообщение в теме
<meta property="og:title" content="{if $meta_title != ''}{$meta_title}{else}Мой сайт{/if}"> <meta property="og:description" content="{if $meta_description != ''}{$meta_description}{else}{$data.text.value|truncate:200}{/if}"> <meta property="og:image" content="http{if $smarty.server.HTTPS ne ''}s{/if}://{$smarty.server.HTTP_HOST}/img/data/{$photo[0].normal}" alt="{$title}"> <meta property="og:type" content="website"> <meta property="og:type" content="http{if $smarty.server.HTTPS ne ''}s{/if}://{$smarty.server.HTTP_HOST}" /> <meta property="og:url" content="http{if $smarty.server.HTTPS ne ''}s{/if}://{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}"> <meta property="og:site_name" content="{$title}"> <meta property="og:logo" content="http{if $smarty.server.HTTPS ne ''}s{/if}://{$smarty.server.HTTP_HOST}/template/frontend/{$current_theme_name}/img/logo.png" alt=""> <meta property="og:locale" content="ru_RU"> в тег html <html xmlns:og="http://ogp.me/ns#"/> -
2 points
Как добавить должность и информацию?
doma and one other reacted to Дмитрий Кондин for сообщение в теме
Допустим у нас в таблице user мы добавили поле Должность и системное название этого поля jobtitle 1. Открываем файл /template/frontend/ipotekus/main/main.php Находим там функцию private function getAgents() { $ret = array(); $DBC = DBC::getInstance(); $query = 'SELECT COUNT( d.id ) AS _cnt, u.user_id, u.fio, u.phone, u.imgfile, u.mobile, u.email, g.name AS group_name FROM `' . DB_PREFIX . '_data` d LEFT JOIN re_user u USING ( user_id ) LEFT JOIN ' . DB_PREFIX . '_group g USING ( group_id ) WHERE u.group_id<>4 GROUP BY d.user_id ORDER BY _cnt DESC'; $stmt = $DBC->query($query); if ($stmt) { while ($ar = $DBC->fetch($stmt)) { $ret[] = $ar; } } return $ret; } Тут нам нужно поменять строчку запроса на такую (добавляем выборку jobtitle из таблицы) $query = 'SELECT COUNT( d.id ) AS _cnt, u.user_id, u.fio, u.phone, u.imgfile, u.mobile, u.email, u.jobtitle, g.name AS group_name FROM `' . DB_PREFIX . '_data` d LEFT JOIN re_user u USING ( user_id ) LEFT JOIN ' . DB_PREFIX . '_group g USING ( group_id ) WHERE u.group_id<>4 GROUP BY d.user_id ORDER BY _cnt DESC'; Теперь в шаблоне agents_list_on_main.tpl у нас будет доступна такая переменная внутри foreach цикла {$agentslist_item.jobtitle} Вы можете вписать эту переменную для вывода jobtitle Например, меняем эту строчку <p class="team-designation"><a href="#">Должность</a></p> На такую <p class="team-designation"><a href="#">{$agentslist_item.jobtitle}</a></p> -
2 points
Ускорение загрузки сайта
ReatEstate and one other reacted to dmpress for сообщение в теме
вот и повод есть)) оптимизируете людям сайт, по ходу оптимизации сделаете скрины с комментариями и разместите здесь - польза всем! -
2 points
Ускорение загрузки сайта
ReatEstate and one other reacted to dmpress for сообщение в теме
Ну, во-первых, форум для того и есть чтобы публиковать решения которые могут повторить другие пользователи. А во-вторых - вы не знаете какие настройки мне нужны, а какие нет. Как разработчики вы должны дать хотя бы список того, где могут быть тормоза и мы, как пользователи, уже сами будем включать/выключать и тестировать. В чем сложность-то? Сделайте скрины админки и прямо на скринах напишите что можно потестировать. Админки у всех одинаковые, зачем вам для этого доступ к моей админке? Вон Chernetskiy выше описал как легко оптимизируется Вордпресс. Я так понял это намёк - зачем вам Сайтбилл, переходите на Вордпресс... -
2 points
Ускорение загрузки сайта
Pavel88 and one other reacted to dmpress for сообщение в теме
Получается у всех работает медленно и все этим довольны?)) Ребята, действительность такова, что в конкурентных нишах медленных сайтов в топе поисковиков уже нет или скоро не будет. Гугл вообще на первое место поставил мобильную выдачу, если у вас показатель по тесту скорости загрузки от гугла для мобильников меньше 50 - вылет из топа дело времени... это если вы там вообще есть... Т.е. оптимизировать и продвигать медленный сайт - бесполезная трата денег. Теоретически даже не оптимально собранный движок может работать быстро при правильно настроенном окружении. Как примеры, битрикс, тяжелые шаблоны вордпресс и тп. Уважаемые разработчики - как правильно настроить окружение для быстрой работы сайтбилла? Или это не возможно? Или настолько дорого, что теряется всякий смысл? -
2 points
Турбо страницы отладка
Helenblondi and one other reacted to Chernetskiy for сообщение в теме
Вы наверное плохо представляете, для чего создан канал Турбо в Яндексе. А смысл в том, чтобы посетителю поисковика в сокращенной форме предоставить свежую и актуальную информацию. Тащить туда всю базу недвижимости нет смысла, поскольку поисковик не станет засорять канал только вашими объектами. Посетителей много, у всех свои интересы и их интересует не только недвижка, кому-то интересны авто, кому-то кройка и шитьё, кому-то тряпки, игры и т.п. Соответственно, описковик, в соответствии с интересами пользователя выдает ему варианты турбо-страниц от разных источников. Публикация тубро-новостей имеет приоритет и позволяет пользователю подписаться на ваш канал. Вы в свою очередь, публикуете новость, например, лезем на ЦИАН, качаем оттуда обзор рынка загородной недвижимости за последний месяц-квартал по деревне Гадюкино, переписываем его на свой лад, статьей на 300 слов, вставляем в текст пару ссылок на раздел с загородной недвижимостью по Гадюкино (одну на дома, вторую на участки, может еще третью на предложения девелоперов на вашем сайте), добавляем 1-2 картинки и публикуем новость. Эта новость будет Яндексом предложена всем в Гадюкино, кто ищет загородку, соответственно по ссылкам народ будет заходить на ваш сайт и искать конкретику. В приницпе, это будут заинтересованные (горячие) клиенты, с которыми можно работать. Сама по себе публикация новостей поднимает посещаемость на сайте, а в варианте Турбо вы получаете еще и целевую аудиторию. -
2 points
бесплатный сервис рассылок и пуш уведомлений
Chernetskiy and one other reacted to Дмитрий Кондин for сообщение в теме
Каюсь, есть у мена такое - пишу "в будущих версиях" на автомате, а что я еще могу сказать ) Ну теперь начинаю думать, что пуши с большей вероятностью появятся. -
2 points
Установка метрики, гугл-аналитики и вебмастера на сайт
Realtor and one other reacted to Chernetskiy for сообщение в теме
Относительно п. 2, пожалуй многим будет удобнее в редакторе шаблонов создать под счетчики отдельный шаблон, например counter.tpl, куда вставить различные коды счетчиков, может еще что-нибудь - чаты, и т.п. со сторонних ресурсов, чтобы потом проще было искать и не накосячить в коде футера... {literal} сюда пихаем коды {/literal} После чего подключить этот шаблон в футер, например в realia удобно будет в конце, примерно здесь: ... <div class="span6 share"> <div class="content"> {include file='counter.tpl'} <ul class="menu nav"> <li class="first leaf"><a href="https://plus.google.com/+Realty-centrumRu" class="google" target="_blank">Google+</a></li> <li class="leaf"><a href="https://www.facebook.com/RealtyCentrum" class="facebook" target="_blank">Facebook</a></li> <li class="leaf"><a href="https://twitter.com/Realty_Centrum" class="twitter" target="_blank">Twitter</a></li> <li class="leaf"><a href="https://vk.com/realty_centrum" class="vimeo" target="_blank">ВКонтакте</a></li> <li class="leaf"><a href="https://ru.linkedin.com/in/chernetskiy" class="linkedin" target="_blank">LinkedIn</a></li> <li class="last leaf"><a href="https://www.instagram.com/realtycentrum/" class="flickr" target="_blank">Instagram</a></li> </ul> </div> </div> </div> </div> </div> </div> В данном случае, даже если счетчик будет видимым, он будет показываться в самом низу сайта в середине. -
2 points
Вывод информации об объекте в realty_grid_list.tpl
Realtor and one other reacted to Дмитрий Кондин for сообщение в теме
У вас переделан main.php - поэтому для него нужно делать собственный обработчик. Вам в раздел фриланса. -
1 pointНаверное большое количество объектов и серверу не хватает время на его обработку.
-
1 point
Отображение объекта на карте "на лету"
metrpro reacted to Дмитрий Кондин for сообщение в теме
Такое реализовано в первых версиях шаблона agency. Смотрите вложение realty_view.tpl -
1 point1. Вы используете модальное окно у которого имеется id="myModal". Дело в том что этот id присваевается одному элементу - первому, а для остальных нет. Id должно иметь уникальное значение и оно должно быть в единственном экземпляре. свой код замените на этот <button type="button" class="btn btn-default btn-lg" data-toggle="modal" data-target="#myModal{$grid_items[i].id}">Контакты</button> <!-- Modal --> <div class="modal fade" id="myModal{$grid_items[i].id}" role="dialog"> <div class="modal-dialog"> <!-- Modal content--> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h4 class="modal-title">Контакты</h4> </div> <div class="modal-body"> <p>{$grid_items[i].phone}</p> </div> </div> </div> </div>
-
1 point
-
1 pointДаже удивительно, что никто не сравнивает тут свои ИКСы ))) Кстати, смотрю - на cmsmagazine заменили ТИЦ на ИКС - в первой 20ке для нашего sitebill 3 созданных мною сайта!
-
1 point
Шаблон Realia , лист обьявлений
Даниэль reacted to Chernetskiy for сообщение в теме
Уточните, вам надо чтобы по умолчанию объявления открывались в виде блоков (как на скрине)? Для этого зайдите в Настройки -> Общие, в позиции: Тип списка объявлений (list - обычная таблица, thumbs - div-блоки(grid_type) пропишите нужное значение, соответственно thumbs и всё будет по феншую. -
1 point
Обратная связь, персональные данные и штрафы
Дмитрий Кондин reacted to Chernetskiy for сообщение в теме
Закинул в раздел Файлы пакеты документов по обработке персональных данных в агентстве. Если кому интересно, качайте, заполняйте, распечатывайте и пользуйтесь. Предполагается, что частный риэлтор или агентство недвижимости в лице ИП или ООО являются агентами по обработке персональных данных и должны быть зарегистрированы в Роскомнадзоре. Их, в свою очередь, как раз эти документы и будут интересовать. -
1 pointВ фильтр: <div class="col-md-2"> <label>Поиск по группе</label> {$users_groups_list} {if $country_list ne ''} {$country_list} {/if} </div> А в /home/uqirahbm/public_html/template/frontend/ВАШ ШАБЛОН/main/main.php $this->getNewest(); $groups=array(); $DBC=DBC::getInstance(); $query='SELECT group_id, name FROM '.DB_PREFIX.'_group WHERE group_id NOT IN (1,4,19,26,27,28,33) ORDER BY name'; $stmt=$DBC->query($query); $select='<option value="">Не важно</option>'; if($stmt){ while($ar=$DBC->fetch($stmt)){ $groups[$ar['group_id']]=$ar['name']; $select.='<option value="'.$ar['group_id'].'"'.(intval($_GET['group_id'])==$ar['group_id'] ? ' selected="selected"' : '').'>'.$ar['name'].'</option>'; } } $this->template->assign('users_groups_list', '<select name="group_id">'.$select.'</select>'); $this->template->assign('users_groups', $groups); (В скобках запрещенные к показу группы) А если поиск по пользователям то в фильтре: <div class="col-md-2"> <label>Поиск по сотруднику</label> {$users_users_list} <!--select name="user_id"><option value="">Не важно</option></select--> </div> А в main.php^ $users=array(); $DBC=DBC::getInstance(); $query='SELECT user_id, fio FROM '.DB_PREFIX.'_user WHERE group_id NOT IN (1,4,18,19,26,27,32,38) ORDER BY fio'; $stmt=$DBC->query($query); $select='<option value="">Не важно</option>'; if($stmt){ while($ar=$DBC->fetch($stmt)){ $users[$ar['user_id']]=$ar['fio']; $select.='<option value="'.$ar['user_id'].'"'.(intval($_GET['user_id'])==$ar['user_id'] ? ' selected="selected"' : '').'>'.$ar['fio'].'</option>'; } } $this->template->assign('users_users_list', '<select name="user_id">'.$select.'</select>'); $this->template->assign('users_users', $users); Вот мой файл: main.php
-
1 point
Мультиязычный сайт
fedor reacted to Chernetskiy for сообщение в теме
А что именно вы собрались удалять из индекса "с автопереводом"? Бесплатные мультиязычные плагины осуществляют автоперевод по приниципу что есть в окне браузера, то и переводим. Физически страница сайта остается в единственном варианте и на единственном языке, нет никаких дублей а соответственно нет их индексации. Автоперевод осуществляется в кэш или в темп-файл браузера после загрузки страницы в браузер в вариантах: либо по настройке языка браузера (автоматом, открыл турок - перевелось на турецкий и т.п.) или по команде пользователя - выбором нужного языка в меню сайта. В платных версиях мультиязычных плагинов уже есть возможность вручную или автоматически создавать дополнительные страницы на нужных языках либо на основе поддомена - en.site.ru/..., либо на основе отдельной папки - site.ru/en/... (смотри настройки плагина). В частности Гугл предоставляет услугу транспорта доставки интеллектуальных переводов, т.е. к вашему сайту автоматически будут созданы вышеуказанные языковые варианты сайта и пользователю будут доставляться не технические и кривые, а качественные переводы исходных страниц сайта на нужном ему языке. Такие страницы сайтов хранятся в облаке, привязаны к вашему сайту и индексируются поисковиками как реальные страницы сайта на разных языках, что приветствуется Гуглей и Яшей. Как работает бесплатный вариант плагина можно посмотреть например на сайте питомника Шпицов, внизу справа на сайте плавает значок с флажком и надписью Русский, кликните и выберите другой язык из списка и получите результат хоть на языке Бахаса Мелау (Малазия) -
1 pointВыкинуть Денвер и поставить нормальный виртуальный сервер. OpenServer.
-
1 point
Автоматическая выгрузка в Директ. Возможно ли?
kkkv39 reacted to Chernetskiy for сообщение в теме
Да особо никакую, хотя возможностей полно (Afy, Агентон, Земформат, SPN24 и т.д.). -
1 point
Форма Поиска
doma reacted to Chernetskiy for сообщение в теме
Параметром depended вы ссылаетесь на родительский справочник, он должен быть единственным, перечисления не допускаются. Параметром linked вы подключаете подчиненные справочники, их может быть несколько. Например, при подчиненности справочников Страна - Регион - Район - Город - Улица вы организуете соответствующие связи: для Страны (country_id) через linked=region_id,country_id привязываем Регионы для Региона (region_id) через depended=country_id привязываем родителя - Страны и через linked=city_id,region_id;raion_id,region_id;direction_id,region_id привязываем подчиненные Города, Районы (областные, кастомный справочник) и Шоссе (кастомный) для Районов (областных - raion_id) через depended=region_id привязываем родителя - Регионы и через linked=city_id,raion_id привязываем подчиненные Города для Городов (city_id) через depended=raion_id привязываем родителя - Районы (областные) и через linked=district_id,city_id;street_id,city_id;metro_id,city_id привязываем подчиненные справочники Районов города, Улиц и Метро и т.д., соответственно в кастомных справочниках (Районы, Шоссе и т.п) тоже не забываем прописать связь на родителя (depended). в конечных справочниках linked соответственно не указывается, т.к. ничего в подчинении уже нет. -
1 point
Работа с клиентами (элемент CRM) тип данных client_id
Realtor reacted to ankonsul64 for сообщение в теме
Я хочу завести в базу клиента -покупателя. и чтобы определенные параметры его запроса - являлись фильтром базы квартир! таким образом, чтобы после добавления клиента, программа формировала список подходящих ему объектов, а я в свою очередь могла бы удалять или добавлять еще их. Таким образом для каждого клиента будет сформирован "подбор" по которому уже свободно распечатав- можно побежать на показы. Есть какое-то реальное предложение по этому поводу? или может есть готовый модуль? -
1 point
Верхнее меню
DoobBY reacted to Дмитрий Кондин for сообщение в теме
Покажите код, который вы вставили? Вы так меню создавали? http://wiki.sitebill.ru/index.php?title=Меню В вашем случае код должен быть такой <ul class="menu nav"> {section name=i loop=$fastmenu} <li><a href="{$fastmenu[i].url}">{$fastmenu[i].name}</a></li> {/section} </ul> -
1 point
Уникальное поле
Realtor reacted to Дмитрий Кондин for сообщение в теме
Сделайте уникальный индекс прямо в базе через phpmyadmin. Например, для поля email делаем его уникальным так: create unique index email_idx on re_user(email); Тогда mysql точно не пропустит дублей. Но если у вас уже насорило дублями, то предварительно придется почистить от дублей вручную. -
1 point
Мультиязычный сайт
fedor reacted to Chernetskiy for сообщение в теме
На своих сайтах на Wordfpress для мультиязычности сайта использую плагин Gtranslate. Этот плагин может использоваться на Joomla, Drupal, Magento и на обычных HTML-сайтах, что думаю для Sitebill вполне подойдет (не пробовал). Плагин работает на Javascript. В бесплатной версии плагин осуществляет машинный перевод на сотню языков - пользователь только выбирает язык, на который нужно перевести сайт или в настройках можно указать, чтобы пользователю автоматически сайт открывался на языке его браузера. При этом переводы сайта не сохраняются, ссылки страниц сайта не изменяются. В платной версии есть дополнительные плюшки - можно создавать версии сайта на соответствующем языке через подкаталоги или поддомены - соответственно mysite.com/ru/ или ru.mysite.com/. Перевод не машинный а через "нейронную сеть" Гугла, в связи с чем точность и корректность переводов значительно выше и практически сравнима с переводом от человека - переводчика. Соответственно это плюс для SEO, поисковики реально видят разноязычные версии сайта для конкретной аудитории. Переводы сохраняются и могут быть скорректированы - используется сеть доставки переводов. Полный функционал можно потестировать 15 дней, а дальше за денежку, по тарифу в зависимости от ваших потребностей. -
1 pointДело в другом, в этой теме мне TopRaN помог разобраться с моей проблемой таким кодом: <!-- Скрываем Кадастровый номер и квартиру --> {elseif $data_item.name eq "apartment" && $data_shared.user_id.value!=$smarty.session.user_id} {elseif $data_item.name eq "cadastral_number" && $data_shared.user_id.value!=$smarty.session.user_id} <!-- Скрываем Кадастровый номер и квартиру --> Теперь кадастровый номер и номер квартиры виден только автору обьявления, а админу не виден. В панели управления видимость стоит для групп "Админ" и "Агенты". Для чего это было сделано - Агенты не должны видеть чужие (других агентов) кадастровые номера.
-
1 point
Где находятся страницы биллинга
doma reacted to Дмитрий Кондин for сообщение в теме
\apps\system\lib\system\user\account.php function getTopMenu () { $rs = '<br><a href="'.SITEBILL_MAIN_URL.'/account/balance/?do=add_bill">Пополнить счет</a><br>'; $rs .= '<br><i>* '.sprintf(Multilanguage::_('AD_PLACEMENT_COST','system'),$this->getConfigValue('advert_cost'), $this->getConfigValue('ue_name')).'</i>'; return $rs; } -
1 point
Где находятся страницы биллинга
doma reacted to Дмитрий Кондин for сообщение в теме
Форма баланса пользователя тут /apps/system/lib/system/user/account.php function main () { .... Файлы биллинга тут /apps/billing/ Но при обновлении ваши изменения будут стерты. -
1 point
Сетка со списком объявлений.
doma reacted to Дмитрий Кондин for сообщение в теме
Это у нас прямо в коде тут \apps\system\lib\system\user\data\user_data.php function getTopMenu() -
1 point
как вставить текст в нижнее меню
metrpro reacted to Дмитрий Кондин for сообщение в теме
В /template/frontend/ваш_шаблон/main/main.php private function getNewest(){ require_once SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/frontend/grid/grid_constructor.php'; $grid_constructor = new Grid_Constructor(); $params['order'] = 'date_added'; $params['asc'] = 'desc'; $params['page_limit']=3; $params['page']=1; $res = $grid_constructor->get_sitebill_adv_ext( $params, false, false ); //echo count($res); //print_r($res); $this->template->assign('new_grid_items', $res); } $params['page_limit']=3;// сколько выводить новых -
1 point
HELP!Редактирование формы поиска на главной
Даниэль reacted to Дмитрий Кондин for сообщение в теме
/template/frontend/realia/standart_search_form.tpl Напишите вместо {$L_TYPE} свое слово "раздел объявлений" -
1 point
убрать вход выход с сайта шаблон Realia
Даниэль reacted to Chernetskiy for сообщение в теме
Елена, это вылазит меню ЛК, оно будет появляться только у тебя, когда авторизуешься в админке. В принципе, можно убрать содержимое user_menu.tpl, или убрать из main.tpl вот этот кусок: <div class="account pull-right"> <ul class="nav nav-pills"> {if $smarty.session.user_id eq ''} <li><a href="#" data-toggle="modal" data-target="#prettyLogin">{$L_LOGIN_BUTTON}</a></li> <li><a href="#" data-toggle="modal" data-target="#prettyLogin">{$L_AUTH_REGISTRATION}</a></li> {else} {if isset($user_menu)}{$user_menu}{/if} <li><a href="{$estate_folder}/logout/" >{$L_LOGOUT_BUTTON}</a></li> {/if} </ul> </div> который выводит кнопки и меню ЛК и кнопку "выход", если авторизован. Как я понимаю, часть из этого кода ты уже удалила а кусок остался. -
1 pointЕсли брать смый общий случай, то я иногда делаю в шаблоне вот так:{if $some_phone_number != '' && $some_phone_number|strlen==12}{$some_phone_number|regex_replace:'/(\d{3,3})(\d{2,2})(\d{3,3})(\d{2,2})(\d{2,2})$/':'+${1} (${2}) ${3}-${4}-${5}'}{/if}Самая примитивная регулярка которая раздирает исходных набор цифр на куски и форматирует из кусочков нужное отображение. Для mobilephone, которые однотипны и имеют равную длину и числовую составляющую, работает на ура. Для прочих номеров возможно больше вариантов из-за необходимости очистки исходного номера от мусора и разной длины номеров из-за свободной формы записи.
-
1 pointМимо. Это вы выковырнули блок агента, который разместил объявление. Блок списка агентов гнездится в файле /template/frontend/realia/agents_list.tpl Если его нужно переместить окончательно, что бі он нигде больше не выводился кроме как на главной, то можно взять его и вставить в /template/frontend/realia/main.tpl внутрь условия {if $REQUESTURIPATH == '' } ... {/if} или в центральную часть в /template/frontend/realia/layout_basic.tpl в виде {include file="agents_list.tpl"} При этом нужно будет удалить все включения этого блока в остальных файлах. И, скорее всего понадобится правка стилей, так как этот блок рассчитан на вывод в вертикальную узкую колонку. Если же его нужно продублировать, тогда лучше сделать отдельный файл под то место, где он будет стоять и аналогично описанному выше вставить его в нужный шаблон
-
1 point
Где править блок с тремя: Добавить, Снять, Ипотека
Даниэль reacted to Chernetskiy for сообщение в теме
Смотря что править, если код, то это в mail.tpl, этот кусок кода: <div class="bottom-wrapper"> <div class="bottom container"> <div class="bottom-inner row"> <div class="item span4"> <div class="address decoration"></div> <h2><a>{$LT_ADD_YOUR_OWN}</a></h2> <p>{$LT_ADD_YOUR_OWN_DESC}</p> <a href="{$estate_folder}/add/" class="btn btn-primary">{$LT_VIEW_DETAILS}</a> </div> <div class="item span4"> <div class="gps decoration"></div> <h2><a>{$LT_RENT_FLAT}</a></h2> <p>{$LT_RENT_FLAT_DESC}</p> <a href="{$estate_folder}/getrent/" class="btn btn-primary">{$LT_VIEW_DETAILS}</a> </div> <div class="item span4"> <div class="key decoration"></div> <h2><a>{$LT_MORTGAGES}</a></h2> <p>{$LT_MORTGAGES_DESC}</p> <a href="https://unicom24.ru/ipoteka_iframe/?key=psrgeownkatwkimeumbjrrfotnbzxjkc" class="btn btn-primary" target="_blank">{$LT_VIEW_DETAILS}</a> </div> </div> </div> </div>а если текст, то надо лезть в словарь шаблона Realia (//template/frontend/realia/language/ru/dictionary.ini) и править системные фразы LT_ADD_YOUR_OWN - заголовок Продать LT_ADD_YOUR_OWN_DESC - описание LT_RENT_FLAT - заголовок Аренда LT_RENT_FLAT_DESC - описание LT_MORTGAGES_DESC - заголовок Ипотека LT_MORTGAGES_DESC - описание -
1 pointА как вы хотели, вы на этом деньги заработаете, мы тоже кушать хотим. Да и некоторые функции, которые вы хотите, нужно писать.
-
1 pointИтак, если у нас осталось место в навигаторе где изначально выводятся разделы структуры, у нас может возникнуть желание добавить туда что-то от себя. Для формирования этого блока служит функция шаблона реалия getTemplateMenu, которая пользуется услугами декоратора меню. Логи этого декоратора довольно сложна, именно поэтому мы не стали выдавать его в виде шаблона, а свели до $navmenu. Суть задачи - позволить нехитрым набором опций сообщать декоратору меню, что у куда вставить нам в нашу менюху. Я предусмотрел вставку двух типов: 1) вставка простой ссылки 2) вставка блока с выпадающими подпунктами, которые формируются на базе одного из меню из раздела Контент - Меню. А) Для начала улучшим функцию getTemplateMenu. Находим ее в /template/frontend/realia/main/main.php и заменяем на http://pastebin.com/NpibVwer Главное отличие, что она теперь умеет понимать переданные нами параметры и пытается кешировать в сессию некоторые данные. Т.е. если вы укажете ей строить дополнительный пункт на базе какой-то менюшки, то она не будет на всех переходах требовать его от бд, а возьмет один раз и запомнит на всю вашу сессию. Б) Параметры функции. Что бы указать чем и где дополнить нам меню нужно указать функции параметры. Параметры указываются в виде массива $menues=array( array( 'id'=>25, /*ID меню из Контент - Меню. Если указать ID не существующего в данный момент Меню, то получится просто пункт с меню, без выпадающего блока, тогда данный пункт даже не буде. Если нужно навставлять ссылок, то просто ставьте там 10000 и дальше*/ 'title'=>'О нас', /*Выводимая надпись на пункте*/ 'position'=>'behind',/*Расположение относительно пунктов Структуры. Если не указано или не behind, то after - в конце*/ 'href'=>'/somelink/'/*Ccылка на корневом пункте. Если не указать, то будет якорь (#), те неактивная ссылка чисто для группировки*/ ), array('id'=>23,'title'=>'О вас','position'=>'after','href'=>'http://dadada.ru')); Например, нам нужно поставить в верхнее меню следующее: - в самом начале ссылку на главную - после нее ссылку на отзывы /review - в конце подключить выпадающий список из Меню - Полезная информация с ид в БД 215. Сотв. наша конфигурация буде иметь вид $menues=array(array('id'=>0, /*0-хитрое значение. Оно может быть только в одном пунке и на него автоматом ставится ссылка на корень сайта*/ 'title'=>'Главная','position'=>'behind'),array('id'=>1000, /*поставили 1000 так как такого пункта у нас в меню нет*/ 'title'=>'Отзывы','position'=>'behind','href'=>'review'),array('id'=>215, /*а такое меню есть и мы его запросили*/ 'title'=>'Полезно','position'=>'after')); В) Как это все включить. В файле /template/frontend/realia/main/main.php находим вызов $this->template->assert('navmenu', $this->getTemplateMenu()); И меняем его на $menues=array(array('id'=>0,'title'=>'Главная','position'=>'behind'), array('id'=>1000,'title'=>'Отзывы','position'=>'behind','href'=>'review'), array('id'=>215,'title'=>'Полезно','position'=>'after')); /*наш набор пунктов*/ $this->template->assert('navmenu', $this->getTemplateMenu($menues)); /*тут мы его передали в декоратор*/ В результате получаем
-
1 point/apps/system/js/realtymap.js 1. Находим this.setDefaultIconSize=function(size){this.markersVariants._default.size=size;};добавляем после нее this.setDefaultIconOffset=function(offset){this.markersVariants._default.offset=offset;}; 2. Далее находим initJSON: function(el, datalisting, type, options){ ... if(options.marker_size !== undefined){ self.setDefaultIconSize(options.marker_size); } ...}После if(options.marker_size !== undefined){...} добавляем if(options.marker_offset !== undefined){self.setDefaultIconOffset(options.marker_offset);}3. Там где мы передавали параметры кастомного маркера RM.initJSON('map', loc_objects, map_type, {marker_icon: estate_folder+'/template/frontend/realia/img/my_marker.png', marker_size: [15, 20], yandexMapType: 'yandex#map' });добавляем еще один параметр - оффсет нашего маркера marker_offset: [-7, -20] (смещение "ножки" или точки указания маркера относительно верхнего левого угла картинки). RM.initJSON('map', loc_objects, map_type, {marker_icon: estate_folder+'/template/frontend/realia/img/my_marker.png', marker_size: [15, 20], yandexMapType: 'yandex#map', marker_offset: [-7, -20] });Обычно, для маркеров у которых "ножка" по центру нижней грани картинки, это половина ширины картинки и высота картинки со знаками минус.
-
1 pointВ realty_grid.tpl есть кусочек запуска карты $(document).ready(function(){var RM=new RealtyMap();RM.initJSON('map', loc_objects, map_type);});Рисуем свою иконку в нужный размер. Грузим ее в шаблон в папку с картинками, например в /template/frontend/realia/img/my_marker.png Делаем загрузку маркера дополнив существующую строку RM.initJSON('map', loc_objects, map_type, {marker_icon: estate_folder+'/template/frontend/realia/img/my_marker.png', marker_size: [42, 57]});вместо [42, 57] указываем размеры нового маркера в пикселях [ширина, высота] Аналогично можно поступить в любом шаблоне, где есть запуск карты через интерфейс var RM=new RealtyMap();
-
1 point
Вопрос по title у странице товара(квартиры)
doma reacted to Дмитрий Кондин for сообщение в теме
Код генерации title тут /apps/system/lib/frontend/view/kvartira_view.php protected function getMetaData($form_data, $hasTlocation=false, $tlocationElement=''){ require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/admin/structure/structure_manager.php'); $Structure_Manager = new Structure_Manager(); $category_structure = $Structure_Manager->loadCategoryStructure(); $title=''; $meta_title=''; $meta_description=''; $meta_keywords=''; $params['topic_id']= $form_data['topic_id']['value']; $title_parts=array(); if($hasTlocation){ $title_parts[]=$this->get_category_breadcrumbs_string( $params, $category_structure, SITEBILL_MAIN_URL.'/' ); if($form_data[$tlocationElement]['tlocation_string']!=''){ $title_parts[]=$form_data[$tlocationElement]['tlocation_string']; } if(0!=(int)$form_data['price']['value']){ $title_parts[]=number_format($form_data['price']['value'],0,',',' '); } if(!empty($title_parts)){ $title=implode(', ', $title_parts); } }else{ $title_parts[]=$this->get_category_breadcrumbs_string( $params, $category_structure, SITEBILL_MAIN_URL.'/' ); if($form_data['city_id']['value_string']!=''){ $title_parts[]=$form_data['city_id']['value_string']; } if($form_data['street_id']['value_string']!=''){ $title_parts[]=$form_data['street_id']['value_string']; } if(0!=(int)$form_data['price']['value']){ $title_parts[]=number_format($form_data['price']['value'],0,',',' '); } if(!empty($title_parts)){ $title=implode(', ', $title_parts); } } if($form_data['meta_title']['value']==''){ $meta_title=$title; }else{ $meta_title=$form_data['meta_title']['value']; } if($form_data['meta_description']['value']!=''){ $meta_description=$form_data['meta_description']['value']; } if($form_data['meta_keywords']['value']!=''){ $meta_keywords=$form_data['meta_keywords']['value']; } return array( 'title'=>$title, 'meta_title'=>$meta_title, 'meta_description'=>$meta_description, 'meta_keywords'=>$meta_keywords ); } -
1 pointПродолжаю отдельными постами, так как исчерпал лимит на картинки в одном сообщении )) 4.1. Секции. Не буду давать расширенного описания, скажу только, что все идентично как для корпусов. Таблица csection и поля csection_id, name, ckorps_id (по таблице ckorps) В принципе для секций можно было бы установить двойную зависимость - указывать принадлежность секции к корпусу и к ЖК. Для некоторых случаев это оправдано (особенено если делается полноценное приложение), но в нашем случае, когда необходимо лишь поразграничивать принадлежности и сам корпус и ЖК будет указан в свойствах недвижимости, такая связка будет избыточной. В итоге 5. Внедрение в недвижимость Сущности у нас готовы, можно приступать к привязке их на объявление. Нам необходимо добавить три свойства в нашу таблицу data - ЖК, Корпус и Секция. Все они будут добавляться полями типа select_by_query, что бы мы могли сформировать их списки в элементах выбора из соответствующих таблиц. Носить имена будут эти элементы czhilcom_id, ckorps_id и csection_id Если теперь мы перейдем в форму добавления объявления мы увидим, что наши новые три поля уютно прописались в форме в виде привычных списков выбора. Но если их поразворачивать, то вы увидите, что они вмещают все варианты из своих таблиц и не реагируют на состояние "родительского" элемента. Например выбор ЖК никак не отражается на содержимом списка корпусов. Приступаем к наладке связей. 6. Связывание Основой для связывания служит принцип связанных элементов формы - http://wiki.sitebill.ru/index.php?title=%D0%A1%D0%B2%D1%8F%D0%B7%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D1%8B Нам необходимо в рамках одной формы указать элементам на какие другие элементы они влияют в форме и от каких зависят. Например - ЖК. От состояния этого элемента зависит возможный список выбора в элементе Корпуса. Эта зависимость описывается какЭто значит, что элемент, в котором мы выбираем название ЖК связан с элементом с системным именем ckorps_id (элемент выбора Корпуса ЖК), а ключем, который внутри Корпуса соответствует жилому корпусу является значение из поля czhilcom_id модели Корпуса. Если взлянете выше, то это значение в модели Корпуса у нас является идентификатором ЖК, к которому привязан Корпус.Больше ЖК у нас ни на что не влияет, потому и других параметров нет. Далее Корпус. Корпус, аналогично ЖК влияет на "следующий" элемент - Секцию. Но, кроме этого, он еще должен знать от какого элемента зависит сам - это необходимо для формирования адекватного списка значений элемента Корпус, но не тогда, когда сделан выбор конкретного ЖК, а при загрузке формы. Например, если вы открыли на редактирование объявление в котором ЖК был указан как Элитный, тогда в списке Корпусов вполне ожидаемо окажется уже готовый список корпусо ЖК Элитный. linked - описывает зависмость когда элемент влияет на что-то.depended - когда что-то влияет на элемент И, наконец, Секция. Самый простой элемент. Он ни на что не влияет, но на него влияет Корпус. Что и видно из параметров. Нет ничего страшного, если вы ничего не поняли про связи с первого раза. Это нормально, Я гарантирую это. Если теперь вы попробуете загрузить форму добавления объявления, вы видите, что у вас доступен на выбор только элемент ЖК, а остальные будут подгружены только после выбора соответствующего родительского. Для того, что бы увидеть этот эффект в Настройках необходимо включить параметр Настройки - Дополнительно - Off system Ajax 7. Эпилог Ай, у меня не работают элементы выбора географии. Что делать?... Тут все ожидаемо. Изначально принцип связанных элементов предназначался как-раз для географических элементов, что бы вывести из кода движка жесткие зависимости Страна-Регион-Город-Район\Улица и иметь более широкую возможность настройки своих связей. А так же, иметь возможность введения промежуточных элементов (Страна-Регион-Субрегион-Город), которые разрывали бы существующие связи, заложенные в код Сайтбилля. Именно поэтому опция Off system Ajax отрубает всю систему заложенных связей. Возможно это слишком кардинально и стоило бы предусмотреть ступенчатую систему, когда подключение пользовательских связанных элементов регулировалось бы одной настройкой, а отключение привычной связки от Страны к Улице другой. На данный момент четкого мнения у меня пока нет. Для себя я решил эту проблему навеской связей на географические элементы в виде, аналогичном системным правилам. Т.е.country_idlinked region_id,country_id region_idlinked city_id,region_iddepended country_id city_idlinked street_id,city_id;district_id,city_iddepended region_id district_idlinked mkrn_id,district_iddepended city_id street_iddepended city_id mkrn_iddepended district_id 8. Offtop С другой стороны, даже этот способ немного избыточен. Если Город является дочерним к Региону, а Регион к Стране, то хранение всех трех значений для объявления - это "лишние" данные, хотя при организации поиска они весьма кстати. Суть в том, что географические данные вполне возможно хранить в виде, схожем со структурой и получать к ним доступ более "человечным" путемНо в этом случае остается так же много вопросов связанных с совместимостью с многими приложениями, принципом организации смой геоструктуры (ведь если заструктурить географию от страны до улиц - это может стать неподъемным грузом, а если закончить городом, то не совсем понятно, как вести связь дальше к улицам, которые должны таки быть привязаны к городам или чему-то наследному от них). В общем идея у нас полно, была бы возможность все реализовать)