Обзор 1С-Битрикс, принцип работы

 

 

bitrix_logo

Дабы не было не понимания, скажу сразу, данный пост я писал для людей, которые только начинают знакомиться с CMS 1С-Битрикс. Можно сказать это краткий ликбез по принципу работы данной системы. Я опишу из каких компонентов она состоит, что за что отвечает и как формируется web страница. Рекомендую прочесть данный пост перед изучением официальной документации

или как вариант после, для повторения основных моментов.

Начну с небольшого пролога, система 1С-Битрикс разработана на основе Bitrix Framework. Которая в свою очередь, вроде как основывается на Zend Framework, в официальной документации об этом сказано в скользь. Данный фреймворк построен по принципу Model-View-Controller, написан на PHP и использует в качестве СУБД следующие продукты: MySQL, Oracle, MS SQL.

CMS 1С-Битрикс платная, но есть бесплатная 30-дневная пробная версия, которую можно скачать на официальном сайте (в гугле не сложно найти).

Логически 1С-Битрикс можно разбить не следующие элементы:

  • Модули
  • Компоненты
  • Шаблон

Сравнивая 1С-Битрикс с шаблоном проектирования Model-View-Controller, можно сказать что:

  • Модуль в 1С-Битрикс это модель в MVC.
  • Компонент в 1С-Битрикс это контроллер и представление в MVC (компонент с помощью API одного или нескольких модулей манипулирует данными, а  шаблон компонента (представление) выводит данные на страницу).
  • Шаблон в 1С-Битрикс это чистое представление в понятии MVC (от него зависит не содержимое сайта а его оформление).

P.S. Это деление условно, т.к. я считаю, что фреймворк Bitrix придерживается технологии MVC не достаточно строго.

 

Начнем с модулей…

 

 

Модули располагаются в /bitrix/modules/, задача каждого из них —  предоставить API для выполнения той или иной функцию для CMS в целом, например: дать возможность хранить и выводить информацию вроде статей, новостей, фотогалерей (модуль «информационные блоки»); организовать интернет-магазин (модуль «Интернет-магазин»); гибко управлять ценами на товар и связывать интернет-магазин с 1С:Предприятие и другими сервисами вроде Яндекс.Маркет (модуль «Торговый каталог»); дать возможность организовать блог (модуль «Блоги»), форум (модуль «Форумы») и т.п. Предоставляемые модулями функции могут использовать как другие модули так и компоненты.

Помимо модулей, задача которых в расширение возможностей, существуют модули обеспечивающие работу самой CMS, например : модуль с именем «Главный модуль» — отвечает за общее функционирование системы и взаимодействие всех модулей; модуль «Управление структурой сайта» — предоставляет панель администратора и т.д..

Вообщем, если обобщить выше сказанное, возможности CMS 1С-Битрикс зависят от состава модулей. Состав может быть минимальным, имея только необходимые модули и немного функциональных, а может быть распухшим с набитыми кучей модулей на все случаи жизни. Поэтому в зависимости от поставленных задач CMS 1С-Битрикс продается в разных исполнениях – называемыми редакциями, перечислю их:

  • Первый сайт (5 модулей)
  • Старт (11 модулей)
  • Стандарт (19 модулей)
  • Малый бизнес (25 модуля)
  • Эксперт (33 модуля)
  • Бизнес (40 модулей)
  • Веб-кластер (40 модулей)
  • Бизнес веб-кластер (43 модулей)

 

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

 

О компонентах…

 

Про компоненты я расскажу более подробно, править их вы будете намного чаще, чем модули. Хочу внести ясность и однозначность в понимание понятие «компонента» в данной системе. Если вы работали на других CMS, то может возникнуть путаница, традиционно модулями в CMS называют некие функциональные расширения, которые можно устанавливать/удалить, скачивать и разрабатывать самому. Например, это может быть модуль вывода формы на e-mail подписку или модуль выводящий список популярных постов. В CMS 1С-Битрикс эту роль играют – компоненты. Список доступных компонентов вы можете увидеть в данной директории www\bitrix\components\. Где директория bitrix это пространство имен для данных компонентов, нам как бы говорят что они «битриксовые», т.е. идут с системой из коробки.

