Надо уточнять у Дмитрия. Возможно так и задумано. Возможно нет. Биллинг не смотрел, руки не доходили . Скорее всего выделение цветом только у випа, остальные наверное просто подымают объявление в таблице .
Добрый день! Сразу же хочется поблагодарить разработчиков CMS Sitebill за столь гибкую и хорошую CMS для агентств недвижимости, а также за адекватную, полезную помощь и поддержку!
У нашей студии большой опыт работы с проектами для недвижимости, и даже есть собственная CMS заточенная под эту область, но Sitebill в последнем проекте показал свои сильные стороны.
Хочется рассказать о нашем новом проекте - сайте агентства недвижимости "Академия м2" http://www.akademiyametrov.ru, и особенно о тех модулях и нововведениях, которые мы использовали для Sitebill при работе над ним, потому как считаем, что они будут полезны всему сообществу:
------------------------------------------
0. Сайт сверстан на Twitter Bootstrap 3. Пока мы не видели новых проектов на Sitebill с этим css-фреймворком. Верстка велась на основе шаблона agency. В целом, подключение CSS и JS Bootstrap 3 не вызвало больших проблем.
1. Написали свой модуль краткой Заявки в свободной форме! По-умолчанию, в CMS сделана большая, громоздкая форма заявки на аренду и покупку недвижимости. Мы же, по своему опыту знаем, что форма должна иметь как можно меньше полей для заполнения посетителем - конверсия выше будет. Модуль сделан в виде одного php-скрипта (дочитайте до конца и узнаете как его получить!). Данные отправляются на почту и появляются у админа в разделе "Заявки на аренду". Поэтому была написана форма всего с 4 полями, которая выводится в модальном окне bootstrap 3. Отправка данных сделана через ajax в наш скрипт simple-order.php. А в скрипте просто заносится данные в таблицу:
$query="INSERT INTO re_data_get_rentSET name='".$name."', phone='".$phone."', more='".$message." (".NOW.")', date_added='".TIMESTAMP."'";
2. Слайдер. Слайдер - это краеугольный камень презентационных сайтов, к коим относятся и сайты по недвижимости. Слайдер на главной странице сделан на основе верстки модуля/шаблона right_special.tpl и подключен к js-библитеке Sly slider. Доработки: - корректная обрезка описания объекта, с помощью функции шаблонизатора Smarty - truncate:200
<p>{$special_items2[i].text|strip_tags|truncate:200}</p>
- Вывод нескольких фото в слайдер (по-умолчанию, в CMS выводится одно фото) - подсказали в теме http://www.etown.ru/s/topic/357-превью-в-модуле-спецпредложений/:
Файл /apps/system/lib/frontend/grid/grid_constructor.php:838:1551:2251
$image_array = $data_model->get_image_array ( 'data', 'data', 'id', $item_array['id'], 1 );
тут убираем последний аргумент, который и указывает на количество фото
$image_array = $data_model->get_image_array ( 'data', 'data', 'id', $item_array['id']);
3. Существенно переработана форма поиска: оставлены только необходимые поля. Плюс, сделано так, чтобы по-умолчанию был выбран необходимый город (с помощью jQuery):
$('select#city_id :nth-child(2)').attr("selected", "selected");
Для стилизации полей формы использовали jquery.formstyler.min.js (по-моему, его можно включить в дефолтные шаблоны CMS).
4. Таблица объектов также существенно переработана: - выводится три фото (вместо одного):
{if $grid_items[i].img[1] != '' } <a class="preview" href="{$grid_items[i].href}"><img src="{$estate_folder}/img/data/{$grid_items[i].img[1].preview}" width="50"></a> {/if}{if $grid_items[i].img[2] != '' } <a class="preview" href="{$grid_items[i].href}"><img src="{$estate_folder}/img/data/{$grid_items[i].img[2].preview}" width="50"></a> {/if}
- если указана сортировка по какому-то столбцу (стоимость, район и др.), он выделяется серым цветом css-класса cell-1:
class="{if strpos($smarty.server.REQUEST_URI, "order=type") == true}cell-1{/if}
- проставлены относительные даты добавления объекта вместо абсолютных ("сегодня", "вчера" вместо дефолтных "11.12"). Использована функция Smarty $smarty.now|date_format:"%d.%m" :
{if $grid_items[i].date==$smarty.now|date_format:"%d.%m"} сегодня{elseif $grid_items[i].date==($smarty.now-(60*60*24))|date_format:"%d.%m"} вчера{else} {$grid_items[i].date}{/if}
- благодаря новым классам в Bootstrap 3 некоторые столбцы на мобильных устройствах скрываются и таблица становится компактной и помещается на экранах вплоть до планшетов:
<td ... class="visible-lg">...</td>
5. Существенно переработана страница объекта - к примеру, вот продажа 1-к квартиры.
- Фото выводятся с помощью библиотеки photosetGrid , которая в виде мозаики размещает их. - Форма отправки заявки на объект также сделана по-другому: некрасивое всплывающее окно с большим количеством полей мало кто будет заполнять, поэтому форма выводится тут же на странице и выглядит как два поля - "Имя" и "Телефон". И все! Отправка данных из нее реализована через ajax. Для этого пришлось скопировать дефолтный шаблон form.tpl в свой шаблон в папку \template\frontend\akademiyametrov\apps\mailbox\site\template\ , и таким образом, работать уже с собственным подключаемым шаблоном.
Спасибо за подсказку в теме http://www.etown.ru/s/topic/331-отдельный-шаблон-новостей/
6. Главную страницу тоже существенно переверстали. К примеру, на основе функций Smarty сделали так, чтобы кое-какие блоки верстки выводились только на главной странице (в примере ниже - это слайдер, который выводится только на главной):
{if $smarty.server.REQUEST_URI|regex_replace:"/\?(.*)/":"" eq '/'} <!-- Slider --> ... <!-- /.Slider -->{/if}
или не выводились в определенных разделах (тут блок поиска не выводится на стат.страницах):
{if $smarty.server.REQUEST_URI|regex_replace:"/\?(.*)/":"" ne '/services/' && $smarty.server.REQUEST_URI|regex_replace:"/\?(.*)/":"" ne '/aboutakademiyametrov/' && $smarty.server.REQUEST_URI|regex_replace:"/\?(.*)/":"" ne '/contacts/' && $smarty.server.REQUEST_URI|regex_replace:"/\?(.*)/":"" ne '/news/' && $smarty.server.REQUEST_URI|regex_replace:"/\?(.*)/":"" ne '/rostovhistory/' && $smarty.server.REQUEST_URI|regex_replace:"/\?(.*)/":"" ne '/order/'} <h2 class="topic"> Каталог недвижимости</h2>{/if}
7. Для бекэнда тоже постарались: написали свой модуль для автоматического экспорта объектов на доску объявлений "Авито" - http://www.akademiyametrov.ru/xml/avito.xml, чем с удовольствием пользуется клиент, а также модуль автоматического парсинга определенных сайтов и добавления квартир с них в админку. Но, на текущий момент, первый модуль оформлен как кнопка со ссылкой на URL (по которому генерируется xml) в разделе "Выгрузка Яндекс.Недвижимость" и представляет собой один php-скрипт, т.к. до написания полноценного плагина для CMS руки не дошли. Вполне вероятно, что при работе над другими проектами оформим их как плагины.
В итоге 1-месячной работы имеем: 2 новых собственных шаблона модулей (news, mailbox - все они копировались из дефолтных в папку \template\frontend\akademiyametrov\apps\ , к примеру собственный шаблон новостей для работы должен иметь путь \template\frontend\akademiyametrov\apps\news\site\template\), 8 переверстанных шаблонов (header.tpl, footer.tpl, main.tpl, right_special.tpl, standart_search_form.tpl, realty_view.tpl, realty_grid.tpl, news_list_column.tpl), 4-6 файлов собственных модулей ... и ~10 вопросов на форуме
Готовы поделиться скриптом для формы свободной заявки (1 php-скрипт + js-код для отправки данных + код под bootstrap для верстки модальн.окна). Пишите в личку.
При разработке даже сделали небольшой хак - "Установка шаблона из URL 'на лету' " http://www.etown.ru/s/topic/332-хак-установка-шаблона-из-url-на-лету/ И в конце работы над проектом, хочется высказать пожелания для разработчиков, быстрее включить в дефолтные шаблоны Bootstrap 3.
----------------- Отдаем даром форму краткой Заявки на объекты
В ходе работы над последним проектом на основе Sitebill, мы сделали краткую форму Заявки на объект. Знаем по собственному опыту работы с сайтами агентств недвижимости - такая форма с 2-4 полями дает существенную конверсию и отдачу. Форма добавляет заявку в админку и отправляет заявку на email.
Готовы поделиться скриптом для формы свободной заявки (1 php-скрипт + js-код для отправки данных + код под bootstrap для верстки модальн.окна).
1. Добавляем разметку для "кнопок".
Файл /template/frontend/realia/realty_grid_thumbs.tpl и /template/frontend/realia/realty_grid_list.tpl
В блок с классом title
<div class="title"> <h2> <a href="{$grid_items[i].href}">...</a> </h2></div>
, он одинаков для обеих файлов, после начала h2, но перед началом a внедряем кусок разметки
<div class="title"> <h2><!-- Начало вставляемого куска --> {if isset($smarty.session.favorites)} {if in_array($grid_items[i].id,$smarty.session.favorites)} <a class="fav-rem" alt="{$grid_items[i].id}" title="{$L_DELETEFROMFAVORITES}" href="#remove_from_favorites"></a> {else} <a class="fav-add" alt="{$grid_items[i].id}" title="{$L_ADDTOFAVORITES}" href="#add_to_favorites"></a> {/if} {else} <a class="fav-add" alt="{$grid_items[i].id}" title="{$L_ADDTOFAVORITES}" href="#add_to_favorites"></a> {/if}<!-- Конец вставляемого куска --> <a href="{$grid_items[i].href}">...</a> </h2></div>
2. Картинки для кнопок качаем архивом отсюда http://my.digitalwerkstatt.ru/files/stars.zip и выкладываем в папку /template/frontend/realia/img
3. Теперь необходимо добавить ссылку на Избранное. Добавить ее можно в любое место на странице, но оптимально, что бы она была доступна из любой страницы сайта. Поэтому я добавлю ее в меню на самом верху сайта
Для этого открываем /template/frontend/realia/main.tpl находим в нем блок где выводятся данные из набора меню right_menu
{section name=i loop=$right_menu} <li><a href="{$right_menu[i].url}">{$right_menu[i].name}</a></li>{/section}
И сразу после него добавляем свой пунктик
<li><a href="{$estate_filder}/myfavorites/">Избранное (<span id="favorites_count">{(int)$smarty.session.favorites|count}</span>)</a></li>
4. Стили. Добавляем их в /template/frontend/realia/css/realia-blue.css в конец следующим куском
.fav-add {background-image: url('../img/starg.png');display: inline-block;width: 24px;height: 24px;background-position: 50% 50%;background-repeat: no-repeat;}.fav-add:hover {background-image: url('../img/starg_h.png');}.fav-rem {background-image: url('../img/star.png');display: inline-block;width: 24px;height: 24px;background-position: 50% 50%;background-repeat: no-repeat;}.fav-rem:hover {background-image: url('../img/star_h.png');}
5. Интерактивность. Добавим обработку событий по клику на кнопках.
Файл /template/frontend/realia/js/interface.js
Находим строку
$('#prettyLogin .tab-content').css({'max-height': (0.55*wh)+'px'});
и после нее добавляем наши обработчики в виде кода отсюда http://pastebin.com/ZWvFTDDM
Шаблон realia у нас выпущен недавно и функции биллинга для этого шаблона еще не интегрированы.
Они есть в realty, agency.
В ближайшее время добавим туда функции биллинга и сделаем обновление, сможете скачать шаблон с этими функциями.
Вот такие строки должны быть для вывода мета-информации.
<title>{if $meta_title != ''}{$meta_title}{else}{$title}{/if}</title><meta name="description" content="{$meta_description}" /> <meta name="keywords" content="{$meta_keywords}" />