1С-Битрикс: Управление сайтомНа главную страницу
Клиентам
Маркетплейс
Партнерам
Разработчикам
Интеграция с 1С
Идея?


Личный кабинет
Авторизоваться
Регистрация
(войти) Корзина
Логин:

Пароль:



Забыли свой пароль?
Регистрация
Войти как пользователь:
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
ВКонтакте
Мой Мир
Twitter
Facebook
Google
Livejournal
Яндекс
Rambler
Mail.Ru
Liveinternet
Blogger
OpenID
Используйте вашу учетную запись VKontakte.ru для входа на сайт.
Используйте вашу учетную запись Мой Мир@Mail.ru для входа на сайт.
Используйте вашу учетную запись на Twitter.com для входа на сайт.
Используйте вашу учетную запись на Facebook.com для входа на сайт.
Используйте вашу учетную запись Google для входа на сайт.
.livejournal.com
@yandex.ru
@rambler.ru
@mail.ru
http://www.liveinternet.ru/users/ /
.blogspot.com
OpenID:
  • Документация
    • Управление сайтом
    • Корпоративный портал
    • .NET Forge CMS
    • Отраслевые решения
    • Marketplace
    • Аренда приложений (SaaS)
  • Обучение и сертификация
    • Онлайн-курсы и сертификация
    • Учебные центры
    • Мое обучение
    • Учебные видеоролики
  • Центр поддержки
    • Поддержка
    • FAQ
    • Мои обращения
  • Сообщество
    • Блоги Битрикс
    • Блоги веб-разработчиков
    • Общие форумы
    • Веб-разработчики
      • Моя страница
      • Мои сообщения
      • Группы
      • Найти коллег
  • Cтатьи
    • Архив
Главная / Общение / Сообщество разработчиков / Забродин Роман / Блог маленькой независимой компании о бизнесе и битриксе
Федеральный семинар «1С-Битрикс»: Веб для бизнеса

Miniliner.ru -- интернет-магазин на редакции "Эксперт" с реализацией паттерна Front controller

Профиль
Мысли
Блог маленькой независимой компании о бизнесе и битриксе
Друзья
Группы

Забродин Роман

Дата последнего входа: 21.05.2012 06:33:09
Город: Красноярск
Наименование компании: «Интернет-агентство «Енисайт»

Miniliner.ru -- интернет-магазин на редакции "Эксперт" с реализацией паттерна Front controller

10
Роман Забродин
06.06.201113:3906.06.2011 13:39:30
Недавно мы закончили программную часть работ (дизайн и верстка были предоставлены заказчиком) по разработке интернет-магазина моделей пассажирских самолетов и хотим поделиться с вами некоторыми особенностями технической реализации данного проекта.

Дело в том, что данный интернет-магазин является частью большого проекта о авиакомпаниях и самолетах России и Мира www.airlines-inform.ru, общая посещаемость которого уже сейчас превышает 15000 уникальных посетителей в день, и который построен на редакции продукта "Эксперт". А новый интернет-магазин реализован на дополнительном сайте продукта и нашем модуле для организации on-line продаж на младших редакциях -- "Киоск".

Использование собственного модуля позволило заказчику сэкономить на переходе на более старшую редакцию (Бизнес) на этапе стартапа магазина, а нам позволило легко реализовать некоторые интересные фичи, такие как:
1. предоставить три возможных логических действия с товарами (покупка товаров, которые есть в наличии на складе, заказ товаров, которых нет в наличии на складе, с почтовым уведомлением покупателей при поступлении товара на склад, возможность отложить понравившийся товар в список будущих покупок);
2. реализовать упрощенную процедуру оформления заказа;
3. реализовать собственный нестандартный интерфейс оформления заказа и истории заказов
и другие.

Но, самое интересное на этом сайте это не использование стороннего модуля для организации он-лайн продаж, а спроектированный и разработанный нами "Контроллер" -- сердце публичной части сайта.
"Контроллер" -- это попытка реализации в 1С-Битрикс паттерна программирования Front controller, когда сотни страниц каталога сайта реально имеют всего одну точку входа с одним комплексным компонентом! В этом отношении архитектура публичной части сайта напоминает архитектуру сайта построенного на CMS Joomla!
"Контроллер" генерирует ЧПУ страниц (в зависимости от выбранных параметров фильтра.)  И наоборот, по полученному из адресной строки браузера URL (состоящему в том числе из свойств элемента не включенных в публичную форму фильтра) "Контроллер" генерирует контент страницы, а так же ее TITLE, KEYWORDS и DESCRIPTION по определенному алгоритму. Так же, разработана возможность позволяющая при необходимости легко вставлять уникальное содержание включаемых областей на любых виртуальных страницах сайта.
Т.е. мы имеем огромную комбинацию страниц каталога в зависимости от наложенных фильтров и каждая из них имеет свой собственный красивый URL, TILTE и META-данные.

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

Получилось очень даже забавно. Например, получаем сборные модели (раздел) самолетов авиакомпании Аэрофлот - Российские авиалинии (свойство) в масштабе 1:144 (свойство), вторая страница:
http://miniliner.ru/type-model-kits/scale-144/airline-Aeroflot/page-2/

или, получаем сборные модели производства компании "Hasegawa" (раздел)  в масштабе 1:200 (свойство):
http://miniliner.ru/hasegawa/scale-200/


