9 октября 2011 г.

Назначение шаблонов в Bitrix

Содержание поста довольно тривиально, по край ней мере для тех, кто достаточно долго работает с CMS Bitrix. Поэтому следует рассказать о причинах побудивших написать пост на такую скучную тему.
Осень 2011 года — компания 1C Bitrix анонсировала Bitrix 11.0 . Из пресс-релиза, как я понял, ничего, такого капитального не предвидится (в 10-й тоже ничего не было). Система прирастает, только раскрученными в IT/бизнес медиа фишками — облачными технологиями, поддержкой мобильных устройств, оставаясь по прежнему на уровне начала 2000-ных. Да система Bitrix построена на тех «практиках» которые уже редко где можно найти работающими, в этом можно убедится просмотрев исходные коды.
Интерфейс с помощью которого происходит назначения правил применения шаблонов в системе Битрикс — к сожалению, не удачный. Шаблоны применяются согласно правилам, которые не как не вытекают из дизайна интерфейса. Описанию по работы с ним мало. Официальная документация лаконична, как энциклопедическая справка.
Основные проблемы.
 Назначаются шаблоны различным ветвям структуры сайта, для тех кто не знает, в разделе «Редактирования сайта», который надо искать в Администрирование  → Настройки. Назначение шаблонов в CMS Битрикс реализовано довольно таки топорно. Во первых явно учитывается иерархия в виде порядка сортировки. Во вторых учитывается иерархия файловой системы.
К примеру имеется такой фрагмент файловой структуры и задаем шаблоны с помощью типа условия «для папки и файла» (о типах условиях так же будет написано далее).
/folder1
/sub_folder1
/sub_folder2
 Так если назначить какой либо шаблон для папки sub_folder1 c порядком сортировки 2, а /folder1 назначить другой шаблон иномер сортировки 1, то и у subfolder1 (да и subfolder2 и у всех остальных дочерних) будет тот же шаблон, что и у folder1 не смотря на то какой шаблон был им задан. Если порядок сортировки задать наоборот: sub_folder1 - 1, folder1 - 2. То тогда у каждой директории будут свои шаблоны.
Типы условия.
Одни из самых "ходовых" типов условий это:
  • для папки и файла 
  • выражение PHP 
Недостаток условия для "Папок и файлов" - это то что он задается для одной папки (и всех его дочерних директорий и файлов)/файла. И как следствие его придется задавать почти для каждой папки если получился сайт с "богатой" палитрой шаблонов. В помощь может пригодится тип условия «выражение PHP» Вариант с использованием выражения php:
preg_match("/\/yslygi_phis_licam\/(?:obmen_valyti|migom|denejnie_perevodi|bank_seif|priem_plateghei|internet_bank)\//i",$APPLICATION->GetCurDir())
Здесь уже можно использовать регулярные выражения. Почти как в кошерных Django или Ruby On Rails. [Вопрос про производительность такого решения лучше незадавать]
Таким образом, используя регулярные выражения, задаем правило назначения шаблона для адресов:
*/yslygi_phis_licam/obmen_valyti/*
*/yslygi_phis_licam/migom/*
*/yslygi_phis_licam/denejnie_perevodi/*
*/yslygi_phis_licam/bank_seif/*
*/yslygi_phis_licam/priem_plateghei/*
*/yslygi_phis_licam/internet_bank/*
И как следствие уменьшаем муки + повышаем производительность труда разработчика по сравнению с применением  типа условия «для папки и файла».


П. С. Если появятся еще примеры использования типов условий, то я здесь так же их опубликую.

1 комментарий: