Подсказки по Yii. Глава восемнадцатая.
"cookie" на поддоменах.
Если сайт имеет поддомены, то целесообразно хранить авторизацию пользователя как на основном домене, так и на поддоменах.
Например: основной домен http://domain_site.ru. Есть поддомены http://msk.domain_site.ru, http://spb.domain_site.ru.
Пользователь авторизировался на http://domain_site.ru, но на http://msk.domain_site.ru он уже будет "гостем", а не "авторизированным пользователем".
Дабы избежать такого досадного недоразумения необходимо добавить в конфигурационный файл (например: protected\config\main.php) в секцию 'components' следующий код:
и
В итоге должно получиться так:
После этих изменений необходимо очистить cookie в браузере + очистить кэш скрипта.
Обычно, кэш самого скрипта хранится в protected/runtime/cache.
Однако, можно задать и свою папку для хранения кэша. Это делается в конфигурационном файле.
После:
Пропишите:
После этого кэш будет храниться от "корня" сайта (где находится index.php) в папке "my_cache_folder".
Сортировка по удалённости от текущего объекта.
Задача: на примере Open Real Estate CMS при просмотре объявления вывести "Похожие объявления" в порядке возрастания расстояния от текущего местоположения объекта.
Решение:
В таблице {prefix}_apartment хранятся координаты местоположения каждого объекта (объявления). Это поля lat и lng.
За формирование условия ($criteria) похожих объявлений отвечает метод viewSimilarAds в файле protected\modules\similarads\components\SimilarAdsWidget.php.
В этом файле вместо:
Пропишите:
, где: "6371" - радиус земли в километрах, а "40" - максимальная удалённость в километрах
Также можно вывести расстояние от просматриваемого объекта.
Для этого в файле protected\modules\apartments\models\Apartment.php после:
необходимо добавить:
Затем в файле protected\modules\similarads\views\widgetSimilarAds_list.php после:
добавить:
Вывод даты в родительном падеже.
Часто спрашивают "Как вывести дату в родительном падеже?".
Например: в таблице БД хранится дата добавления ( объявления, новости, статьи и т.п) в виде: "2014-03-01 10:45:50".
Необходимо вывести "1 марта 2014 г." вместо "2014-03-01 10:45:50".
Однако, не стоит забывать, что на разных языках разный формат вывода. На помощь придёт dateFormatter.
Всё, что необходимо - это одна строка кода:
Здесь используется формат 'long', который уже задан в файле framework/i18n/data/ru_ru.php фреймворка Yii. Откройте этот файл и ознакомьтесь с заданными в нём значениями.
т.е вместо Yii::app()->locale->getDateFormat('long'), если на сайте только русский язык, то достаточно прописать: