Несколько слов о Битрикс и доработке сайтов на его базе

К Битрикс можно относиться по-разному. Так получилось, что и мне пришлось столкнуться с этим CMS-семейством по реальной работе, причем в сжатые сроки нужно было освоить несколько разновидностей «Управления сайтом» и «Корпоративный портал» для того, чтобы можно было создавать новые ресурсы на их базе и корректировать старые сайты, сделанные на них же. В принципе, кроме неуклюжего с моей точки зрения редактора кода с подсветкой синтаксиса, серьезных минусов на первом этапе освоения я не нашел. Плюсов гораздо больше. И об этом мы поговорим подробнее чуть позже.   

Документации и материалов в интернете много. Но стоит отметить и некоторые отличия. Среди веб-разработчиков под Битрикс можно выделить две группы, а именно:

  • Люди, которые стартовали свою карьеру с его изучения, и мыслят сугубо представлениями Битрикс.
  • Опытные программисты/веб-разработчики, которые перешли на Битрикс уже имея опыт работы с другими  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) и загрузить туда файл.

Итак, самый ключевой вопрос для всех задач, описанных выше: как нам получить свойства пользователя? Для этого необходимо использовать метод 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»

www.igd.by

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя Al

Интересная дл меня статья. Кристофер, скажите пожалуйста, а что нужно иметь заказчику для того, чтобы, имея сайт на Битриксе, перейти от одного разработчика к другому? Почему спрашиваю? Некто, считавший себя очень умным, заказал сайт у весьма сомнительной конторы, которая слепила инвалида примерно за год мытарств и за несколько тысяч зелени. У меня возникло естественное желание обратиться к профессионалам. Что я должен получить от прежних разработчиков, чтобы свободно владеть дальнейшей произвольной разработкой и/или переделкой того, что получилось?

Аватар пользователя igd

Вам нужно забрать лицензионный ключ зарегистрированного битрикса и пароль администратора (в административной части этот ключ также можно найти и исправить как нужно). То есть обязательно нужно иметь доступ администратора к сайту. Если вы сохраняете хостинг, то есть остаетесь на старом, не помешает ftp-доступ к корню сайта и доступ к БД (если у вас MySQL, то через phpMyAdmin). Это может понадобиться программистам в случаях добавления уникального функционала. Если переезжаете на другой хостинг, то вам будет достаточно наличия там виртуальной машины Битрикс и резервной копии вашего сайта (делается в админ-панели).

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

Битрикс - чрезвычайно стабилен, уже "из коробки". Подобным качеством разработки, среди других движков, может похвастаться только DLE. Но, в отличие от последнего - Битрикс гораздо дороже...

Аватар пользователя igd

petro42, уф-ф, как вы просто и легко всё описалиSmile.

Все необходимые функции и  нужный дизайн можно создать, используя только визуальный интерфейс в админ-панели.

Это всё с большой натяжкой. Базовые функции и стандартный дизайн из "на выбор" — да. Если требуется что-то не(!) шаблонное, а уникальное как функционально, так и в дизайне — допиливается руками и программируется.

Но, для этого нужно изучить систему (неделя где-то).

За неделю более-менее можно изучить систему на уровне контент менеджера или чуть больше. Многие и сертификацию контент-менеджера могут проходить месяц. 

Аватар пользователя Al

Спасибо! Для меня это полный ответ. )) Хостинг тот же. Админ хостинга - я.

Проще программить в Bitrix Framework. Только про него тоже надо недельку почитать:-)

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