Битрикс: модули с чем их есть

Итак, к сожалению я знаком с этой cms.
Если Вы только начинаете, то лучше не знакомьтесь с ней ни в коем случае, не тратьте на это время и не занимайтесь этим, выучите лучше что-нибудь посерьезней. Но если все же Вам это необходимо, то надеюсь, что моя статья немного Вам поможет. Опытные разработчики могут ее не читать 🙂

Итак, тут я хочу немного рассказать про то, что мне никто в свою очередь не рассказал, и я это понял сам и довольно поздно, про архитектуру, если это можно так назвать.

Ну и надеюсь, что прочитав данную статью,  Вы не будете делать тех ошибок, которые делал я.

Сейчас я попытаюсь разъяснить что такое модули и компоненты.

Модули

Битрикс, как одна из лучшх CMS на российском рынке имеет модульную архитектуру.
Это хорошо.
То есть там есть различного рода модули (интернет-магазин, информационные блоки), которые являются законченными структурами.
Что это озночает? А все просто.

Строение модуля

За пример возьмем модуль sale — модуль интернет-магазина В конечном счете, весь код данного модуля находится в папке /bitrix/modules/sale. Таблицы данного модуля хранятся в общей базе и имеют префикс (как правило наименование модуля, например b_sale_order, где:
b — часть префикса, указывающая на то, что сами битриксоиды разработали данный столь чудесный и законченный модуль
sale — название модуля
order — название таблицы
Тут думаю и вопросов быть не может.

В системе управления сайтом, так называемом «администрировании» модули располагаются в разделе настройки -> настройки продукта -> модули.

Модули можно переустановить.

Что такое переустановка модулей в битрикс? В целом, это может быть что угодно, установщик модуля пишет сам разработчик и делать он может что угодно. Но как правило установщик модуля установит таблицы, установит компоненты, создаст почтовые шаблоны и агенты. Удаляльщик это все дело может удалить.

Теперь внимание!

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

Что же в таком случае делать?

  1. Забить на неудовлетвроенность (нам это не подходит)
  2. Забить и залезть в модуль, ждать обновления (мне это не подходит :))
  3. Пытаться придумать какой нибудь костыль в компоненте (расскажу позже) (иногда это бывает приемлемо)
  4. Форкнуть модуль (взять текущую версию, внести изменения и использовать этот модуль,отказавшись от изменений)

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

API модулей

Хорошие модули, со своими таблицами в базе данных, как правило имеют API для доступа к этим данным.

Выполнено это в виде классов, с различного рода методами.

Например, для выемки заказов из базы данных мы используем следующую конструкцию:

CSaleOrder::GetList(
 array arOrder = array(),
 array arFilter = array(),
 array arGroupBy = false,
 array arNavStartParams = false,
 array arSelectFields = array()
);

Вот такая вот конструкция. Не знаю как в 12, но в 11 версии PHPStorm кидал ворнинги на каждый такой вызов, а все потому что внутри класса CSaleOrder ни у одной функции не указана ни область видимости, ни то что эта функция статическая. Можно конечно сначала инстанцировать объект класса CSaleOrder, но я ведь все делаю по документации битрикса! Впрочем ладно.

Итоги

Тут я очень кратко попытался показать самые базовые вещи по модулям. Там много интересного и еще было непонятно и непонятно как работающего 😀 Но это если хоть кому-то это будет полезно. Создание своего модуля рассмотрим в отдельной статье.

Комментарии:


  1. Разработчик Bitrix API

    Цитата «лучше не знакомьтесь с ней ни в коем случае, не тратьте на это время и не занимайтесь этим, выучите лучше что-нибудь посерьезней»
    Почему?

  2. admin

    Сергей, если Вы на самом деле разработчик битрикс API (меня немного смущает Ваш Казахстанский IP), я отвечу Вам.
    Битрикс это безулосвно достойная внимания CMS, но чтобы советовать другим людям заниматься разработкой на ней необходимо чтобы Вы:
    1 Перепроектировали и переписали все что у Вас есть на сегодняшний день
    2 Навели порядок в документации

    Всего 2 пункта, как просто не правда ли?
    Я не считаю себя каким-то супер-программистом, и я не разработал свою CMS, которая лучше битрикса во всех отношениях, но это просто мое личное мнение.
    Еще раз, резюмирую: Мои слова, это не истина в последней инстанции, это мое мнение.




YouTube бесплатно навести проклятие порчу