Официальный блог

По многочисленным просьбам, поступающим в обратную связь, и по повышенной потребности аудитории Yii-разработчиков хочу поделиться некоторыми моментами в реализации поддержки нескольких языков на любом проекте, написанном на этом фрэймворке.

Поразмышлять о вариантах создания карты сайта для проекта на фрэймворке Yii сподвиг этот вопрос на русскоязычном форуме. Наверняка это пригодится для любого более-менее насыщенного страницами проекта. Каждый, несомненно, делает это по своему. Конечно же, можно выбрать любое другое готовое расширение, но для образовательных целей попробуем придумать пару вариантов решения этого вопроса.

В предыдущем рецепте по стилизации виджетов мы рассмотрели, как можно кастомизировать стандартные и персональные виджеты Yii, упростив при этом код представлений до минимума. В этом уроке мы на примере грида записей своего мини-блога попробуем улучшить вид и минимизировать код ячеек виджета CGridView.

В комплекте Yii Framework изначально поставляется набор виджетов Zii. Программисты знакомятся с обилием возможностей по стилизации виджетов, начинают кастомизировать, но не сразу доходят до удобных способов стилизации. В этом рецепте мы попробуем максимально сократить размеры копируемого из вида в вид кода.

Необходимость работы с громадными массивами в одном из проектов привела к альтернативному расширению для сериализации данных igbinary. Прочитать о нём кое-что можно здесь. Расширение добавляет функции igbinary_serialize и igbinary_unserialize, которые, в отличие от стандартных функций сериализации, конвертируют данные в бинарный блок. Если автор обзора не обманывает, то расширение даёт «5-кратное преимущество по размеру и 20-кратное по скорости».

Каждый «ленивый» разработчик в глубине души желает упростить себе работу с создаваемой им системой. Как вы, наверное, заметили, в каждом совете этого блога автор руководствуется привычкой выносить всё общее и всё изменяемое в отдельные самодостаточные компоненты (в поведения, действия, валидаторы, фильтры, виджеты, переопределённые базовые классы). В итоге такая практика приводит к состоянию, когда порой несколько разнородных проектов работают на одном и том же коде с различием только в теме оформления. В этот раз поговорим именно о темах.

Стандартный класс CUrlManager в Yii (да и в других фреймворках) позволяет собирать URL динамически на основе правил маршрутизации. В интернет-магазинах и блогах часто используются многоуровневые категории. Попробуем использовать их в Yii.

У любого разработчика может возникнуть необходимость установки форума на сайт, написанный на Yii. Простой установкой в отдельную папку на сервере и в отдельную или эту же базу данных это порой не ограничивается. С большой вероятностью разработчику нужно будет организовать единую сквозную авторизацию на сайте и форуме. Попробуем это сделать.

В системах управления контентом (CMS) интернет-магазинов (да и часто для других нужд) можно встретить возможность добавлять неограниченное число полей к различным сущностям. Это знакомые всем списки характеристик товаров, а иногда имеется целая система создания новых типов контента (CCK), которой, кстати, славится Drupal. До полноценной системы CCK нам далеко, но реализовать динамические поля для товаров своего интернет-магазина на Yii всё-таки стоит.

При переделывании своего проекта на модульную структуру сразу же захотелось сделать модули минимально связанными. При этом многим приходится сталкиваться с организацией выноса настроек модулей из главного конфигурационного файла в сами модули. Рассмотрим несколько приёмов и подводных камней.