Что интересного на сайте

Организация отображения объекта недвижимости с помощью DS

Для отображения объектов недвижимости в том виде, как на скриншоте, мы использовали Drupal модуль Display Suite (далее порсто DS). Этот модуль позволяет с легкостью настроить сетку отображения так, как нужно вам. Можно сказать, что это аналог Panels только для нод. Можно, к примеру, разделить область отображения на 2 боковые колонки (левая, правая) и одну под ними (подвал), и тогда настроить показ заглавия над колонками, отображения фотогалереи в левой, полей описания в правой и дополнительной информации в подвале. В нашем случае мы так и сделали. Еще одним приемом, которым мы пользовались при выводе материала — это использование модуля Fieldgroup для группировки полей по вкладкам, что позволяет немного разнообразить сам интерфейс и более компактно использовать рабочую область отображения. Дальше мы настроили отображение определенных вкладок в своих областях, которые предоставляет модуль DS и в результате получили то, что видно на скрине или же на самом сайте агентства

Отображение объекта недвижимости с помощью сетки DS

Рис. 1. Отображение объектов недвижимости с помощью DIsplay Suite

 

Организация фотогалереи про просмотре объекта недвижимости

Интерес может вызвать отображение фотогалереи стандартными средствами Drupal без использование сторонних модулей. Нужно было добиться отображения одного фото большого размера, а под ним небольшие привьюшки изображений. Как вариант,, это можно сделать с помощью создания 2-х полей CCK — одно для отображения главного фото (большого) и другого поля для отображения и хранения произвольного количества других изображений. Но мы пошли другим путем, мы создали всего одно поле для хранения изображений, и мы темизировали вывод этого поля cck через theme_field(). Ниже приведен код, с помощью которого мы выводим первое изображение с помощью пресета imagecache для большой привьюхи, а остальные изображения мы выводим с применением другого пресета, как раз для маленьких привьюх фотогалереи. Ну и для стилизации, конечно, завернули все что нам нужно в DIVы — чтобы проще было CSS подцепить к ним.

<?php
function THEMENAME_field__field_photo__nedvigimost($variables) {
 
$variables['items'][0]['#image_style'] = 'main_image_406x300';
 
$output = '';
 
 
// Render the label, if it's not hidden.
 
if (!$variables['label_hidden']) {
   
$output .= '<div class="field-label"' . $variables['title_attributes'] . '>' . $variables['label'] . ':&nbsp;</div>';
  }

 
// Render the items.
 
$output .= '<div class="field-items"' . $variables['content_attributes'] . '>';
 
 
// shift the array of items
 
$first = array_shift($variables['items']);
 
$classes = 'field-item main-image ';
 
$text_for_foto = '<div class="text-for-foto">Для увеличения кликните на фото</div>';
 
$output .= '<div class="' . $classes . '"' . $variables['item_attributes'][0] . '>' . drupal_render($first) . '</div>'.$text_for_foto;
 
  foreach (
$variables['items'] as $delta => $item) {
   
$classes = 'field-item ' . ($delta % 2 ? 'odd' : 'even');
   
$output .= '<div class="' . $classes . '"' . $variables['item_attributes'][$delta] . '>' . drupal_render($item) . '</div>';
  }
 
$output .= '</div>';

 
// Render the top-level DIV.
 
$output = '<div class="' . $variables['classes'] . '"' . $variables['attributes'] . '>' . $output . '</div>';

  return
$output;
}
?>

Код помещаем в template.php вашей темы, вместо THEMENAME - имя вашей темы, ну и правильно пишем имя поля, которое темизируете. В результате получаем именно то, что нам нужно — одна большая фотка (кликабельная) и под ней множество маленьких привъюх. И все в целом — это фотогалерея с помощью CCK на Drupal без использования дополнительных модулей.

В результате мы имеем вот такую фотогалерейку на Drupal:

Фотогалерея на Drupal без использования сторонних модулей

Рис.2. Пример простой фотогалереи на Drupal

 

Интеграция веб формы в ноду и передача адреса текущей странцы

Под объектом недвижимости выводим веб форму для записи на просмотр недвижимости.  Модуль Webform. Встраивается форма как простой блок с помощью DS.  Из интересного — отправка вместе с данными заполнения формы, данных о том, с какой страницы эта форма была заполнена. Делается это просто, в поле «шаблон e-mail» добавляем строчку

Ссылка на объект: %server[HTTP_REFERER]

 

Отображение вкладок на странице просмотра недвижимости с помощью Field Group

Как и писал выше вкладки выводим через модуль Fieldgroup. Модуль позволяет группировать поля по вкладкам и группам вкладок. А с использованием DS можно добиться таких вот интересных способов вывода — в нашем случае это две независимые группы вкладок. Первая группа это вкладки фото/видео, а вторая — параметры недвижимости. Совместное использование DS и Fieldgroup позволяет независимо одна от другой сменять вкладки, находящиеся в разных регионах DS

 

Отображение цены в гривнах и долларах. Автоматический пересчет курса с помощью Currency

Одной из особенностей работы с недвижимостью, как и с любым другим дорогостоящим товаром является необходимость отображение цены в различных валютах, с учетом текущих изменений курса. В текущем сайте, мы пошли таким путем: основная валюта, в которой вносится стоимость — американский доллар, так как, обычно, именно по нему равняются при определении стоимости. Но при просмотре объекта недвижимости, мы автоматически выводим стоимость данного объекта и в национальной валюте, в которой производятся расчеты, в гривне. Так как курс гривна/доллар, не всегда постоянен, возникает необходимость поддержки данного курса в актуальном состоянии. Здесь мы применили отличный модуль Currency Exchange который может автоматически обновлять курсы заданных валют, основываясь на системе Yahoo Finance! Хочется отметить, что курс именно реальный, а не внутренний банковский, поэтому, можно смело использовать его при работе с валютами. Модуль Currency предоставляет свое API с помощью которого можно конвертировать программно одну валюту в другую, что мы и сделали. При выводе объекта недвижимости, мы добавили программное поле DS и в его код поместили API функцию Currency для конвертации доллара в гривне.

Результат использвоаниея Currency API показан на рисунке ниже:

Пересчет курса валют с помощью Currency API

Рис. 3. Отображение различных валют с помощью Currency API

Ниже сам код:

<?php


if (isset($entity->field_realty_price['und'][0]['value'])) {
 
$from = 'USD';
 
$to   = 'UAH';
 
$amt  = $entity->field_realty_price['und'][0]['value'];
  if (
module_exists('currency_api')) {
   
$ret  = currency_api_convert($from, $to, $amt);
    if (
$ret['status'] == FALSE) {
      print
'';
    }
    else {
      return
'<div class="field-label-inline">Цена (грн): '.number_format($ret['value'], 0, '.', ' ') . ' грн.</div>';
    }
  }
}
?>

Первым делом мы проверяем указана ли вообще цена на объект, и если да, то проверяем установлен ли у нас модуль Currency. Ну а дальше дело техники — указываем откуда и куда конвертировать, заполняем переменные и вызываем функцию. Результат отдаем в виде HTML кода для вставки в объект недвижимости. Все просто.

С помощью такого подхода нет необходимости вручную пересчитывать стоимость объекта в гривнах, при изменении курса. Currency позаботится об этом сам. И как дополнительные плюшки пользователям, мы разрешили им пользоваться онлайн конвертером, который предоставляется этим модулем.