Реализация логики и способа отображения компонента содержится в двух файлах:

  • В контроллере

www\bitrix\components\bitrix\имя_компонента\component.php

  • И в представление  (так называемый шаблон компонента) —

www\bitrix\components\bitrix\имя_компонента\templates\имя_шаблона_компонента\template.php.

Суть работы компонента хорошо описана в официальной документации, повторю их слова еще раз  «компонент (т.е. его контроллер замечание от меня), с помощью API одного или нескольких модулей, манипулирует данными, шаблон компонента выводит данные на страницу».

Компонент в своем составе может иметь несколько шаблонов, один из которых будет активным (указывается при вызове компонента).

Помимо контроллера и представления, компонент имеет файлы, выполняющие более второстепенные задачи: файл — содержимого справки, логотип компонента для админпанели, файл-описание компонента для админпанели и т.п.

Типичная структура компонента выглядит так:

  • help (директория, файлы справки компонента, т.е. всплывающие подсказки при настройке компонента)
  • images (директория, изображения которые использует компонент)
  • lang (директория, содержит подпапки с языковыми файлами)
  • templates (директория с шаблонами, т.е. с представлениями)
  • .description.php (файл с описанием компонента)
  • .parameters.php (файл содержит описание входных параметров компонента, файл нужен только для конфигурирование компонента через окошко)
  • component.php (файл (контроллер), основная логика компонента)

Зайдя в директорию любого компонента (www\bitrix\components\пространство_имен\имя_компонента) вы всегда увидите схожую стркутуру, как продемонстрировано выше. Стоит добавить, что компонент все для своей работы хранит в своей папки, поэтому переносить компонент с одного web сайта на другой web сайт — значит просто скопировать папку.

Технически работу компонента можно представить следующим образом: в шаблоне сайта (footer.php или header.php, о них я расскажу позже) вызывается компонент с заданными шаблоном и параметрами:

Далее CMS формирует массив с параметрами $arParams, который обрабатывает контроллер «component.php». Контроллер (component.php) согласно своей логике работы и полученного массива параметров формирует результат своей работы, т.е. массив $arResult, который далее использует шаблон компонента (templates\имя_шаблона_компонента\template.php). Представление (или шаблон компонента) отображает результат работы в виде html кода, в задуманном оформление, в том месте где вы вызвали указанный выше код.

Параметры массива arParams=array() можно задать через запяту напрямую в коде (“ключ” => “значение”) или через окошко «параметры компонента». Хочу добавить, что если изменять параметры через окошко «параметры компонента», то они все равно сохраняются в коде, как содержимое массива arParams. Что бы вызвать это окно,  первым делом нужно авторизоваться в системе как администратор, далее зайти на сам сайт, выбрать компоненты -> режим правки, далее кликнуть по нужному компоненту два раза.

 

bitrix_component_panel

 

Как  пример, на пальцах. В желтом овале компонент «bitrix:search.form» (перед двоеточием пространство имен в котором данный компонент, после название компонента), по которому я тыкнул два раза. Далее откроется окошко «параметры компонента». Если мы изменим значение параметра (тот что в красном овале) и нажмем сохранить. То в соответствующем файле представления шаблона (footer.php или header.php, о них я расскажу позже), в коде вызова компонента (обозначил зеленой рамкой) измениться значение параметра (в красном кружке). И наоборот, изменения в коде, будут заметны через окошко.

 

bitrix_component_code

 

Замечу еще, что шаблоны компонентов могут быть системными и пользовательскими. Системные это те, что уже идут в стандартной поставки и распологаются в дриектории «www\bitrix\components\bitrix\имя_компонента\templates\». Если нам нужен свой шаблон для компонента, то мы должны создать пользовательским шаблон, и поместить его в папку со своим шаблоном сайта, т.е. по следующему адресу «www\bitrix\templates\имя_шаблона_сайта\components\bitrix\имя_компонента\имя_шаблона_компонента». Дальше, остается подключить наш пользовательский шаблон к компоненту, это можно сделать в визуальном редакторе шаблона (при двойном шелчке по нему) или подправить код его вызова (второй параметр $APPLICATION->IncludeComponent(…)).

 

