1 -С Битрикс
Я подумал, как мне привязать
своё выступление к
технологиям?
А потом понял: я же в этом что-
то оказывается понимаю
Но я джуниор!
Я пять лет занимаюсь веб-
разработкой, но джуниор!
Я руквожу тремя с половиной
людьми.
Они молодцы.
А я джуниор.
Новый тренд – full stack web-developer
Или веб-многознайка
Но причем тут битрикс?
Специализация удел насекомых © Хайнлайн
Мой путь в веб
Первый заказ
Успех
Проект
Зачем нужен Битрикс?
ЗП не как у php-макаки
Зачем нужен Битрикс?
ЗП не как у php-макаки
Много проектов, всем нужна поддержка (как минимум)
Зачем нужен Битрикс?
ЗП не как у php-макаки
Много проектов, всем нужна поддержка (как минимум)
Безбедная старость (абсолютный лидер любого топа)
Сравнение топа коробочных
http://habrahabr.ru/post/231097/
Зачем нужен Битрикс?
ЗП не как у php-макаки
Много проектов, всем нужна поддержка (как минимум)
Безбедная старость (абсолютный лидер любого топа)
40% скидка для кого-хочешь
Зачем нужен Битрикс?
ЗП не как у php-макаки
Много проектов, всем нужна поддержка (как минимум)
Безбедная старость (абсолютный лидер любого топа)
40% скидка для кого-хочешь
Необходимый и достаточный набор компонентов из коробки
Зачем нужен Битрикс?
ЗП не как у php-макаки
Много проектов, всем нужна поддержка (как минимум)
Безбедная старость (абсолютный лидер любого топа)
40% скидка для кого-хочешь
Необходимый и достаточный набор компонентов из коробки
CRM 24
• Проект делался год
• Когда я пришел не было никакой документации
• Это была вандер-вафля из информационных систем
• Основная система с которой шла интеграция
написана инвалидами на Perl (лихие 90е, мы
выживали как могли)
• Не использовалась система контроля версий
• Базовый класс на 32кб, который наследовался
такими же дочерними классами
• В качестве CMS использован 1С-Битрикс
• И масса других приятностей
Но самое неприятное в том что…
Я не знал битрикса
Хотя нет. Самое страшное было в том, что…
Никто в команде не знал битрикса.
Как нам достался этот чудесный проект?
Как известно из бизнес книг нужно ставить в себя в зону дискомфорта
Мой путь в битрикс
Битрикс – это тот максимум дискомфорта,
что вы сможете вытерпеть
Я думал что битрикс похож на остальные CMS
Потом я понял: его же написали в России!
Учебный проект
Проблемы с которыми я столкнулся на тестовом проекте
1.Зависимость SKU (Stock Keeping Unit (идентификатор товарной позиции))
от картинки
Проблемы с которыми я столкнулся на тестовом проекте
1.Зависимость SKU от картинки
2.Зависимоть SKU в каталоге от верстки
Проблемы с которыми я столкнулся на тестовом проекте
1.Зависимость SKU от картинки
2.Зависимоть SKU в каталоге от верстки
3.Они написали свой JS фреймверк BX:JS
Проблемы с которыми я столкнулся на тестовом проекте
1.Зависимость SKU от картинки
2.Зависимоть SKU в каталоге от верстки
3.Они написали свой JS фреймверк BX:JS
4.tfoot в таблицу убивает функционал корзины
Проблемы с которыми я столкнулся на тестовом проекте
1.Зависимость SKU от картинки
2.Зависимоть SKU в каталоге от верстки
3.Они написали свой JS фреймверк BX:JS
4.tfoot в таблицу убивает функционал корзины
5.button в корзину требует переписывания 100500 строчек кода. Проще
сделать <a>.
Проблемы с которыми я столкнулся на тестовом проекте
1.Зависимость SKU от картинки
2.Зависимоть SKU в каталоге от верстки
3.Они написали свой JS фреймверк BX:JS
4.tfoot в таблицу убивает функционал корзины
5.button в корзину требует переписывания 100500 строчек кода. Проще
сделать <a>.
6.Подписка на товары не реализована, хотя заявлена
Проблемы с которыми я столкнулся на тестовом проекте
•Зависимость SKU от картинки
•Зависимоть SKU в каталоге от верстки
•Они написали свой JS фреймверк BX:JS
•tfoot в таблицу убивает функционал корзины
•button в корзину требует переписывания 100500 строчек кода. Проще
сделать <a>.
•Подписка на товары не реализована, хотя заявлена
•Все что связано с JS крайне трудно читаемо. Простыни кода, нет единой
метрики кода: видно что каждый писал так как любит. Сначал используют +=,
потом отбивают "", потом опять +=
Проблемы с которыми я столкнулся на тестовом проекте
1.Зависимость SKU от картинки
2.Зависимоть SKU в каталоге от верстки
3.Они написали свой JS фреймверк BX:JS
4.tfoot в таблицу убивает функционал корзины
5.button в корзину требует переписывания 100500 строчек кода. Проще
сделать <a>.
6.Подписка на товары не реализована, хотя заявлена
7.Все что связано с JS крайне трудно читаемо. Простыни кода, нет единой
метрики кода: видно что каждый писал так как любит. Сначал используют +=,
потом отбивают "", потом опять +=
8.Порой, чтобы не рушить супер-связанную логику, проще сделать
невидимым какую-то штуку, чем искать зависимости.
Проблемы с которыми я столкнулся на тестовом проекте
1.Зависимость SKU от картинки
2.Зависимоть SKU в каталоге от верстки
3.Они написали свой JS фреймверк BX:JS
4.tfoot в таблицу убивает функционал корзины
5.button в корзину требует переписывания 100500 строчек кода. Проще
сделать <a>.
6.Подписка на товары не реализована, хотя заявлена
7.Все что связано с JS крайне трудно читаемо. Простыни кода, нет единой
метрики кода: видно что каждый писал так как любит. Сначал используют +=,
потом отбивают "", потом опять +=
8.Порой, чтобы не рушить супер-связанную логику, проще сделать
невидимым какую-то штуку, чем искать зависимости
9.SVG в качестве картинки для пункта меню — нельзя. Только png
Проблемы с которыми я столкнулся на тестовом проекте
1.Зависимость SKU от картинки
2.Зависимоть SKU в каталоге от верстки
3.Они написали свой JS фреймверк BX:JS
4.tfoot в таблицу убивает функционал корзины
5.button в корзину требует переписывания 100500 строчек кода. Проще
сделать <a>.
6.Подписка на товары не реализована, хотя заявлена
7.Все что связано с JS крайне трудно читаемо. Простыни кода, нет единой
метрики кода: видно что каждый писал так как любит. Сначал используют +=,
потом отбивают "", потом опять +=
8.Порой, чтобы не рушить супер-связанную логику, проще сделать
невидимым какую-то штуку, чем искать зависимости
9.SVG в качестве картинки для пункта меню — нельзя. Только png
10.??????
11.PROFIT: Я понял что уже достаточно познал, и можно руководить.
Как начать?
Программист говорит: “ща все будет” и начинает делать что привык. А к чужим
системам привык он применять лом, гвоздодер и кувалду.
• Взять проект и начать пилить его.
• Просмотреть видео на ютубе. За пару часов придет понимание
этой CMS
• http://www.youtube.com/watch?v=JioES6mkKQU
• http://camouf.ru/blog-note/bx_site_created/
• Потом сесть за проект. Сделать плохо. Понять вопросы. Перейти
к документации.
• Разработчик Bitrix Framework
• Крайне не однородная. То легко то капец.
• Администратор. Модули.
• Администратор. Бизнес.
• Сесть за проект. Понять в чем вопрос. Загуглить его. Почитать 20
страниц форума. Реализовать задачу.
• Написать в техподдержку. Ответ в течении 5 часов.
• Повторить.
API — модель (M)
Шаблон — представление (V)
Компонент – Контроллер (C)
Модуль - это модель данных и API для доступа к этим данным. Статические
методы классов модуля могут вызываться в компонентах, шаблонах, других
модулях.
Компонент - это контроллер и представление. Компонент с помощью API
одного или нескольких модулей манипулирует данными. Шаблон компонента
(представление) выводит данные на страницу.
Комплексный и обычный компонент
Контроллер обычных компонентов. Содержит в себе массив
компонентов. Комплексный – для разделов сайта. Обычный – для
страницы.
Процесс работы на пальцах
Вы создаете копию шаблона компонента. Называете её как вам нравится.
Дальше вся работа идет с этой копией. Это обеспечивает безболезненное
обновление.
Все шаблоны храните в /local/templates/.default/components. По умолчанию
Они пойдут в /bitrix/templates/<имя шаблона сайта>/components.
Каждый шаблон имеет структуру
•Template.php – представление. То что отвечает за оформление страницы.
•Style.css – стили шаблона.
•Прочая ерунда, которую вы редко используете.
Опционально:
•Script.js – битриксовский js код. Придется с ним изрядно попотеть.
$arParams – то что задали
компоненту перед
вызовом.
$arResult – то что получили,
отработав код.
Result_modifier.php –
вызывается перед
подключением шаблона.
Component_epilog.php –
подключается после
исполнения шаблона.
В реальности никто никого не ограничивает и не регламентирует.
Следствие: в шаблонах много бизнес-логики.
В БД создает 4 таблицы:
•типы объектов;
•экземпляры объектов;
•свойства объектов;
•значения свойств объектов.
Каталог
Каталог парфюмерии
Аромат
Лаванда
Плюсы
•общая структура данных для любого
проекта
•возможность многократно менять
типы данных для полей без
уничтожения самих данных
Минусы
•Производительность
•Непрозрачный доступ к данным
Могут наследовать свойства, связываться с другими инфоблоками по свойств
или иметь торговые предложения (у одного товара много разных вариаций с
объемом или цветом).
Инфоблок
Модуль, позволяющий каталогизировать и управлять различными
типами (блоками) однородной информации.
Процесс работы на пальцах
Вы создаете инфоблок. Заполняете требуемые свойства (вес, цена, что
угодно). Делаете наследование или связи. Указываете какие поля с чем
связаны.
Через админку добавляете нужный компонент для работы с этим
инфоблоком (как понять какой нужны? Читаете, или выставляете «список
новостей». В 90% это нужный компонент.
Копируете шаблон компонента. Затем копируете код который создался.
Добавляете его в шаблон.
Правите компонент.
http://habrahabr.ru/post/189630/
http://habrahabr.ru/post/219569/
Опыт колег
Удачная модель ветвления
http://habrahabr.ru/post/106912/
Всё изменяемое можно
положить в папку /local/ и
спокойно работать с ней.
bitBucket
gitLab
gitHub
Столкнулись с тестированием. После недели ручного тестирования
Пришли к автоматизации функционального тестирования.
http://codeception.com/
phpCi
Что с
проектом?
Что я узнал?
Вопросы?
• vk.com/dr_dremon
• dmitry@polisadov.ru

Презентация: 1С-Bitrix — как начать

  • 1.
  • 3.
    Я подумал, какмне привязать своё выступление к технологиям? А потом понял: я же в этом что- то оказывается понимаю Но я джуниор! Я пять лет занимаюсь веб- разработкой, но джуниор! Я руквожу тремя с половиной людьми. Они молодцы. А я джуниор.
  • 4.
    Новый тренд –full stack web-developer Или веб-многознайка Но причем тут битрикс? Специализация удел насекомых © Хайнлайн
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
    Зачем нужен Битрикс? ЗПне как у php-макаки
  • 23.
    Зачем нужен Битрикс? ЗПне как у php-макаки Много проектов, всем нужна поддержка (как минимум)
  • 24.
    Зачем нужен Битрикс? ЗПне как у php-макаки Много проектов, всем нужна поддержка (как минимум) Безбедная старость (абсолютный лидер любого топа)
  • 25.
  • 26.
    Зачем нужен Битрикс? ЗПне как у php-макаки Много проектов, всем нужна поддержка (как минимум) Безбедная старость (абсолютный лидер любого топа) 40% скидка для кого-хочешь
  • 27.
    Зачем нужен Битрикс? ЗПне как у php-макаки Много проектов, всем нужна поддержка (как минимум) Безбедная старость (абсолютный лидер любого топа) 40% скидка для кого-хочешь Необходимый и достаточный набор компонентов из коробки
  • 28.
    Зачем нужен Битрикс? ЗПне как у php-макаки Много проектов, всем нужна поддержка (как минимум) Безбедная старость (абсолютный лидер любого топа) 40% скидка для кого-хочешь Необходимый и достаточный набор компонентов из коробки CRM 24
  • 29.
    • Проект делалсягод • Когда я пришел не было никакой документации • Это была вандер-вафля из информационных систем • Основная система с которой шла интеграция написана инвалидами на Perl (лихие 90е, мы выживали как могли) • Не использовалась система контроля версий • Базовый класс на 32кб, который наследовался такими же дочерними классами • В качестве CMS использован 1С-Битрикс • И масса других приятностей
  • 30.
    Но самое неприятноев том что… Я не знал битрикса
  • 31.
    Хотя нет. Самоестрашное было в том, что… Никто в команде не знал битрикса.
  • 32.
    Как нам досталсяэтот чудесный проект?
  • 34.
    Как известно избизнес книг нужно ставить в себя в зону дискомфорта Мой путь в битрикс
  • 35.
    Битрикс – этотот максимум дискомфорта, что вы сможете вытерпеть
  • 36.
    Я думал чтобитрикс похож на остальные CMS
  • 37.
    Потом я понял:его же написали в России!
  • 38.
  • 39.
    Проблемы с которымия столкнулся на тестовом проекте 1.Зависимость SKU (Stock Keeping Unit (идентификатор товарной позиции)) от картинки
  • 40.
    Проблемы с которымия столкнулся на тестовом проекте 1.Зависимость SKU от картинки 2.Зависимоть SKU в каталоге от верстки
  • 41.
    Проблемы с которымия столкнулся на тестовом проекте 1.Зависимость SKU от картинки 2.Зависимоть SKU в каталоге от верстки 3.Они написали свой JS фреймверк BX:JS
  • 42.
    Проблемы с которымия столкнулся на тестовом проекте 1.Зависимость SKU от картинки 2.Зависимоть SKU в каталоге от верстки 3.Они написали свой JS фреймверк BX:JS 4.tfoot в таблицу убивает функционал корзины
  • 43.
    Проблемы с которымия столкнулся на тестовом проекте 1.Зависимость SKU от картинки 2.Зависимоть SKU в каталоге от верстки 3.Они написали свой JS фреймверк BX:JS 4.tfoot в таблицу убивает функционал корзины 5.button в корзину требует переписывания 100500 строчек кода. Проще сделать <a>.
  • 44.
    Проблемы с которымия столкнулся на тестовом проекте 1.Зависимость SKU от картинки 2.Зависимоть SKU в каталоге от верстки 3.Они написали свой JS фреймверк BX:JS 4.tfoot в таблицу убивает функционал корзины 5.button в корзину требует переписывания 100500 строчек кода. Проще сделать <a>. 6.Подписка на товары не реализована, хотя заявлена
  • 45.
    Проблемы с которымия столкнулся на тестовом проекте •Зависимость SKU от картинки •Зависимоть SKU в каталоге от верстки •Они написали свой JS фреймверк BX:JS •tfoot в таблицу убивает функционал корзины •button в корзину требует переписывания 100500 строчек кода. Проще сделать <a>. •Подписка на товары не реализована, хотя заявлена •Все что связано с JS крайне трудно читаемо. Простыни кода, нет единой метрики кода: видно что каждый писал так как любит. Сначал используют +=, потом отбивают "", потом опять +=
  • 46.
    Проблемы с которымия столкнулся на тестовом проекте 1.Зависимость SKU от картинки 2.Зависимоть SKU в каталоге от верстки 3.Они написали свой JS фреймверк BX:JS 4.tfoot в таблицу убивает функционал корзины 5.button в корзину требует переписывания 100500 строчек кода. Проще сделать <a>. 6.Подписка на товары не реализована, хотя заявлена 7.Все что связано с JS крайне трудно читаемо. Простыни кода, нет единой метрики кода: видно что каждый писал так как любит. Сначал используют +=, потом отбивают "", потом опять += 8.Порой, чтобы не рушить супер-связанную логику, проще сделать невидимым какую-то штуку, чем искать зависимости.
  • 47.
    Проблемы с которымия столкнулся на тестовом проекте 1.Зависимость SKU от картинки 2.Зависимоть SKU в каталоге от верстки 3.Они написали свой JS фреймверк BX:JS 4.tfoot в таблицу убивает функционал корзины 5.button в корзину требует переписывания 100500 строчек кода. Проще сделать <a>. 6.Подписка на товары не реализована, хотя заявлена 7.Все что связано с JS крайне трудно читаемо. Простыни кода, нет единой метрики кода: видно что каждый писал так как любит. Сначал используют +=, потом отбивают "", потом опять += 8.Порой, чтобы не рушить супер-связанную логику, проще сделать невидимым какую-то штуку, чем искать зависимости 9.SVG в качестве картинки для пункта меню — нельзя. Только png
  • 48.
    Проблемы с которымия столкнулся на тестовом проекте 1.Зависимость SKU от картинки 2.Зависимоть SKU в каталоге от верстки 3.Они написали свой JS фреймверк BX:JS 4.tfoot в таблицу убивает функционал корзины 5.button в корзину требует переписывания 100500 строчек кода. Проще сделать <a>. 6.Подписка на товары не реализована, хотя заявлена 7.Все что связано с JS крайне трудно читаемо. Простыни кода, нет единой метрики кода: видно что каждый писал так как любит. Сначал используют +=, потом отбивают "", потом опять += 8.Порой, чтобы не рушить супер-связанную логику, проще сделать невидимым какую-то штуку, чем искать зависимости 9.SVG в качестве картинки для пункта меню — нельзя. Только png 10.?????? 11.PROFIT: Я понял что уже достаточно познал, и можно руководить.
  • 50.
  • 51.
    Программист говорит: “щавсе будет” и начинает делать что привык. А к чужим системам привык он применять лом, гвоздодер и кувалду.
  • 52.
    • Взять проекти начать пилить его. • Просмотреть видео на ютубе. За пару часов придет понимание этой CMS • http://www.youtube.com/watch?v=JioES6mkKQU • http://camouf.ru/blog-note/bx_site_created/ • Потом сесть за проект. Сделать плохо. Понять вопросы. Перейти к документации. • Разработчик Bitrix Framework • Крайне не однородная. То легко то капец. • Администратор. Модули. • Администратор. Бизнес. • Сесть за проект. Понять в чем вопрос. Загуглить его. Почитать 20 страниц форума. Реализовать задачу. • Написать в техподдержку. Ответ в течении 5 часов. • Повторить.
  • 53.
    API — модель(M) Шаблон — представление (V) Компонент – Контроллер (C) Модуль - это модель данных и API для доступа к этим данным. Статические методы классов модуля могут вызываться в компонентах, шаблонах, других модулях. Компонент - это контроллер и представление. Компонент с помощью API одного или нескольких модулей манипулирует данными. Шаблон компонента (представление) выводит данные на страницу.
  • 54.
    Комплексный и обычныйкомпонент Контроллер обычных компонентов. Содержит в себе массив компонентов. Комплексный – для разделов сайта. Обычный – для страницы.
  • 55.
    Процесс работы напальцах Вы создаете копию шаблона компонента. Называете её как вам нравится. Дальше вся работа идет с этой копией. Это обеспечивает безболезненное обновление. Все шаблоны храните в /local/templates/.default/components. По умолчанию Они пойдут в /bitrix/templates/<имя шаблона сайта>/components. Каждый шаблон имеет структуру •Template.php – представление. То что отвечает за оформление страницы. •Style.css – стили шаблона. •Прочая ерунда, которую вы редко используете. Опционально: •Script.js – битриксовский js код. Придется с ним изрядно попотеть.
  • 56.
    $arParams – точто задали компоненту перед вызовом. $arResult – то что получили, отработав код. Result_modifier.php – вызывается перед подключением шаблона. Component_epilog.php – подключается после исполнения шаблона.
  • 57.
    В реальности никтоникого не ограничивает и не регламентирует. Следствие: в шаблонах много бизнес-логики.
  • 58.
    В БД создает4 таблицы: •типы объектов; •экземпляры объектов; •свойства объектов; •значения свойств объектов. Каталог Каталог парфюмерии Аромат Лаванда Плюсы •общая структура данных для любого проекта •возможность многократно менять типы данных для полей без уничтожения самих данных Минусы •Производительность •Непрозрачный доступ к данным Могут наследовать свойства, связываться с другими инфоблоками по свойств или иметь торговые предложения (у одного товара много разных вариаций с объемом или цветом). Инфоблок Модуль, позволяющий каталогизировать и управлять различными типами (блоками) однородной информации.
  • 59.
    Процесс работы напальцах Вы создаете инфоблок. Заполняете требуемые свойства (вес, цена, что угодно). Делаете наследование или связи. Указываете какие поля с чем связаны. Через админку добавляете нужный компонент для работы с этим инфоблоком (как понять какой нужны? Читаете, или выставляете «список новостей». В 90% это нужный компонент. Копируете шаблон компонента. Затем копируете код который создался. Добавляете его в шаблон. Правите компонент.
  • 60.
    http://habrahabr.ru/post/189630/ http://habrahabr.ru/post/219569/ Опыт колег Удачная модельветвления http://habrahabr.ru/post/106912/ Всё изменяемое можно положить в папку /local/ и спокойно работать с ней.
  • 61.
  • 62.
    Столкнулись с тестированием.После недели ручного тестирования Пришли к автоматизации функционального тестирования.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.