красивый URL, красивые META-данные и все это генерируется в автоматическом режиме по заданным алгоритмам. Красота! smile:-)
Администратору требуется только заносить товары в инфоблок в административной части сайта smile:-)


Сейчас интернет-магазин проходит тестирование, мы будем благодарны вам за багрепорт.
Роман Забродин
06.06.201113:3906.06.2011 13:39:30
Просмотров:1201 Комментариев:11 10
Теги: Енисайт, интернет-магазин, Киоск, корзина, паттерны
*
 
Незарегистрированным пользователям запрещена вставка ссылок. Зарегистрируйтесь или авторизуйтесь.
*
Добавить комментарий
2
Рамиль Юналиев
06.06.2011 14:50:08
В принципе такой контроллер может быть просто комплексным компонентом. 

Сильно отличается реализация от компонента?
Ответить Ссылка 2
0
Андрей Шилов
06.06.2011 19:08:47
На самом деле тут все урлы обрабатываются специально разработанным компонентом, за исключением статических страниц. В URL-е могут присутствовать как свойства элементов, так и символьные коды разделов. А далее компонент сам решает куда и с какими параметрами перенаправить пользователя. Будь то комплексный компонент каталога или список новостей. Получился довольно сложный механизм.
Ответить Родитель Ссылка 0
0
User 2000
06.06.2011 16:10:37
Выглядит заманчиво smile:) +48.5
Ответить Ссылка 0
0
Ban Dmitry
07.06.2011 09:37:49
М-м-м.
Заведомо несуществущая страница: http://miniliner.ru/type-model-kits/scale-144/airline-nonexistent/page-2/
Статус 200 Ok
Ответить Ссылка 0
0
Андрей Шилов
07.06.2011 10:01:38
nonexistent - популярная авиакомпания в Словакии, с многолетней историей полетов по всему миру, вы просто угадали. Шучу smile:)

В данном случае сформировался фильтр и наложился на компонент catalog.section и он просто вывел пустой результат по фильтру.
Да... красивее бы на 404 пнуть посетителя... Наверное надо добавить условие если компонент возвращает 0 элементов то 404 ставить. Однако в таком случае будет 404 и в случае если зайдем в пустой раздел. Помню уже я размыщлял над этим и видимо не доразмышлял...
Ответить Родитель Ссылка 0
2
Ban Dmitry
09.06.2011 15:19:00
Как вариант: catalog.section делает define("ERROR_404", "Y"), а в эпилоге этот флаг обрабатывается так:
Код
AddEventHandler('main', 'OnEpilog', '_Check404Error', 1);
function _Check404Error()
{
   if (defined('ERROR_404') && ERROR_404=='Y')
   {
      GLOBAL $APPLICATION;
      $APPLICATION->RestartBuffer();
      include $_SERVER['DOCUMENT_ROOT'].'/bitrix/templates/'.SITE_TEMPLATE_ID.'/header.php';
      require ($_SERVER['DOCUMENT_ROOT'].'/404.php');
      include $_SERVER['DOCUMENT_ROOT'].'/bitrix/templates/'.SITE_TEMPLATE_ID.'/footer.php';
   }
}
Ответить Родитель Ссылка 2
0
Майдокин Алексей
09.06.2011 16:33:48
А можно скачать мой модуль, который делает точно то же самое, но автоматически smile:)
http://blog.alexxxnf.ru/upload/err404.zip
Ответить Родитель Ссылка 0
0
Майдокин Алексей
07.06.2011 18:16:16
Решение действительно интересное!
А расскажите, как оно в плане реализации, дольше обычного?
А как с масштабируемостью, если вдруг клиент дополнительного функционала пожелает?
И насколько это решение переносимо? Можно будет на нём другой сайт сделать или там всю работу придётся начинать с нуля?
Ответить Ссылка 0
0
Андрей Шилов
08.06.2011 06:29:22
В плане реализации естественно оно дольше. На масштабируемость не повлияло.

А на счет переносимости не понял, что значит другой сайт на нем сделать?
Ответить Родитель Ссылка 0
0
Роман Забродин
08.06.2011 07:03:03
Вы про "Контроллер"? В плане масштабируемости решение универсальное -- если добавим новые свойства-справочники, то их можно будет использовать в фильтре, они будут участвовать в построении URL и прочем.. В принципе, его можно перенести и адаптировать на другом сайте, но он накладывает ряд требований на структуру каталога -- например, свойства должны быть справочниками (отдельными инфоблоками), в которых элементы -- это значения свойств и у них обязательно должен быть заданный символьный код, который участвует в построении ЧПУ ну и т.д.
А модуль "Киоск" внедрен уже более чем на 40 сайтах.
Ответить Родитель Ссылка 0
0
Майдокин Алексей
07.06.2011 18:18:36
И картинкам прелоадер добавьте smile:)
Ответить Ссылка 0

Добавить комментарий

Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».
 
Технологии Эрмитаж
BitrixMobile
Автокеширование
SiteUpdate
Производительность Виртуальная машина
Веб-окружение
Результаты тестов
Выбрать хостинг
Веб-кластер
Безопасность Проактивная защита
Веб-антивирус
Аутентификация

Контакты Поиск Карта сайта
Телефон: +7 (495) 229-14-41
Оставайтесь с нами: Facebook Twitter Habrahabr VKontakte Developers Google 1+
Как распознать QR код?Контакты QR


© 2001-2012 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом.
Английская версия Немецкая версия