bitrix_component_code_template

 

Если при вызове или настройке компонента шаблон не указывается, то используется системный шаблон «.default».

В том случае если изменением шаблона компонента вам будем мало, допустим вы хотите выводить какую-то еще информацию в шаблоне, помимо той что может обеспечить логика компонента (component.php). То вы можете добавить в директорию пользовательского шаблона компонента файл — файл result_modifier.php (в нем мы работаем с $arResult  перед кешированием) и файл component_epilog.php (в нем работаем с $arResult  после кеширования), таким образом вы дополняете нужную вам функциональность в компонент не изменяя его контроллер (т.е. component.php). Это хорошее правило, ведь все изменения в работе чего либо в CMS должны приходить и уходить вместе с шаблоном сайта, плюс к этому, системный компонент можно спокойно обновлять, до новых версий.

Есть правда и другой способ добавления функциональности, копируем тот компонент, который хотим изменить из www\bitrix\components\bitrix в свое пространство имен www\bitrix\components\мое_прост_имен, далее делаем с ним что хотим, добавляем нужный функционал и вызываем его вместо прежнего компонента в шаблоне сайта (footer.php или header.php). Но в этом случае обновляться будет только системный компонент. Этот способ стоит использовать если предыдущий метод (использовать файлы result_modifier.php и component_epilog.php в шаблоне компонента) не помогает достичь нужную вам функциональность.

P.S. В документации написано, что файл result_modifier.php подключается и исполняется, только тогда когда шаблон не кешируется, но у меня, на реальной практики он почему-то исполняется в любом случае.

 

И наконец шаблоны …

 

Тут все просто, шаблон в CMS 1C-Битрикс складывается из двух частей, верхней и нижней, все что между ними это информационное наполнение сайта, т.е. контент. Храняться шаблоны в директории www\bitrix\templates, каждая папка это отдельный шаблон. Среди папок вы всегда найдете «.default», это специальный  «шаблон», он содержит шаблоны компонентов и файлы, общие для остальных шаблонов сайта. Трогать при интеграции макета мы его вряд ли будем.

Зайдя в директорию любого шаблона вы увидите следующую структуру:

  • components (директория, содержит поддиректории с шаблонами компонент)
  • images (директория, картинки данного шаблона)           
  • include_areas (директория, содержит файлы, которые включаются в шаблоне сайта)
  • lang (директория, содержит языковые файлы)
  • page_templates (директория, содержит файлы-шаблоны, они выводятся с помощью компонента «подключаемые области» (bitrix:main.include), при выводе в браузер данных шаблонов их содержимое  наполняется в каждом отдельном разделе или подразделе с помощью файла index_inc.php)
  • snippets (директория, содержит сниппеты – маленькие фрагменты html-кода для ускорения работы контент-менеджера по созданию часто встречающихся блоков кода)
  • themes (директория, содержит подпаки с темами оформление данного шаблона, под темой понимается своя директория: с шаблонами компонент – components, директория – images с изображениями, файл с названием темы — description.php, изображение-превьюшки данной темы и файл стилей шаблона template_styles.css)
  • header.php (файл, отвечающий за вывод верхней части шаблона, т.е. до контента)
  • footer.php (файл, отвечающий за вывод нижний части шаблона, т.е. после контента)
  • description.php (файл, содержит название и описание шаблона, которое выводиться в админпанели)
  • .styles.php (файл, описания стилей для визуального редактора страниц)
  • template_styles.css (файл, стили шаблона)
  • styles.css (файл, стиль для контента и подключаемы областей, вообщем стиль контента сайта)

Обязательные файлы обеспечивающие минимум шаблона это:

  • header.php
  • footer.php
  • description.php
  • template_styles.css
  • styles.css

