Действующие лица:
1.Отдельно живущий калькулятор стоимости услуг. Со своей маленькой админкой, для управления курсами/коэффициентами, простейшим АПИ, для создания на его основе всевозможных прайс-листов.

  • База — MySQL
  • Бэк — PHP
  • Фронт — классика HTML+CSS+JS

2. Корпоративный сайт на «1С-Битрикс: Управление сайтом 15.5.10». Лицензия сдохла и оплачиваться не собирается. Крайнее обновление: 09.11.2016 22:01:05 (8 месяцев назад. Ну, могло быть и хуже).
3. Горе-программист (Я), никогда не имевший доселе дела с Битриксом.

Задача:
Внедрить калькулятор на сайт. На основе установленных в нем цен — выводить прайс-листы на страницах-описаниях соответствующих товаров.

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

Первое, что конкретно дезориентирует в админке — дизайн. Решил я глянуть на компоненты, что они собой представляют, и как с ними общаться не залезая в код. Смотрю — формы есть какие-то. Дай, думаю, гляну, как настроено. А там… Вот как это по-вашему называется?

Вот я был больше чем уверен, что попаду в настройки формы. Но не в сообщения, которые через эту форму приходят от клиентов. Здесь необходимо выделить 2 момента:

  1. Увиденное мной, с первого взгляда даже не похоже на то чем является. Если здесь собираются месаджи от клиентов — то где привычные всему миру индикаторы? Как, черт возьми, мне понять, зайдя с утра в админку, что у меня есть новые непрочитанные месаджи? Какого черта они собираются здесь, внутри движка, а не уходят на почты манагеров? (С этим разберемся, может быть где-то галочка не стоит нужная, заветная).
  2. Это вобще не похоже на месадж. Это — форма для заполнения. Вот это всё как оно выглядит сейчас — призывает своим видом к её немедленному заполнению, а не к чтению. Ок. Главное что я понял что это. Не сразу-сходу, но понял.

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

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

    Если блок мёртвый, то лучше его вообще убрать или переформулировать ТЗ.

  • Если вы хотите внести какие-то изменения в работе сайта, то:
    • Сначала формализуйте свои требования на листе бумаги, а не кидайтесь править код.
    • После этого заново просмотрите все случаи использования на сайте модифицируемого вами блока. Убедитесь, что всё логично. Очень часто делают небольшие, казалось бы, изменения, а потом оказывается, что страдает связанный функционал, о котором не подумали или забыли.
    • После того, как вы формализовали потребности в изменениях, посмотрите, какие сущности эти требования затрагивают.
    • Только после этого подумайте, какие средства использовать для достижения своих целей.
  • Способы внесения изменений и желательный порядок их применения:
    • сначала попытайтесь сделать это редактированием шаблона самого сайта и файлов CSS;
    • если предыдущее невозможно, то попытайтесь сделать это средствами редактирования страницы сайта;
    • при невозможности реализации задачи с помощью первых вариантов переходите к редактированию шаблонов компонента и файлов CSS компонента, либо изменяйте вывод данных с помощью файлов result_modifier.php и component_epilog.php.
    • используйте обработчики событий, которые позволяют решать очень широкий спектр задач.
    • кастомизация компонента или разработка собственного компонента или модуля — последний из возможных вариантов получения нештатного функционала.
    • Не рекомендуется писать код HTML в код PHP для изменения представления данных. В компонентах 2.0 разделены логика и представление. Логика — это сам компонент, представление — это шаблон вывода компонента. Шаблон существенно проще, чем компонент в целом. Нет необходимости изменять логику компонента для изменения особенностей показа его данных. Для одной логики может быть несколько представлений, в том числе зависящих от шаблона текущего сайта. Представление (шаблон вывода) может быть написано на любом шаблонном языке, который можно подключить из PHP. Например, шаблоны могут быть на PHP, Smarty, XSL и т.д.
    • Собственные компоненты и шаблоны — в собственном пространстве имен. Кастомизируя штатные компоненты и шаблоны, разрабатывая собственные, размещайте их в собственном пространстве имен. При обновлении системы все внесенные изменения в пространстве bitrix затираются.
    • При работе с компонентами не надо обращаться к базе напрямую. Концепция работы с продуктом предполагает работу с данными через функции API. Структура данных может меняться от версии к версии, а функции сохраняют обратную совместимость. Мы настоятельно не рекомендуем использовать прямые запросы к БД, т.к. это может нарушить целостность данных и привести к неработоспособности сайта. В силу вышесказанного структура таблиц не афишируется.
    • Не рекомендуется править код ядра в силу нескольких причин:
      • при обновлении системы внесенные изменения затрутся;
      • при изменении ядра владелец лицензии теряет право на техническую поддержку;
      • при изменении ядра разработчиком сайта возможна некорректная работа системы, так как ядро — сложная система, требующая учета работы всех модулей.

Выводы, которые я сделал, пережевав каждый пункт:

  1. В движке есть дохлый функционал, почему-то имеющий место быть.
  2. Не трогай, пока работает.
  3. Не лезь в код. В ЦСС лезь, больше никуда не лезь.
  4. Отсюда понятно, что мои таблички надо вкорячивать не на страницы, а в их шаблоны (логично). Интересно, но не стыкуется с остальными заповедями.
  5. Ваще никуда не лезь. Тыкай в веб-морду, но никуда не лезь.
  6. Не лезь в базу. Если очень надо — см.п.5.
  7. От слова «Ядро» у меня мурашки по коже. Пожалуй не буду лезть.

Ну чтож: Маркетплейс мне недоступен (лицензия потрачена), какой-то готовый модуль поставить не выйдет. Править существующие коробочные — не рекомендуется. Значит будем писать сами. Ушел курить маны. До связи!


Добавить комментарий