[CENTER][IMG]http://s-engineer.ru/wp-content/uploads/2013/11/bitrix_logo.jpg[/IMG][/CENTER][CENTER]Дабы не было не понимания, скажу сразу, данный пост я писал для людей, которые [B]только начинают [/B]знакомиться с [B]CMS 1С-Битрикс[/B]. Можно сказать это краткий ликбез по [B]принципу работы[/B] данной системы. Я опишу из каких компонентов она состоит, что за что отвечает и как формируется web страница. [B]Рекомендую прочесть данный пост перед изучением официальной документации[/B][/CENTER][JUSTIFY]
[/JUSTIFY][LIST][*]курс разработчика [url=http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&INDEX=Y]http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&INDEX=Y[/url][*]документация по API [url]http://dev.1c-bitrix.ru/user_help/index.php[/url]
[/LIST][JUSTIFY]или как вариант после, для [B]повторения основных моментов[/B].
Начну с небольшого пролога, система [B]1С-Битрикс[/B] разработана на основе [B]Bitrix Framework[/B]. Которая в свою очередь, вроде как основывается на [B]Zend Framework[/B], в официальной документации об этом сказано в скользь. Данный фреймворк построен по принципу [B]Model-View-Controller[/B], написан на [B]PHP[/B] и использует в качестве СУБД следующие продукты: [B]MySQL, Oracle, MS SQL[/B].[/JUSTIFY][JUSTIFY]CMS 1С-Битрикс [B]платная[/B], но есть [B]бесплатная 30-дневная пробная версия[/B], которую можно скачать на официальном сайте (в гугле не сложно найти).[/JUSTIFY][JUSTIFY]Логически 1С-Битрикс можно разбить не следующие элементы:[/JUSTIFY][LIST][*][B]Модули[/B][*][B]Компоненты[/B][*][B]Шаблон[/B]
[/LIST][JUSTIFY][B]Сравнивая 1С-Битрикс с[/B] шаблоном проектирования [B]Model-View-Controller[/B], можно сказать что:[/JUSTIFY][LIST][*][B]Модуль[/B] в 1С-Битрикс это [B]модель[/B] в MVC.[*][B]Компонент[/B] в 1С-Битрикс это [B]контроллер и представление[/B] в MVC (компонент с помощью API одного или нескольких модулей манипулирует данными, а шаблон компонента (представление) выводит данные на страницу).[*][B]Шаблон[/B] в 1С-Битрикс это чистое [B]представление[/B] в понятии MVC (от него зависит не содержимое сайта а его оформление).
[/LIST][JUSTIFY]P.S. Это деление условно, т.к. я считаю, что фреймворк Bitrix придерживается технологии MVC не достаточно строго.[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Начнем с модулей…[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][B]Модули[/B] располагаются в [B]/bitrix/modules/[/B], задача каждого из них – [B]предоставить API[/B] для выполнения той или иной [B]функцию для CMS в целом[/B], например: [B]дать возможность хранить и выводить информацию[/B]вроде статей, новостей, фотогалерей (модуль «информационные блоки»); [B]организовать интернет-магазин[/B](модуль «Интернет-магазин»); [B]гибко управлять ценами на товар и связывать[/B] интернет-магазин [B]с 1С:Предприятие[/B] и другими сервисами вроде [B]Яндекс.Маркет[/B] (модуль «Торговый каталог»); дать[B]возможность организовать блог[/B] (модуль «Блоги»), [B]форум[/B] (модуль «Форумы») и т.п. Предоставляемые модулями функции могут использовать [B]как другие модули так и компоненты[/B].[/JUSTIFY][JUSTIFY]Помимо модулей, задача которых [B]в расширение возможностей[/B], существуют модули [B]обеспечивающие работу самой CMS[/B], например : модуль с именем «[B]Главный модуль[/B]» – отвечает за общее функционирование системы и взаимодействие всех модулей; модуль «[B]Управление структурой сайта[/B]» – предоставляет панель администратора и т.д..[/JUSTIFY][JUSTIFY]Вообщем, если обобщить выше сказанное, возможности CMS 1С-Битрикс [B]зависят от состава модулей[/B]. Состав может быть минимальным, имея только необходимые модули и немного функциональных, а может быть распухшим с набитыми кучей модулей на все случаи жизни. Поэтому в зависимости от поставленных задач [B]CMS 1С-Битрикс продается в разных исполнениях[/B] – называемыми [B]редакциями, перечислю их[/B]:[/JUSTIFY][LIST][*]Первый сайт (5 модулей)[*]Старт (11 модулей)[*]Стандарт (19 модулей)[*]Малый бизнес (25 модуля)[*]Эксперт (33 модуля)[*]Бизнес (40 модулей)[*]Веб-кластер (40 модулей)[*]Бизнес веб-кластер (43 модулей)
[/LIST][JUSTIFY] [/JUSTIFY][JUSTIFY]Касаться технических сторон создания своих модулей я не буду, думаю web-разработчикам, которые только знакомятся с 1С-Битрикс знать о таких подробностях пока излишне. Вы всегда можете найти всю необходимую информацию в официальной документации (ссылки указанны в начале поста).[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]О компонентах…[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Про компоненты я расскажу более подробно, править [B]их вы будете намного чаще[/B], [B]чем модули.[/B] Хочу внести ясность и однозначность в понимание понятие «[B]компонента[/B]» в данной системе. Если вы работали на других CMS, то может возникнуть путаница, традиционно [B]модулями[/B] в CMS называют некие[B]функциональные расширения[/B], которые можно устанавливать/удалить, скачивать и разрабатывать самому. Например, это может быть модуль вывода формы на e-mail подписку или модуль выводящий список популярных постов. [B]В CMS 1С-Битрикс эту роль играют – компоненты[/B]. Список доступных компонентов вы можете увидеть в данной директории [B]www\bitrix\components\[/B]. Где директория [B]bitrix[/B] это пространство имен для данных компонентов, нам как бы говорят что они «битриксовые», т.е. идут с системой из коробки.[/JUSTIFY][JUSTIFY]Реализация [B]логики[/B] и [B]способа отображения компонента[/B] содержится в двух файлах:[/JUSTIFY][LIST][*]В контроллере
[/LIST][JUSTIFY][B]www\bitrix\components\bitrix\имя_компонента\component.php[/B][/JUSTIFY][LIST][*]И в представление (так называемый шаблон компонента) -
[/LIST][JUSTIFY][B]www\bitrix\components\bitrix\имя_компонента\templates\имя_шаблона_компонента\template.php .[/B][/JUSTIFY][JUSTIFY]Суть работы компонента хорошо описана в официальной документации, повторю их слова еще раз «компонент (т.е. его контроллер замечание от меня), с помощью API одного или нескольких модулей, манипулирует данными, шаблон компонента выводит данные на страницу».[/JUSTIFY][JUSTIFY]Компонент в своем составе может иметь [B]несколько[/B] шаблонов, один из которых будет [B]активным[/B](указывается при [B]вызове компонента[/B]).[/JUSTIFY][JUSTIFY]Помимо [B]контроллера[/B] и [B]представления[/B], компонент [B]имеет файлы[/B], выполняющие более [B]второстепенные задачи[/B]: файл – содержимого справки, логотип компонента для админпанели, файл-описание компонента для админпанели и т.п.[/JUSTIFY][JUSTIFY]Типичная структура компонента выглядит так:[/JUSTIFY][LIST][*][B]help[/B] (директория, файлы справки компонента, т.е. всплывающие подсказки при настройке компонента)[*][B]images[/B] (директория, изображения которые использует компонент)[*][B]lang[/B] (директория, содержит подпапки с языковыми файлами)[*][B]templates[/B] (директория с шаблонами, т.е. с [B]представлениями[/B])[*][B].description.php[/B] (файл с описанием компонента)[*][B].parameters.php[/B] (файл содержит описание входных параметров компонента, файл нужен только для конфигурирование компонента через окошко)[*][B]component.php[/B] (файл ([B]контроллер[/B]), основная логика компонента)
[/LIST][JUSTIFY]Зайдя в директорию любого компонента ([B]www\bitrix\components\пространство_имен\имя_компонента[/B]) вы всегда увидите схожую стркутуру, как продемонстрировано выше. Стоит добавить, что компонент [B]все для своей работы хранит в своей папки[/B], поэтому переносить компонент с одного web сайта на другой web сайт – значит просто [B]скопировать папку[/B].[/JUSTIFY][JUSTIFY]Технически работу компонента можно представить следующим образом: в шаблоне сайта (footer.php или header.php, о них я расскажу позже) в[B]ызывается компонент с заданными шаблоном и параметрами:[/B][/JUSTIFY][TABLE][TR][TD]
[CENTER]1[/CENTER][CENTER]2[/CENTER][CENTER]3[/CENTER][CENTER]4[/CENTER][CENTER]5[/CENTER][CENTER]6[/CENTER][CENTER]7[/CENTER]
[/TD][TD]
<$APPLICATION->IncludeComponent(
componentName, // имя компонента
componentTemplate, // шаблон компонента, пустая строка если шаблон по умолчанию
arParams=array(), // параметры
parentComponent=null,
arFunctionParams=array()
);>
[/TD][/TR][/TABLE][CENTER]Далее [B]CMS формирует массив с параметрами $arParams[/B], который [B]обрабатывает[/B] контроллер «[B]component.php[/B]». Контроллер (component.php) согласно [B]своей логике работы и полученного массива параметров[/B] формирует результат своей работы, т.е. массив [B]$arResult[/B], который далее [B]использует шаблон компонента[/B] (templates\имя_шаблона_компонента\template.php). [B]Представление[/B] (или [B]шаблон компонента[/B]) отображает результат работы в виде [B]html[/B] кода, в задуманном оформление, [B]в том месте где вы вызвали указанный выше код[/B].[/CENTER][JUSTIFY][B]Параметры[/B] массива [B]arParams=array()[/B] можно задать через запяту напрямую [B]в коде[/B] (“ключ” => “значение”) или через [B]окошко[/B] «параметры компонента». Хочу добавить, что если [B]изменять параметры через окошко[/B]«параметры компонента», то они все равно [B]сохраняются в коде[/B], как содержимое массива [B]arParams[/B]. Что бы вызвать это окно, первым делом нужно авторизоваться в системе как администратор, далее зайти на сам сайт, выбрать компоненты -> режим правки, далее кликнуть по нужному компоненту два раза.[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/bitrix_component_panel/][IMG WIDTH=700 HEIGHT=500]http://s-engineer.ru/wp-content/uploads/2013/11/bitrix_component_panel.jpg[/IMG][/url][/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Как пример, на пальцах. В желтом овале компонент «[B]bitrix:search.form[/B]» (перед двоеточием пространство имен в котором данный компонент, после название компонента), по которому я тыкнул два раза. Далее откроется [B]окошко «параметры компонента»[/B]. Если мы [B]изменим значение[/B] параметра (тот что в красном овале) и нажмем сохранить. То в соответствующем файле представления шаблона (footer.php или header.php, о них я расскажу позже), в коде вызова компонента (обозначил зеленой рамкой) [B]измениться значение параметра[/B] (в красном кружке). И наоборот, изменения в коде, будут заметны через окошко.[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/bitrix_component_code/][IMG WIDTH=700 HEIGHT=498]http://s-engineer.ru/wp-content/uploads/2013/11/bitrix_component_code.jpg[/IMG][/url][/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Замечу еще, что шаблоны компонентов могут быть [B]системными[/B] и [B]пользовательскими[/B]. Системные это те, что уже идут в стандартной поставки и распологаются в дриектории «[B]www\bitrix\components\bitrix\имя_компонента\templates\[/B]». Если нам нужен свой шаблон для компонента, то мы должны создать пользовательским шаблон, и поместить его в папку со своим шаблоном сайта, т.е. по следующему адресу «[B]www\bitrix\templates\имя_шаблона_сайта\components\bitrix\имя_компонента\имя_шаблона_компонента[/B]». Дальше, остается подключить наш пользовательский шаблон к компоненту, это можно сделать в визуальном редакторе шаблона (при двойном шелчке по нему) или подправить код его вызова (второй параметр [B]$APPLICATION->IncludeComponent(…))[/B].[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/bitrix_component_code_template/][IMG WIDTH=700 HEIGHT=498]http://s-engineer.ru/wp-content/uploads/2013/11/bitrix_component_code_template.jpg[/IMG][/url][/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Если при вызове или настройке компонента шаблон [B]не указывается[/B], то используется системный шаблон «[B].default[/B]».[/JUSTIFY][JUSTIFY]В том случае если изменением шаблона компонента вам будем мало, допустим вы хотите выводить какую-то еще информацию в шаблоне, помимо той что может обеспечить логика компонента (component.php). То вы можете добавить в директорию пользовательского шаблона компонента файл – файл[B]result_modifier.php[/B] (в нем мы работаем с [B]$arResult перед кешированием[/B]) и файл [B]component_epilog.php[/B] (в нем работаем с [B]$arResult после кеширования[/B]), таким образом вы дополняете [B]нужную вам функциональность в компонент не изменяя его контроллер[/B] (т.е. component.php). Это хорошее правило, ведь все изменения в работе чего либо в CMS должны приходить и уходить вместе с шаблоном сайта, плюс к этому, системный компонент можно спокойно обновлять, до новых версий.[/JUSTIFY][JUSTIFY]Есть правда и другой способ добавления функциональности, копируем тот компонент, который хотим изменить из [B]www\bitrix\components\bitrix[/B] в свое пространство имен[B]www\bitrix\components\мое_прост_имен[/B], далее делаем с ним что хотим, добавляем нужный функционал и вызываем его вместо прежнего компонента в шаблоне сайта (footer.php или header.php). Но в этом случае обновляться будет только системный компонент. Этот способ стоит использовать если предыдущий метод (использовать файлы result_modifier.php и component_epilog.php в шаблоне компонента) не помогает достичь нужную вам функциональность.[/JUSTIFY][JUSTIFY]P.S. В документации написано, что файл result_modifier.php подключается и исполняется, только тогда когда шаблон не кешируется, но у меня, на реальной практики он почему-то исполняется в любом случае.[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]И наконец шаблоны …[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Тут все просто,[B] шаблон[/B] в [B]CMS 1C-Битрикс[/B] складывается [B]из двух частей[/B], [B]верхней[/B] и [B]нижней[/B], все что между ними это информационное наполнение сайта, т.е. [B]контент[/B]. Храняться шаблоны в директории[B]www\bitrix\templates[/B], каждая [B]папка это отдельный шаблон[/B]. Среди папок вы всегда найдете «[B].default[/B]», это специальный «[B]шаблон[/B]», он содержит шаблоны компонентов и файлы, [B]общие для остальных шаблонов сайта[/B]. Трогать при интеграции макета мы его вряд ли будем.[/JUSTIFY][JUSTIFY]Зайдя в директорию любого шаблона вы увидите следующую структуру:[/JUSTIFY][LIST][*][B]components[/B] (директория, содержит поддиректории с шаблонами компонент)[*][B]images[/B] (директория, картинки данного шаблона)[*][B]include_areas[/B] (директория, содержит файлы, которые включаются в шаблоне сайта)[*][B]lang[/B] (директория, содержит языковые файлы)[*][B]page_templates[/B] (директория, содержит файлы-шаблоны, они выводятся с помощью компонента «подключаемые области» ([B]bitrix:main.include[/B]), при выводе в браузер данных шаблонов их содержимое наполняется в каждом отдельном разделе или подразделе с помощью файла index_inc.php)[*][B]snippets[/B] (директория, содержит сниппеты – маленькие фрагменты html-кода для ускорения работы контент-менеджера по созданию часто встречающихся блоков кода)[*][B]themes[/B] (директория, содержит подпаки с темами оформление данного шаблона, под темой понимается своя директория: с шаблонами компонент – components, директория – images с изображениями, файл с названием темы – description.php, изображение-превьюшки данной темы и файл стилей шаблона template_styles.css)[*][B]header.php[/B] (файл, отвечающий за вывод верхней части шаблона, т.е. до контента)[*][B]footer.php[/B] (файл, отвечающий за вывод нижний части шаблона, т.е. после контента)[*][B]description.php[/B] (файл, содержит название и описание шаблона, которое выводиться в админпанели)[*][B].styles.php[/B] (файл, описания стилей для визуального редактора страниц)[*][B]template_styles.css[/B] (файл, стили шаблона)[*][B]styles.css[/B] (файл, стиль для контента и подключаемы областей, вообщем стиль контента сайта)
[/LIST][JUSTIFY]Обязательные файлы обеспечивающие минимум шаблона это:[/JUSTIFY][LIST][*][B]header.php[/B][*][B]footer.php[/B][*][B]description.php[/B][*][B]template_styles.css[/B][*][B]styles.css[/B]
[/LIST][JUSTIFY]Файл [B]header.php[/B] – содержит [B]html код с php вставками <? ?>[/B], в которых вызываются [B]компоненты и подключаются файлы[/B], в [B]footer.php[/B] все [B]аналогично[/B]. В данных файлах задается [B]верхняя[/B] и [B]нижняя[/B] часть шаблона.[/JUSTIFY][JUSTIFY]Стили задаются в[B] template_styles.css[/B] и [B]styles.css[/B].[/JUSTIFY][JUSTIFY]Файл [B]description.php[/B] необходим для [B]описания шаблона для админпанели[/B].[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]После всего сказанного у вас может возникнуть вопрос, если в header храниться верхняя часть шаблона а в footer нижняя а между ними контент, [B]то к чему относить левую и правую боковую панелью[/B](sidebar) ? Разработчики предлагают как вариант такое решение[/JUSTIFY][JUSTIFY][url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/bitrix_templates/][IMG WIDTH=800 HEIGHT=600]http://s-engineer.ru/wp-content/uploads/2013/11/bitrix_templates.jpg[/IMG][/url][/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][B]Оранжевым[/B] цветом обозначено то что относиться к [B]header.php[/B], [B]зеленым к footer.php[/B], а [B]голубым к контенту[/B]. Вы можете выбрать какой-то свой вариант. Могут быть ситуации, когда одна из боковых панелей зависит от каждой страницы сайта, тогда её логично вынести из дизайна шаблона и считать её контентом.[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/bitrix_templates2/][IMG WIDTH=800 HEIGHT=600]http://s-engineer.ru/wp-content/uploads/2013/11/bitrix_templates2.jpg[/IMG][/url][/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]О разделах, подразделах и наполнение информации…[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Итак, мы рассматриваем [B]CMS 1С-Битрикс[/B] как взаимодействие [B]модулей[/B], [B]компонентов[/B] и [B]шаблона[/B]. И с ними мы вроде как разобрались, осталось понять как сайт в системе 1С-Битрикс наполнить информацией. А если быть точнее, то, как наполнить структурированной информацией, т.е. как создать [B]разделы, [/B]если нужно[B] подразделы разделов[/B] и [B]страницы разделов[/B].[/JUSTIFY][JUSTIFY]Вообщем, [B]раздел[/B] в Битрикс это [B]просто директория[/B], которая располагается в [B]/www[/B]. Называть ее можно по любому, т.к. имя раздела в данной CMS [B]не зависит от имени папки[/B]. В директории-раздел должны быть как минимум следующие файлы:[/JUSTIFY][LIST][*][B]index.php[/B] – центральная страница раздела, это php скрипт, отвечающий за наполнение контентом. В данном файле могут вызываеться компоненты, подключаться файлы, а также можно просто хранить статичный текст.[*][B].section.php[/B] – файл содержит описание – имя данного раздела
[/LIST][JUSTIFY]Помимо этих двух основных, могут быть еще файл:[/JUSTIFY][JUSTIFY][B].положение.menu.php[/B] – Файл php, отвечает за то, что показывать компоненту «[B]меню[/B]» («menu»), когда мы зайдем в данный раздел сайта. Технически – это файл с массивом [B]$aMenuLinks[/B], в котором каждый элемент содержит [B]название[/B] и [B]ссылку[/B]. Данный файл [B]считывает[/B] компонент «[B]menu[/B]» и [B]выводит соответствующие пункты меню[/B]. Вместо «[B]положение[/B]» вы должны указать какой компонент «menu» (их может быть несколько) будет читать этот файл, это может быть «[B]top[/B]», «[B]right[/B]», «[B]left[/B]» и т.д. Как задается тип компонента? Смотрим код вызова компонента «menu» (в header.php или foter.php) и обращаем внимание на параметр [B]ROOT_MENU_TYPE[/B], его значение и укажет его тип или что он будет читать: [B].top.menu.php[/B] или[B].left.menu.php[/B] и т.д.[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/bitrix_component_code_menu/][IMG WIDTH=700 HEIGHT=298]http://s-engineer.ru/wp-content/uploads/2013/11/bitrix_component_code_menu.jpg[/IMG][/url][/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Если шаблон компонента «menu» позволяет показывать подкаталоги (выдвижное меню), то мы должны указать какой файл читать для подкаталогов в параметре [B]CHILD_MENU_TYPE[/B].[/JUSTIFY][JUSTIFY]Если файла «[B].положение.menu.php[/B]» в директории раздела не будет, то движок Битрикс будет [B]искать[/B] его в[B]каталоге сверху[/B], пока не найдет. Меню же нужно знать что выводить.[/JUSTIFY][JUSTIFY]P.S. Помимо index.php в разделе могут быть другие страницы.[/JUSTIFY][JUSTIFY]В любом разделе (или директории) могут быть [B]подразделы[/B] (директории в данной директории), содержимое их аналогичное. Также хочу сказать, что директория [B]www[/B] также имеет свой набор [B]index.php[/B],[B].section.php[/B] и [B].положение.menu.php[/B], ее можно рассматривать как главный раздел сайта.[/JUSTIFY][JUSTIFY]Наполнять сайт структурированной информацией (создавать разделы, подразделы, их страницы с информацией) можно как через [B]панель администратора[/B] (красный овал)[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/bitrix_adminpanell_top/][IMG WIDTH=700 HEIGHT=201]http://s-engineer.ru/wp-content/uploads/2013/11/bitrix_adminpanell_top.jpg[/IMG][/url][/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]так и вручную, т.е. сами создаем папки, необходимые файлы в них, редактируем файл “.положение.menu.php” в www (иначе нашего нового раздела не будет в меню).[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]На этом, данный пост я закончу. Для разработчика, который только знакомиться с CMS 1С-Битрикс данной информации будет достаточно что-бы примерно понять, что эта за система, удобна она или нет, найти сходства с другими CMS или наоборот увидеть явные различия. Это даст первое приближение, более глубокое погружение вы получите уже изучая документацию и работая с данной CMS.[/JUSTIFY][JUSTIFY]
[/JUSTIFY][JUSTIFY]Источник: [url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/]Обзор 1С-Битрикс, принцип работы[/url][/JUSTIFY]
[/JUSTIFY][LIST][*]курс разработчика [url=http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&INDEX=Y]http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&INDEX=Y[/url][*]документация по API [url]http://dev.1c-bitrix.ru/user_help/index.php[/url]
[/LIST][JUSTIFY]или как вариант после, для [B]повторения основных моментов[/B].
Начну с небольшого пролога, система [B]1С-Битрикс[/B] разработана на основе [B]Bitrix Framework[/B]. Которая в свою очередь, вроде как основывается на [B]Zend Framework[/B], в официальной документации об этом сказано в скользь. Данный фреймворк построен по принципу [B]Model-View-Controller[/B], написан на [B]PHP[/B] и использует в качестве СУБД следующие продукты: [B]MySQL, Oracle, MS SQL[/B].[/JUSTIFY][JUSTIFY]CMS 1С-Битрикс [B]платная[/B], но есть [B]бесплатная 30-дневная пробная версия[/B], которую можно скачать на официальном сайте (в гугле не сложно найти).[/JUSTIFY][JUSTIFY]Логически 1С-Битрикс можно разбить не следующие элементы:[/JUSTIFY][LIST][*][B]Модули[/B][*][B]Компоненты[/B][*][B]Шаблон[/B]
[/LIST][JUSTIFY][B]Сравнивая 1С-Битрикс с[/B] шаблоном проектирования [B]Model-View-Controller[/B], можно сказать что:[/JUSTIFY][LIST][*][B]Модуль[/B] в 1С-Битрикс это [B]модель[/B] в MVC.[*][B]Компонент[/B] в 1С-Битрикс это [B]контроллер и представление[/B] в MVC (компонент с помощью API одного или нескольких модулей манипулирует данными, а шаблон компонента (представление) выводит данные на страницу).[*][B]Шаблон[/B] в 1С-Битрикс это чистое [B]представление[/B] в понятии MVC (от него зависит не содержимое сайта а его оформление).
[/LIST][JUSTIFY]P.S. Это деление условно, т.к. я считаю, что фреймворк Bitrix придерживается технологии MVC не достаточно строго.[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Начнем с модулей…[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][B]Модули[/B] располагаются в [B]/bitrix/modules/[/B], задача каждого из них – [B]предоставить API[/B] для выполнения той или иной [B]функцию для CMS в целом[/B], например: [B]дать возможность хранить и выводить информацию[/B]вроде статей, новостей, фотогалерей (модуль «информационные блоки»); [B]организовать интернет-магазин[/B](модуль «Интернет-магазин»); [B]гибко управлять ценами на товар и связывать[/B] интернет-магазин [B]с 1С:Предприятие[/B] и другими сервисами вроде [B]Яндекс.Маркет[/B] (модуль «Торговый каталог»); дать[B]возможность организовать блог[/B] (модуль «Блоги»), [B]форум[/B] (модуль «Форумы») и т.п. Предоставляемые модулями функции могут использовать [B]как другие модули так и компоненты[/B].[/JUSTIFY][JUSTIFY]Помимо модулей, задача которых [B]в расширение возможностей[/B], существуют модули [B]обеспечивающие работу самой CMS[/B], например : модуль с именем «[B]Главный модуль[/B]» – отвечает за общее функционирование системы и взаимодействие всех модулей; модуль «[B]Управление структурой сайта[/B]» – предоставляет панель администратора и т.д..[/JUSTIFY][JUSTIFY]Вообщем, если обобщить выше сказанное, возможности CMS 1С-Битрикс [B]зависят от состава модулей[/B]. Состав может быть минимальным, имея только необходимые модули и немного функциональных, а может быть распухшим с набитыми кучей модулей на все случаи жизни. Поэтому в зависимости от поставленных задач [B]CMS 1С-Битрикс продается в разных исполнениях[/B] – называемыми [B]редакциями, перечислю их[/B]:[/JUSTIFY][LIST][*]Первый сайт (5 модулей)[*]Старт (11 модулей)[*]Стандарт (19 модулей)[*]Малый бизнес (25 модуля)[*]Эксперт (33 модуля)[*]Бизнес (40 модулей)[*]Веб-кластер (40 модулей)[*]Бизнес веб-кластер (43 модулей)
[/LIST][JUSTIFY] [/JUSTIFY][JUSTIFY]Касаться технических сторон создания своих модулей я не буду, думаю web-разработчикам, которые только знакомятся с 1С-Битрикс знать о таких подробностях пока излишне. Вы всегда можете найти всю необходимую информацию в официальной документации (ссылки указанны в начале поста).[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]О компонентах…[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Про компоненты я расскажу более подробно, править [B]их вы будете намного чаще[/B], [B]чем модули.[/B] Хочу внести ясность и однозначность в понимание понятие «[B]компонента[/B]» в данной системе. Если вы работали на других CMS, то может возникнуть путаница, традиционно [B]модулями[/B] в CMS называют некие[B]функциональные расширения[/B], которые можно устанавливать/удалить, скачивать и разрабатывать самому. Например, это может быть модуль вывода формы на e-mail подписку или модуль выводящий список популярных постов. [B]В CMS 1С-Битрикс эту роль играют – компоненты[/B]. Список доступных компонентов вы можете увидеть в данной директории [B]www\bitrix\components\[/B]. Где директория [B]bitrix[/B] это пространство имен для данных компонентов, нам как бы говорят что они «битриксовые», т.е. идут с системой из коробки.[/JUSTIFY][JUSTIFY]Реализация [B]логики[/B] и [B]способа отображения компонента[/B] содержится в двух файлах:[/JUSTIFY][LIST][*]В контроллере
[/LIST][JUSTIFY][B]www\bitrix\components\bitrix\имя_компонента\component.php[/B][/JUSTIFY][LIST][*]И в представление (так называемый шаблон компонента) -
[/LIST][JUSTIFY][B]www\bitrix\components\bitrix\имя_компонента\templates\имя_шаблона_компонента\template.php .[/B][/JUSTIFY][JUSTIFY]Суть работы компонента хорошо описана в официальной документации, повторю их слова еще раз «компонент (т.е. его контроллер замечание от меня), с помощью API одного или нескольких модулей, манипулирует данными, шаблон компонента выводит данные на страницу».[/JUSTIFY][JUSTIFY]Компонент в своем составе может иметь [B]несколько[/B] шаблонов, один из которых будет [B]активным[/B](указывается при [B]вызове компонента[/B]).[/JUSTIFY][JUSTIFY]Помимо [B]контроллера[/B] и [B]представления[/B], компонент [B]имеет файлы[/B], выполняющие более [B]второстепенные задачи[/B]: файл – содержимого справки, логотип компонента для админпанели, файл-описание компонента для админпанели и т.п.[/JUSTIFY][JUSTIFY]Типичная структура компонента выглядит так:[/JUSTIFY][LIST][*][B]help[/B] (директория, файлы справки компонента, т.е. всплывающие подсказки при настройке компонента)[*][B]images[/B] (директория, изображения которые использует компонент)[*][B]lang[/B] (директория, содержит подпапки с языковыми файлами)[*][B]templates[/B] (директория с шаблонами, т.е. с [B]представлениями[/B])[*][B].description.php[/B] (файл с описанием компонента)[*][B].parameters.php[/B] (файл содержит описание входных параметров компонента, файл нужен только для конфигурирование компонента через окошко)[*][B]component.php[/B] (файл ([B]контроллер[/B]), основная логика компонента)
[/LIST][JUSTIFY]Зайдя в директорию любого компонента ([B]www\bitrix\components\пространство_имен\имя_компонента[/B]) вы всегда увидите схожую стркутуру, как продемонстрировано выше. Стоит добавить, что компонент [B]все для своей работы хранит в своей папки[/B], поэтому переносить компонент с одного web сайта на другой web сайт – значит просто [B]скопировать папку[/B].[/JUSTIFY][JUSTIFY]Технически работу компонента можно представить следующим образом: в шаблоне сайта (footer.php или header.php, о них я расскажу позже) в[B]ызывается компонент с заданными шаблоном и параметрами:[/B][/JUSTIFY][TABLE][TR][TD]
[CENTER]1[/CENTER][CENTER]2[/CENTER][CENTER]3[/CENTER][CENTER]4[/CENTER][CENTER]5[/CENTER][CENTER]6[/CENTER][CENTER]7[/CENTER]
[/TD][TD]
<$APPLICATION->IncludeComponent(
componentName, // имя компонента
componentTemplate, // шаблон компонента, пустая строка если шаблон по умолчанию
arParams=array(), // параметры
parentComponent=null,
arFunctionParams=array()
);>
[/TD][/TR][/TABLE][CENTER]Далее [B]CMS формирует массив с параметрами $arParams[/B], который [B]обрабатывает[/B] контроллер «[B]component.php[/B]». Контроллер (component.php) согласно [B]своей логике работы и полученного массива параметров[/B] формирует результат своей работы, т.е. массив [B]$arResult[/B], который далее [B]использует шаблон компонента[/B] (templates\имя_шаблона_компонента\template.php). [B]Представление[/B] (или [B]шаблон компонента[/B]) отображает результат работы в виде [B]html[/B] кода, в задуманном оформление, [B]в том месте где вы вызвали указанный выше код[/B].[/CENTER][JUSTIFY][B]Параметры[/B] массива [B]arParams=array()[/B] можно задать через запяту напрямую [B]в коде[/B] (“ключ” => “значение”) или через [B]окошко[/B] «параметры компонента». Хочу добавить, что если [B]изменять параметры через окошко[/B]«параметры компонента», то они все равно [B]сохраняются в коде[/B], как содержимое массива [B]arParams[/B]. Что бы вызвать это окно, первым делом нужно авторизоваться в системе как администратор, далее зайти на сам сайт, выбрать компоненты -> режим правки, далее кликнуть по нужному компоненту два раза.[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/bitrix_component_panel/][IMG WIDTH=700 HEIGHT=500]http://s-engineer.ru/wp-content/uploads/2013/11/bitrix_component_panel.jpg[/IMG][/url][/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Как пример, на пальцах. В желтом овале компонент «[B]bitrix:search.form[/B]» (перед двоеточием пространство имен в котором данный компонент, после название компонента), по которому я тыкнул два раза. Далее откроется [B]окошко «параметры компонента»[/B]. Если мы [B]изменим значение[/B] параметра (тот что в красном овале) и нажмем сохранить. То в соответствующем файле представления шаблона (footer.php или header.php, о них я расскажу позже), в коде вызова компонента (обозначил зеленой рамкой) [B]измениться значение параметра[/B] (в красном кружке). И наоборот, изменения в коде, будут заметны через окошко.[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/bitrix_component_code/][IMG WIDTH=700 HEIGHT=498]http://s-engineer.ru/wp-content/uploads/2013/11/bitrix_component_code.jpg[/IMG][/url][/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Замечу еще, что шаблоны компонентов могут быть [B]системными[/B] и [B]пользовательскими[/B]. Системные это те, что уже идут в стандартной поставки и распологаются в дриектории «[B]www\bitrix\components\bitrix\имя_компонента\templates\[/B]». Если нам нужен свой шаблон для компонента, то мы должны создать пользовательским шаблон, и поместить его в папку со своим шаблоном сайта, т.е. по следующему адресу «[B]www\bitrix\templates\имя_шаблона_сайта\components\bitrix\имя_компонента\имя_шаблона_компонента[/B]». Дальше, остается подключить наш пользовательский шаблон к компоненту, это можно сделать в визуальном редакторе шаблона (при двойном шелчке по нему) или подправить код его вызова (второй параметр [B]$APPLICATION->IncludeComponent(…))[/B].[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/bitrix_component_code_template/][IMG WIDTH=700 HEIGHT=498]http://s-engineer.ru/wp-content/uploads/2013/11/bitrix_component_code_template.jpg[/IMG][/url][/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Если при вызове или настройке компонента шаблон [B]не указывается[/B], то используется системный шаблон «[B].default[/B]».[/JUSTIFY][JUSTIFY]В том случае если изменением шаблона компонента вам будем мало, допустим вы хотите выводить какую-то еще информацию в шаблоне, помимо той что может обеспечить логика компонента (component.php). То вы можете добавить в директорию пользовательского шаблона компонента файл – файл[B]result_modifier.php[/B] (в нем мы работаем с [B]$arResult перед кешированием[/B]) и файл [B]component_epilog.php[/B] (в нем работаем с [B]$arResult после кеширования[/B]), таким образом вы дополняете [B]нужную вам функциональность в компонент не изменяя его контроллер[/B] (т.е. component.php). Это хорошее правило, ведь все изменения в работе чего либо в CMS должны приходить и уходить вместе с шаблоном сайта, плюс к этому, системный компонент можно спокойно обновлять, до новых версий.[/JUSTIFY][JUSTIFY]Есть правда и другой способ добавления функциональности, копируем тот компонент, который хотим изменить из [B]www\bitrix\components\bitrix[/B] в свое пространство имен[B]www\bitrix\components\мое_прост_имен[/B], далее делаем с ним что хотим, добавляем нужный функционал и вызываем его вместо прежнего компонента в шаблоне сайта (footer.php или header.php). Но в этом случае обновляться будет только системный компонент. Этот способ стоит использовать если предыдущий метод (использовать файлы result_modifier.php и component_epilog.php в шаблоне компонента) не помогает достичь нужную вам функциональность.[/JUSTIFY][JUSTIFY]P.S. В документации написано, что файл result_modifier.php подключается и исполняется, только тогда когда шаблон не кешируется, но у меня, на реальной практики он почему-то исполняется в любом случае.[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]И наконец шаблоны …[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Тут все просто,[B] шаблон[/B] в [B]CMS 1C-Битрикс[/B] складывается [B]из двух частей[/B], [B]верхней[/B] и [B]нижней[/B], все что между ними это информационное наполнение сайта, т.е. [B]контент[/B]. Храняться шаблоны в директории[B]www\bitrix\templates[/B], каждая [B]папка это отдельный шаблон[/B]. Среди папок вы всегда найдете «[B].default[/B]», это специальный «[B]шаблон[/B]», он содержит шаблоны компонентов и файлы, [B]общие для остальных шаблонов сайта[/B]. Трогать при интеграции макета мы его вряд ли будем.[/JUSTIFY][JUSTIFY]Зайдя в директорию любого шаблона вы увидите следующую структуру:[/JUSTIFY][LIST][*][B]components[/B] (директория, содержит поддиректории с шаблонами компонент)[*][B]images[/B] (директория, картинки данного шаблона)[*][B]include_areas[/B] (директория, содержит файлы, которые включаются в шаблоне сайта)[*][B]lang[/B] (директория, содержит языковые файлы)[*][B]page_templates[/B] (директория, содержит файлы-шаблоны, они выводятся с помощью компонента «подключаемые области» ([B]bitrix:main.include[/B]), при выводе в браузер данных шаблонов их содержимое наполняется в каждом отдельном разделе или подразделе с помощью файла index_inc.php)[*][B]snippets[/B] (директория, содержит сниппеты – маленькие фрагменты html-кода для ускорения работы контент-менеджера по созданию часто встречающихся блоков кода)[*][B]themes[/B] (директория, содержит подпаки с темами оформление данного шаблона, под темой понимается своя директория: с шаблонами компонент – components, директория – images с изображениями, файл с названием темы – description.php, изображение-превьюшки данной темы и файл стилей шаблона template_styles.css)[*][B]header.php[/B] (файл, отвечающий за вывод верхней части шаблона, т.е. до контента)[*][B]footer.php[/B] (файл, отвечающий за вывод нижний части шаблона, т.е. после контента)[*][B]description.php[/B] (файл, содержит название и описание шаблона, которое выводиться в админпанели)[*][B].styles.php[/B] (файл, описания стилей для визуального редактора страниц)[*][B]template_styles.css[/B] (файл, стили шаблона)[*][B]styles.css[/B] (файл, стиль для контента и подключаемы областей, вообщем стиль контента сайта)
[/LIST][JUSTIFY]Обязательные файлы обеспечивающие минимум шаблона это:[/JUSTIFY][LIST][*][B]header.php[/B][*][B]footer.php[/B][*][B]description.php[/B][*][B]template_styles.css[/B][*][B]styles.css[/B]
[/LIST][JUSTIFY]Файл [B]header.php[/B] – содержит [B]html код с php вставками <? ?>[/B], в которых вызываются [B]компоненты и подключаются файлы[/B], в [B]footer.php[/B] все [B]аналогично[/B]. В данных файлах задается [B]верхняя[/B] и [B]нижняя[/B] часть шаблона.[/JUSTIFY][JUSTIFY]Стили задаются в[B] template_styles.css[/B] и [B]styles.css[/B].[/JUSTIFY][JUSTIFY]Файл [B]description.php[/B] необходим для [B]описания шаблона для админпанели[/B].[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]После всего сказанного у вас может возникнуть вопрос, если в header храниться верхняя часть шаблона а в footer нижняя а между ними контент, [B]то к чему относить левую и правую боковую панелью[/B](sidebar) ? Разработчики предлагают как вариант такое решение[/JUSTIFY][JUSTIFY][url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/bitrix_templates/][IMG WIDTH=800 HEIGHT=600]http://s-engineer.ru/wp-content/uploads/2013/11/bitrix_templates.jpg[/IMG][/url][/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][B]Оранжевым[/B] цветом обозначено то что относиться к [B]header.php[/B], [B]зеленым к footer.php[/B], а [B]голубым к контенту[/B]. Вы можете выбрать какой-то свой вариант. Могут быть ситуации, когда одна из боковых панелей зависит от каждой страницы сайта, тогда её логично вынести из дизайна шаблона и считать её контентом.[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/bitrix_templates2/][IMG WIDTH=800 HEIGHT=600]http://s-engineer.ru/wp-content/uploads/2013/11/bitrix_templates2.jpg[/IMG][/url][/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]О разделах, подразделах и наполнение информации…[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Итак, мы рассматриваем [B]CMS 1С-Битрикс[/B] как взаимодействие [B]модулей[/B], [B]компонентов[/B] и [B]шаблона[/B]. И с ними мы вроде как разобрались, осталось понять как сайт в системе 1С-Битрикс наполнить информацией. А если быть точнее, то, как наполнить структурированной информацией, т.е. как создать [B]разделы, [/B]если нужно[B] подразделы разделов[/B] и [B]страницы разделов[/B].[/JUSTIFY][JUSTIFY]Вообщем, [B]раздел[/B] в Битрикс это [B]просто директория[/B], которая располагается в [B]/www[/B]. Называть ее можно по любому, т.к. имя раздела в данной CMS [B]не зависит от имени папки[/B]. В директории-раздел должны быть как минимум следующие файлы:[/JUSTIFY][LIST][*][B]index.php[/B] – центральная страница раздела, это php скрипт, отвечающий за наполнение контентом. В данном файле могут вызываеться компоненты, подключаться файлы, а также можно просто хранить статичный текст.[*][B].section.php[/B] – файл содержит описание – имя данного раздела
[/LIST][JUSTIFY]Помимо этих двух основных, могут быть еще файл:[/JUSTIFY][JUSTIFY][B].положение.menu.php[/B] – Файл php, отвечает за то, что показывать компоненту «[B]меню[/B]» («menu»), когда мы зайдем в данный раздел сайта. Технически – это файл с массивом [B]$aMenuLinks[/B], в котором каждый элемент содержит [B]название[/B] и [B]ссылку[/B]. Данный файл [B]считывает[/B] компонент «[B]menu[/B]» и [B]выводит соответствующие пункты меню[/B]. Вместо «[B]положение[/B]» вы должны указать какой компонент «menu» (их может быть несколько) будет читать этот файл, это может быть «[B]top[/B]», «[B]right[/B]», «[B]left[/B]» и т.д. Как задается тип компонента? Смотрим код вызова компонента «menu» (в header.php или foter.php) и обращаем внимание на параметр [B]ROOT_MENU_TYPE[/B], его значение и укажет его тип или что он будет читать: [B].top.menu.php[/B] или[B].left.menu.php[/B] и т.д.[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/bitrix_component_code_menu/][IMG WIDTH=700 HEIGHT=298]http://s-engineer.ru/wp-content/uploads/2013/11/bitrix_component_code_menu.jpg[/IMG][/url][/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]Если шаблон компонента «menu» позволяет показывать подкаталоги (выдвижное меню), то мы должны указать какой файл читать для подкаталогов в параметре [B]CHILD_MENU_TYPE[/B].[/JUSTIFY][JUSTIFY]Если файла «[B].положение.menu.php[/B]» в директории раздела не будет, то движок Битрикс будет [B]искать[/B] его в[B]каталоге сверху[/B], пока не найдет. Меню же нужно знать что выводить.[/JUSTIFY][JUSTIFY]P.S. Помимо index.php в разделе могут быть другие страницы.[/JUSTIFY][JUSTIFY]В любом разделе (или директории) могут быть [B]подразделы[/B] (директории в данной директории), содержимое их аналогичное. Также хочу сказать, что директория [B]www[/B] также имеет свой набор [B]index.php[/B],[B].section.php[/B] и [B].положение.menu.php[/B], ее можно рассматривать как главный раздел сайта.[/JUSTIFY][JUSTIFY]Наполнять сайт структурированной информацией (создавать разделы, подразделы, их страницы с информацией) можно как через [B]панель администратора[/B] (красный овал)[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY][url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/bitrix_adminpanell_top/][IMG WIDTH=700 HEIGHT=201]http://s-engineer.ru/wp-content/uploads/2013/11/bitrix_adminpanell_top.jpg[/IMG][/url][/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]так и вручную, т.е. сами создаем папки, необходимые файлы в них, редактируем файл “.положение.menu.php” в www (иначе нашего нового раздела не будет в меню).[/JUSTIFY][JUSTIFY] [/JUSTIFY][JUSTIFY]На этом, данный пост я закончу. Для разработчика, который только знакомиться с CMS 1С-Битрикс данной информации будет достаточно что-бы примерно понять, что эта за система, удобна она или нет, найти сходства с другими CMS или наоборот увидеть явные различия. Это даст первое приближение, более глубокое погружение вы получите уже изучая документацию и работая с данной CMS.[/JUSTIFY][JUSTIFY]
[/JUSTIFY][JUSTIFY]Источник: [url=http://s-engineer.ru/obzor-1s-bitriks-princip-raboty/]Обзор 1С-Битрикс, принцип работы[/url][/JUSTIFY]