Недавно мы закончили программную часть работ (дизайн и верстка были предоставлены заказчиком) по разработке интернет-магазина моделей пассажирских самолетов и хотим поделиться с вами некоторыми особенностями технической реализации данного проекта.
Дело в том, что данный интернет-магазин является частью большого проекта о авиакомпаниях и самолетах России и Мира www.airlines-inform.ru, общая посещаемость которого уже сейчас превышает 15000 уникальных посетителей в день, и который построен на редакции продукта "Эксперт". А новый интернет-магазин реализован на дополнительном сайте продукта и нашем модуле для организации on-line продаж на младших редакциях -- "Киоск". [spoiler] Использование собственного модуля позволило заказчику сэкономить на переходе на более старшую редакцию (Бизнес) на этапе стартапа магазина, а нам позволило легко реализовать некоторые интересные фичи, такие как: 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/s...ot/page-2/
красивый URL, красивые META-данные и все это генерируется в автоматическом режиме по заданным алгоритмам. Красота! Администратору требуется только заносить товары в инфоблок в административной части сайта
Сейчас интернет-магазин проходит тестирование, мы будем благодарны вам за багрепорт.
На самом деле тут все урлы обрабатываются специально разработанным компонентом, за исключением статических страниц. В URL-е могут присутствовать как свойства элементов, так и символьные коды разделов. А далее компонент сам решает куда и с какими параметрами перенаправить пользователя. Будь то комплексный компонент каталога или список новостей. Получился довольно сложный механизм.
nonexistent - популярная авиакомпания в Словакии, с многолетней историей полетов по всему миру, вы просто угадали. Шучу
В данном случае сформировался фильтр и наложился на компонент catalog.section и он просто вывел пустой результат по фильтру. Да... красивее бы на 404 пнуть посетителя... Наверное надо добавить условие если компонент возвращает 0 элементов то 404 ставить. Однако в таком случае будет 404 и в случае если зайдем в пустой раздел. Помню уже я размыщлял над этим и видимо не доразмышлял...
Решение действительно интересное! А расскажите, как оно в плане реализации, дольше обычного? А как с масштабируемостью, если вдруг клиент дополнительного функционала пожелает? И насколько это решение переносимо? Можно будет на нём другой сайт сделать или там всю работу придётся начинать с нуля?
Вы про "Контроллер"? В плане масштабируемости решение универсальное -- если добавим новые свойства-справочники, то их можно будет использовать в фильтре, они будут участвовать в построении URL и прочем.. В принципе, его можно перенести и адаптировать на другом сайте, но он накладывает ряд требований на структуру каталога -- например, свойства должны быть справочниками (отдельными инфоблоками), в которых элементы -- это значения свойств и у них обязательно должен быть заданный символьный код, который участвует в построении ЧПУ ну и т.д. А модуль "Киоск" внедрен уже более чем на 40 сайтах.
Как вариант: 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';
}
}
Планировали, НО: пока 1С-Битрикс не выпустили свой "Умный фильтр". Теперь пусть сами уже делают. Бесплатно работать возможности нет, а с ними мы зарубаться не будем -- их больше 100 человек, а нас тут 2 калеки.. Все наши идеи из to-do я недавно выложил для голосования: https://idea.1c-bitrix.ru/bring-to-min...h-version/
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».