Что такое Битрикс: Управление сайтом. Мнение из первых рук

03 Апреля 2013 17:29 ::: Просмотров 28683 ::: Комментариев 17

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

Если вкратце - удобно задумано, реализовано с глюками, внутри говнокод. 

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

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

Структура системы управленя сайтом Битрикс

Давайте же я начну с хорошего — положительных моментов немного, закончу быстро :). С точки зрения пользователя-менеджера битрикс довольно неплох. Имеются онлайн курсы по основам системы, где разжеваны типичные моменты работы с содержимым, основы администрирования. Если оплачено продление - можно попытаться напрячь проблемой техподдержку. Самый адекватный человек в поддержке Михаил Митрофанов - отвечает четко, квалифицированно и по существу. Правда, в половине случаев общение с техподдержкой кончается ничем - стороны сходятся во мнении, что проблема это не проблема, а фича. Вполне удобное изменение материала и структуры из публичной части сайта - изменить, добавить статью, редактировать свойства страниц и разделов (например ключевые слова, описание), создавать различные меню, здесь же изменять css стили и шаблоны. Редактор кода даже имеет подсветку синтаксиса (которая часто глючит). Редактор текстов вполне подойдет непритязательному писателю очерков, имеет типовые распространенные возможности. Пожалуй, стоит выделить функцию вставки текста из Ворда - можно настроить степень очистки мусора, сгенерированного Microsoft Word. Административная часть сайта также вполне неплоха, но требует некоторого времени на привыкание.

Таким образом, если глубоко не копать, можно работать вполне комфортно. Довольно интересна система компонент - например, создаем раздел Новости и страницу index.php, кидаем на нее комплексный компонент Новости, настраиваем параметры - раздел новости готов, и обошлись только тыканьем мыши. Комплексный компонент представляет собой по сути законченную бизнес-логику, готовую к использованию конечными пользователями, например компонент Новости, Форум, Блог. Простой компонент - блок, выполняющий одну функцию - вывод списка новостей, форма обратной связи, вывод комментариев блога. Комплексные компоненты состоят из простых.

Редактор битрикс - работа с компонентами

Заслуживает внимания идея инфоблоков - фича битрикса. Информационные блоки представляют собой очередной уровень абстракции над обычными таблицами СУБД, своеобразная "база данных в базе данных".

Радует система резервного копирования - одной кнопкой можно создать архив сайта с базой данных. Однако нельзя настроить разбиение архива на части нужного мне размера (как в нормальных архиваторах), делит на части по какой-то своей хитрой формуле. Вероятно, из-за tar.gz.

А теперь разберем по косточкам некоторые моменты.

Документация битрикс - позор

Если вдруг приспичило изменить типовой функционал, или, не дай бог, разработать что-то новое, мы как нормальные разработчики идем читать документацию - и здесь нас ожидает масса сюрпризов. Примерно в 10% случаев документация устаревшая и немного не соотвествует действительности (даже в пользовательских курсах я находил грубые ошибки), в 2-5% случаях отсутствует описание, на некоторые вещи (например компонент main.interface.grid, позволяющий строить таблицы и списки - вещь часто очень нужная) документация вообще отсутствует в природе - разработчик видишь ли не захотел писать, счел это знание слишком опасным для простых смертных. В итоге часто приходится ковырять код битрикса, что требует отдельного флакона валерьянки. Иногда попадается нормальный код, даже с комментариями, но обычно это безымянное полотно текста, где смешались люди, кони... А например в комментариях блога (я писал о проблеме в статье Сменил работу - теперь я веб-разработчик) поражает отсутствие хоть какого-то планирования разработки и нагрузочного тестирования. Часто код не соответствует своим же правилам написания исходного кода. После стройной объектной модели популярного (и любимого мной) фреймворка Yii, битрикс - говно, да простят меня читатели. Нормальные разработчики плачут. Разработчикам битрикса хотя бы немного поработать с другими фреймворками, ощутить свободу и мощь современных парадигм программирования... На их сайте встречается упоминание о новом ядре D7, якобы несущем революцию и свет нового дня в битрикс - но нигде ничего конкретного нет, посему проигнорируем эти сказки.

В битриксе для работы с javascript и ajax есть своя библиотека, недокументированная и непонятная. Большинство партнеров-разработчиков битрикса используют удобный известный jQuery, дабы не заморачиваться. Битриксу тоже бы перейти на jQuery, но, видимо, свой "велосипед" с квадратными колесами роднее.

С каждым новым релизом административная часть пухнет на глазах - огромные отступы, много пустого пространства. Последняя 12 версия битрикса удручает - админка перестала влазить в окно (у меня браузер обычно распахнут на половину окна широкоформатного монитора), для комфортной работы нужно разворачивать окно на весь экран. Кто-то заболел гигантизмом. Быстрая компактная админка - это НЕ про битрикс.

Редактор битрикс