Файл header.php – содержит html код с php вставками <? ?>, в которых вызываются компоненты и подключаются файлы, в footer.php все аналогично. В данных файлах задается верхняя и нижняя часть шаблона.

Стили задаются в template_styles.css и styles.css.

Файл description.php необходим для описания шаблона для админпанели.

 

После всего сказанного у вас может возникнуть вопрос, если  в header храниться верхняя часть шаблона а в footer нижняя а между ними контент, то к чему относить левую и правую боковую панелью (sidebar) ? Разработчики предлагают как вариант такое решение

bitrix_templates

 

Оранжевым цветом обозначено то что относиться к header.php, зеленым к footer.php, а голубым к контенту. Вы можете выбрать какой-то свой вариант. Могут быть ситуации, когда одна из боковых панелей зависит от каждой страницы сайта, тогда её логично вынести из дизайна шаблона и считать её контентом.

 

bitrix_templates2

 

 

 

О разделах, подразделах и наполнение информации…

 

Итак, мы рассматриваем CMS 1С-Битрикс как взаимодействие модулей, компонентов и шаблона. И с ними мы вроде как разобрались, осталось  понять как сайт в системе 1С-Битрикс наполнить информацией. А если быть точнее, то, как наполнить структурированной информацией, т.е. как создать разделы, если нужно подразделы разделов и страницы разделов.

Вообщем, раздел в Битрикс это просто директория, которая располагается в  /www. Называть ее можно по любому, т.к. имя раздела в данной CMS не зависит от  имени папки. В директории-раздел должны быть как минимум следующие файлы:

  • index.php – центральная страница раздела, это php скрипт, отвечающий за наполнение контентом. В данном файле  могут вызываеться компоненты, подключаться файлы, а также можно просто хранить статичный текст.
  • .section.php – файл содержит описание – имя данного раздела

Помимо этих двух основных, могут быть еще файл:

.положение.menu.php – Файл php, отвечает за то, что показывать компоненту «меню» («menu»), когда мы зайдем в данный раздел сайта. Технически — это файл с массивом $aMenuLinks, в котором каждый элемент содержит название и ссылку. Данный файл считывает компонент «menu» и выводит соответствующие пункты меню. Вместо «положение» вы должны указать какой компонент «menu» (их может быть несколько) будет читать этот файл, это может быть «top», «right», «left» и т.д. Как задается тип компонента? Смотрим код вызова компонента «menu» (в header.php или foter.php) и обращаем внимание на параметр ROOT_MENU_TYPE, его значение и укажет его тип или что он будет читать: .top.menu.php или .left.menu.php и т.д.

 

bitrix_component_code_menu

 

Если шаблон компонента «menu» позволяет показывать подкаталоги (выдвижное меню), то мы должны указать какой файл читать для подкаталогов в параметре CHILD_MENU_TYPE.

Если файла  «.положение.menu.php» в директории раздела не будет, то движок Битрикс будет искать его в каталоге сверху, пока не найдет. Меню же нужно знать что выводить.

P.S. Помимо index.php в разделе могут быть другие страницы.

В любом разделе (или директории) могут быть подразделы (директории в данной директории), содержимое их аналогичное. Также хочу сказать, что директория www также имеет свой набор index.php, .section.php и .положение.menu.php, ее можно рассматривать как главный раздел сайта.

Наполнять сайт структурированной информацией (создавать разделы, подразделы, страницы разделов)  можно как через панель администратора (красный овал)

 

bitrix_adminpanell_top

 

так и вручную, т.е. сами создаем папки, необходимые файлы в них, редактируем файл «.положение.menu.php» в www (иначе нашего нового раздела не будет в меню).

Информационное наполнение сайта, может быть:

  • статичным — это когда мы размещаем текстовую информацию непосредственно на каждой странице раздела (т.е. в коде index.php и других страниц);
  • динамичным — это когда компонент выводит информацию с БД, но он это делает не напрямую, а через некоторую сущность — информационные блоки;

