К Битрикс можно относиться по-разному. Так получилось, что и мне пришлось столкнуться с этим CMS-семейством по реальной работе, причем в сжатые сроки нужно было освоить несколько разновидностей «Управления сайтом» и «Корпоративный портал» для того, чтобы можно было создавать новые ресурсы на их базе и корректировать старые сайты, сделанные на них же. В принципе, кроме неуклюжего с моей точки зрения редактора кода с подсветкой синтаксиса, серьезных минусов на первом этапе освоения я не нашел. Плюсов гораздо больше. И об этом мы поговорим подробнее чуть позже.
Документации и материалов в интернете много. Но стоит отметить и некоторые отличия. Среди веб-разработчиков под Битрикс можно выделить две группы, а именно: - Люди, которые стартовали свою карьеру с его изучения и мыслят сугубо представлениями Битрикс.
- Опытные программисты/веб-разработчики, которые перешли на Битрикс в какое-то время.
Естественно, и смотрят они на все происходящее по-разному, и советы по решению задач также иногда отличаются.
Если опытный программист знает пять и более вариантов решения какой-нибудь типовой ситуации (или как минимум два:)), узкоспециализированный Битрикс-специалист пытается решить все в рамках того, что предлагает система, описывает документация, либо ищет готовые решения/модули/компоненты на Marketplace (каталог решений для Битрикс). Согласитесь, что это специфично не только для Битрикс, а, вообще, в рамках любых узких специализаций по CMS, тем же Drupal, Wordpress, Joomla и т.п.
Битрикс. Плюсы и минусы
Сама система Битрикс сейчас распространяется очень динамично, в рейтинге CMS Magazine она занимает первое место среди всех систем управления контентом, причем со значительным опережением. Авторы Битрикса выпускают множество вариантов версий для типовых веб-проектов (интернет-магазинов, сайтов для различных учреждений (медицинских, образовательных), порталов и так далее). То есть в типовом случае достаточно скачать/установить нужную версию, настроить, как требует техническое задание, оплатить, и запустить сайт в работу.
Среди плюсов Битрикса можно выделить высокое качество исполнения и стабильность работы, причем мы говорим об очень хорошей работе проектировщиков и программистов со стороны авторов этой системы. Достаточно сказать, что вся разработка сайтов на Битриксе ведется в веб-среде в окне браузера, и в отличие от других SaaS здесь реализованы такие интересные вещи как использование двойного клика левой кнопки мыши, либо специализированные контекстные меню по нажатию правой кнопки мыши. Довольно удобно распределена функциональность и логика GUI администраторской части.
В принципе, многим знакомы такие термины как «визуальное программирование» либо «модульно-ориентированное программирование» или же «компонент-ориентированное программирование». Битрикс довольно сильно напоминает визуальные конструкторы для создания мультимедийных презентаций и казуальных игр. Для веб-разработчиков начального уровня, обычных пользователей, которые хотят научиться, контент-менеджеров и части администраторов работа с Битрикс основывается на визуальном проектировании. Поэтому для них является важным выбор конкретной версии продукта, для того, чтобы она была максимально приближена к тому сайту, который они хотят сделать. Это актуально и для сложных ресурсов, потому как в специализированных версиях есть хорошо сделанные уникальные решения, обычная разработка которых заняла бы много человекочасов опытных программистов.
Стандартные «прошитые» блоки имеют и свои минусы, потому как при визуальном проектировании имеют мало альтернатив. Например, в Битрикс используется только один вариант CAPTCHA, который при современных условиях довольно легко обойти роботом. В некоторых случаях определенные элементы нельзя удалить (например, те же группы пользователей, которые не нужны), и они только загромождают администраторскую часть.
Но, в целом, это незначительные минусы, которые можно исправить, обойти или игнорировать. Также довольно «интересно» работает преобразование из Word при вставке текста в визуальном редакторе. Такая вставка подразумевает удаление ненужной информации форматирования и т.п., и превращение нужных тегов Word в теги HTML. В ряде случаев теги могут неадекватно преобразовываться, поэтому вставку лучше производить известным всем стандартным образом — через текстовый редактор. На самом деле ситуация типична для многих WYSIWYG-редакторов и именно вставки из Word.
Доработка Битрикс с точки зрения программирования
С точки зрения программирования сайты на Битрикс можно дорабатывать довольно свободно.
Есть возможности: - изменения стандартных компонентов системы;
- создания своих собственных компонентов, как с нуля, так и с вариантом копирования/изменения стандартных компонентов;
- создания новых модулей;
- использования инфоблоков;
- вставки PHP-кода на любых страницах,
- использования сниппетов;
- создания собственной взаимосвязанной структуры из PHP-файлов;
- вставки JavaScript;
- изменения HTML в шаблонах компонентов и т.п.;
- изменения CSS;
То есть, по существу, вы можете менять абсолютно все по своему усмотрению. Единственное, что не рекомендуют авторы и опытные специалисты по Битрикс — это обращение напрямую к БД. В самом коде Битрикс вы такого также не увидите, поскольку там используются обертки, превращающие высокоуровневую логику в запросы. Работа с системными таблицами БД ведется только через API системы, можно, конечно, создавать и пользовательские таблицы. Лично я на этапе работы с локальной копией, установленной на Windows, даже использовал вариант дополнительного подключения к сторонней БД, с кэшированием результатов, помещением частых однотипных запросов в cron с последующим кэшированием результатов и т.п. Все-таки не очень привычно работать с БД не видя ни её, ни самих запросов к базе.
Сам «движок» Битрикса довольно тяжел, в нем применяется сразу несколько собственных технологий для ускорения работы. Это и кэширование, и внутренняя оптимизация запросов, и т.п. В эти вопросы следует внедряться только со знанием дела.
Кстати, в Битрикс и своя собственная внутренняя альтернатива cron’у, а именно, агенты, которые быстро создаются в панели настроек (закладка «Инструменты»). Агенты применимы для не ресурсоемких операций.
Теперь перейдем к небольшому примеру, который должен развеять мифы о том, что «работа с Битрикс — это как езда на танке по узким улочкам».
Простой пример программирования
В принципе, многим вполне достаточно того, что предлагает Битрикс, но нередко приходится допиливать сайт доступными средствами. Программистам иногда проще просто выходить на PHP-код и использовать возможности конкретно PHP. Есть несколько типовых ситуаций, в которых удобнее так и делать.
Допустим нам нужно расширить функционал для каждого зарегистрированного посетителя. Например, отслеживать/фиксировать его последние действия, отображать или не отображать для него определенные блоки кода внутри страницы, менять классы CSS и т.п.
Мне недавно попалась интересная задачка схожей тематики. Требовалось для каждого зарегистрированного пользователя завести отдельную папку, в которую он может загрузить свои файлы (любые). То есть не «документооборот с распределенными правами доступа», а тупо кнопка «Загрузить файл» внизу страницы. PHP-скрипт непосредственно аплоуда файлов на сервер довольно стандартен, его без труда можно найти в интернете. Нужно было привязаться к уникальному свойству пользователя (это может быть ID, логин), при попытке загрузки файла создать для него одноименную папку где-нибудь на сервере, если ее нет, например, в какой-нибудь собственный специальный каталог (user_uploads) и загрузить туда файл.
Итак, самый ключевой вопрос для всех задач, описанных выше: как нам получить свойства пользователя? Можно обратиться как напрямую к БД, но, в принципе, есть вариант и решения данного вопроса через API. В его рамках для этого необходимо использовать метод GetList класса CUser. В приведенном коде мы выводим на отображение свойство LOGIN (логин, под которым пользователь авторизировался).
global $USER; $arFilter = array("ID" => $USER->GetID()); $arParams["SELECT"] = array("LOGIN"); $arRes = CUser::GetList($by,$desc,$arFilter,$arParams); if ($res = $arRes->Fetch()) { echo $res["LOGIN"]; }
Теперь имея в арсенале уникальное свойство пользователя, и создав для него отдельную одноименную папку, наполнение которой мы можем реконфигурировать по своему усмотрению, можно производить любые действия в PHP-коде, связанные непосредственно с конкретным пользователем. Вплоть до того, чтобы реализовывать простую БД на текстовых файлах в его папке, вместо того, чтобы городить множество «Дополнительных свойств» для него же в панели Администрирования (Настройки->Пользователи…). И так далее.
Вместо завершения
В принципе, меня, как и многих моих знакомых программистов, система Битрикс при первоначальном знакомстве несколько насторожила. При близком же рассмотрении она оказалась довольно гибкой, то есть, владея PHP/JS/CSS/XHTML, в ней можно реализовывать практически все, что угодно, даже особенно не зацикливаясь на версиях. Приведу простой пример, в недорогой версии мне было необходимо написать небольшой ротатор баннеров, которого не было в комплекте поставки. Я его реализовал стандартной врезкой PHP-кода, а управление этим ротатором вывел на отдельной странице/пункте меню фронт-энда, которая доступна для просмотра только администраторам ресурса. Другими словами, на базовом комплекте можно делать все, что угодно, и даже писать свою собственную CMS с отдельными пунктами меню администрирования на фронт-энде с разграниченными правами доступа:).
Работа с CMS Битрикс оставляет хорошие впечатления. Для специалистов начального уровня я бы рекомендовал стартовать со стандартного программирования, а уже потом включать Битрикс в свои бонусы.
Кристофер Сертифицированный специалист «Разработчик Bitrix Framework»
|