3. Я подумал, как мне привязать
своё выступление к
технологиям?
А потом понял: я же в этом что-
то оказывается понимаю
Но я джуниор!
Я пять лет занимаюсь веб-
разработкой, но джуниор!
Я руквожу тремя с половиной
людьми.
Они молодцы.
А я джуниор.
26. Зачем нужен Битрикс?
ЗП не как у php-макаки
Много проектов, всем нужна поддержка (как минимум)
Безбедная старость (абсолютный лидер любого топа)
40% скидка для кого-хочешь
27. Зачем нужен Битрикс?
ЗП не как у php-макаки
Много проектов, всем нужна поддержка (как минимум)
Безбедная старость (абсолютный лидер любого топа)
40% скидка для кого-хочешь
Необходимый и достаточный набор компонентов из коробки
28. Зачем нужен Битрикс?
ЗП не как у php-макаки
Много проектов, всем нужна поддержка (как минимум)
Безбедная старость (абсолютный лидер любого топа)
40% скидка для кого-хочешь
Необходимый и достаточный набор компонентов из коробки
CRM 24
29. • Проект делался год
• Когда я пришел не было никакой документации
• Это была вандер-вафля из информационных систем
• Основная система с которой шла интеграция
написана инвалидами на Perl (лихие 90е, мы
выживали как могли)
• Не использовалась система контроля версий
• Базовый класс на 32кб, который наследовался
такими же дочерними классами
• В качестве CMS использован 1С-Битрикс
• И масса других приятностей
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: Я понял что уже достаточно познал, и можно руководить.
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% это нужный компонент.
Копируете шаблон компонента. Затем копируете код который создался.
Добавляете его в шаблон.
Правите компонент.