Информационные блоки создаются и наполняются в панели администратора.

На этом, данный пост я закончу. Для разработчика, который только знакомиться с CMS 1С-Битрикс данной информации будет достаточно что-бы примерно понять, что эта за система, удобна она или нет, найти сходства с другими CMS или наоборот увидеть явные различия. Это даст первое приближение, более глубокое погружение вы получите уже изучая документацию и работая с данной CMS.

 

Следующий этап «устанавливаем 1с-Битрикс«




Буду признателен если вы поделитесь данным постом

Комментарии
  1. Master-It пишет:

    C Битрикс только начинаю работать, т. е. в этом плане полный новичок.
    Почитать было интересно, спасибо!

  2. admin пишет:

    Вам спасибо. Спрашивайте, всегда отвечу.

  3. Nutcracker пишет:

    Большое спасибо, материал доходчиво изложен, и для новичков будет очень полезным. Работаю с Битрикс примерно месяц. Для себя нового ничего не узнал, но зато статья здорово помогает систематизировать имеющиеся знания.

  4. admin пишет:

    Спасибо Nutcracker за комментарий!
    Если у вас есть собственный блог и вы пишите о 1С Битрикс, с удовольствием почитаю.

  5. Nutcracker пишет:

    Я пока что больше читаю документацию, форумы и чужие блоги ) ваш, например, читаю с большим удовольствием.

  6. Belaz пишет:

    Спасибо за статью, автор, расширил мой кругозор, не смотря на кучу грамматических ошибок, смысл донести всё же удалось!

  7. admin пишет:

    Спасибо за комментарий!
    В грамматике не силен) но я старался В-)

  8. Nikita пишет:

    Здравствуйте!
    Большое спасибо за статью. Я хотел бы задать Вам вопрос: после добавления баннера в footer у меня правая боковая панель вместе с левой оказались посередине под контентом. Правая сверху. После того как я вставил в footer в начало

    они так же — правая над левой сместились в левую панель. Как мне восстановить сайт в том виде, в котором он был — левая панель слева, правая — справа?
    Спасибо!

  9. admin пишет:

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

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

  10. Nikita пишет:

    Спасибо! При наведении курсора «шестеренка» не появляется. Сейчас все панели в центре одна под другой.

  11. admin пишет:

    Посмотрел ваш сайт Nikita. На данный момент, на сайте два div-а «footer», хотя должен быть один. Причем, между двумя «footer-ами» находится div блок «sidebar» (т.е. боковая панель). По-этому, сайт отображается не корректно. Что-то тут на мудрено, с лету не скажу, что надо подправить в компоненте.

    Nikita, вам нужно авторизоваться на сайте как администратор, после чего, при наведение на компонент у вас должна появиться «шестеренка» или меню с настройками данного компонента. Вы же должны, как-то администрировать сайт. В настройках компонента, должен быть checkbox позволяющий включить/выключить компонент. Как вы его выключите, все вернется на свои места.

    Nikita, если самим проблему решить не удаться, дайте мне знать и я свяжусь с вами по электронной почте, там мы договоримся.

  12. Nikita пишет:

    Не получается( Спасибо большое, Вы бы меня просто спасли! Мой адрес ****@***.**

  13. Алексей пишет:

    Здравствуйте!

    Почитал ваши труды и многое стало понятно!
    Вообще сейчас довольно мало инфы по битриксу, думаю в силу
    его новизны.
    Сам с нуля начал изучать Битрикс и верстку и html и все сопутствующее. Если Вам интересно то весь мой опыт по битрикс я получил у Михаила Базарова(в yandex-поиск)Довольно не плохо но слишком быстро и для новичка маловато подробностей в деталях.
    Обычно именно детали нужны новичкам.

  14. admin пишет:

    Алексей, спасибо вам за теплые слова!

    Заходите на мой блог, всегда рад помочь. =)

  15. Алексей пишет:

    Сайт в избранное!!!



Ваш комментарий


Ответ в цифрах

 
© s-engineer.ru, 2012-2017 | Все права защищены