Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,111 views

Published on

Мой тернистый путь и наставления для слушателей. Выступление на webPurple митап №3

Published in: Business
  • Be the first to like this

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

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

×