Текстовый редактор требует привыкания, со временем можно приспособиться к его фичам и глюкам, отсутствию некоторых нужных возможностей типа "верхний/нижний индекс". Пользователи, использовавшие хоть раз признанные редакторы TinyMCE или CKeditor украдкой будут пускать скупую слезу - редактору битрикса до них как до луны. В особо сложных случаях я готовил текст (много букв и таблиц) в TinyMCE, и потом копировал в битрикс. Из наболевшего — редактор шаблонов регулярно добавляет в конец файла всякий мусор. Редактор кода с включенной подсветкой регулярно тупит, коверкает код. Редактор текста при редактировании вставляет параграф в параграф, оставляет пустые теги после удаления (или <p><br /></p> после удаления компонентов), зачем-то вставляет два пробела в начало строки при преобразовании простого текста в параграф. Html5 на страницах вырезает напрочь, код ютуба и прочих портит после повторного редактирования. Растянуть полезное окно редактора на желаемую мне высоту/ширину невозможно, приходится писать текст в узеньком окошке-амбразуре.

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

Еще одно большое больное место, по моему мнению - ЧПУ, или веб-адреса, удобные для восприятия человеком. ЧПУ в битриксе какое-то огрызочное, кусками, не имеет единого центра (как в том же Yii, где в конфиге можно прописать порядок формирования адресов и больше не касаться этой темы). ЧПУ работает только отдельно у каждого комплексного компонента. При этом всякие фишки типа пагинации и какие-то дополнительные параметры формируются как обычно, и адрес выглядит так: http://vladname.ru/article/?PAGEN_1=4. По поводу ЧПУ я создал идею на сайте битрикса, но почему-то одобрения она не получила. Если хотим обойтись простыми компонентами типа "список новостей" и "новость детально" - можно попытаться настроить вручную самостоятельно, говорят это возможно :). При всем при этом ЧПУ не умеет множественную вложенность (каталог/сапоги/резиновые/большогоразмера/суперсапог).

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

Компонент "Карта сайта" строит карту исходя из физической структуры сайта. То есть логическая структура сайта должна быть оформлена в виде папок на сервере. Если у вас есть комплексный компонент Новости с разделами в инфоблоке - вы эти разделы на карте сайта не увидите. В этом недостаток битрикса - построения сайта на отдельных компонентах, не связанных друг с другом.

В инфоблоках можно создавать свою логическую структуру - разделы и элементы. И разделы, и элементы могут иметь описание и картинку (например анонс новости и картинка к ней). Казалось бы, удобно - заходишь, например, в раздел "новости отрасли" и видишь его описание и картинку раздела, или в списке разделов каждый из них имеет персональную картинку и описание. Однако вывод этих самых описания и картинки для раздела нигде не реализован. Компонент "Новости", как ни удивительно, не умеет выводить разделы новостей! Приходится ставить костыли. При этом компонент "Каталог" это умеет. Странно...

При всеобщем воспевании битриксом своей же идеи инфоблоков как универсальной структуры данных такие фундаментальные модули как "форум", "блог" сделаны сами по себе, со своими собственными таблицами и функциями для работы, что не добавляет простоты в их потрошении изучении/исправлении. А такой модуль как "Идеи" является надстройкой над блогом, что вовсе затрудняет его модернизацию (какофония кода чем-то напомнила старый вордпресс). Скорее всего, будет проще написать с нуля свой сервис. Или Фотогалерея 2.0 - там местами код компонентов так связан друг с другом, что по отдельности заставить их работать бывает проблематично. Это другая сторона построения сайта на компонентах.

Форум - обеспечивает самый минимум необходимого функционала. Модератора можно назначить только на весь форум, на отдельные ветки (подразделы) нельзя. Можно подписаться на отдельные темы, разделы, но не весь форум, отписываться же нужно только в профиле, до чего нужно еще догадаться. ЧПУ самого форума можно включить, а вот чтобы в отзывах (комментарии к новостям например) было ЧПУ, нужно настроить отдельно каждый раздел форума, гемор прикиньте сами. Возможности ограниченные, управление неудобное.

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

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

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

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

Сайт идей битрикса тоже глючит

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

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

Системно битрикс НЕ гибкий. Так называемый фреймворк, собственно, умеет только то, что умеет битрикс. Например, игра "Фермер", без проблем реализованная на Yii - пока я не придумал, как перенести ее на битрикс.

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

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

P.S. 2014.07. Спустя год с хвостиком дополню новыми наблюдениями. За это время битрикс сделал большой шаг вперед - выпустили новую версию с большими доработками и исправлениями. Наконец-то взялись делать нормальный редактор, внедрили автоматическую генерацию карты сайта (но пока только из инфоблоков), дополнили удобными сео-инструментами (генерация заголовков, имен картинок и прочее), и еще масса новых вещей. Я как-то даже удивлен и обрадован. На этом фоне решено закрепиться в сфере разработок, начал предлагать себя в области создания недорогих сайтов "под ключ" на битрикс, и сопутствующих услуг - верстка, программинг.

P.S. 2015.12. Битрикс (уже версия 15.5) стал верстать свои шаблоны с использованием моего любимого css фреймворка Bootstrap! Шаблонный интернет-магазин выглядит очень неплохо. Надеюсь, скоро перейдут полностью на адаптивную верстку. При загрузке картинок их теперь можно обрезать и масштабировать! невероятно, товарищи! новый визуальный редактор бывает, все еще лажает. Компонент Новости по прежнему не умеет выводить разделы.

 

Статьи по теме

  1. Битрикс: Веб-окружение. Создаем несколько сайтов
  2. Битрикс: защита форм от спамеров. Подключаем stopforumspam

Возврат к списку