Как то спонтанно решили организовать встречу по битриксу в Челябинске. Пообсуждали, набрались доклады:
1. Вадим Исаканов (southbridge.ru) расскажет про highload в битрикс. О том с какими проблемами они столкнулись и как их решали при работе с проектами на битрикс с месячной аудиторией (MAU) в 2.5 миллиона человек
2. Евгений Микулич (shantilab.ru) расскажет про опыт использования composer в битрикс
3. Алексей Коваленко (kuznica74.ru) расскажет про изменения в каталоге битрикс 17 версии, bxready и элементарные области
4. Я, Шубин Александр (verstaem.com) планирую рассказать о простом способе автоматической развертки сайта при создании ветки в git, а так же немного про схемы ветвления
Хочется организовать регулярные встречи. Без излишнего пафоса, большой сцены и со спокойным обсуждением. Если народу это будет интересно, то повторим через какое-то время, посмотрим на первый опыт. Даже если конкретно эти доклады вас не заинтересовали возможно стоит прийти, чтобы просто поговорить на общие темы с новыми людьми, услышать новые идеи. Попробуем немного объединить ИТ сообщество в Челябинске
Приглашаем всех кто связан с разработкой на битриксе, а так же с созданием и обслуживанием сайтов в целом.
Если вы решили пойти, то пожалуйста зарегистрируйтесь вот тут: http://meetup.house/bitrix/ Участие бесплатное. Встреча будет в пятницу вечером 2 февраля, в 18:30, г. Челябинск, ул. Северная, д.48а, 2 этаж, оф.3 (коворкинг WooDo.Work)
Техническая возможность есть. Народ в довольно хорошем качестве митапы записывал уже. Но пока еще не определились, формат митапа все же больше про живое общение и обсуждение, а не про четкое академическое изложение темы, посмотрим ближе к делу. Если будет запись, то скину ссылку
В базовом варианте достаточно сформировать пять переменных в тэге <form> и отправить форму сабмитом без js вообще. Но плюс к этому есть готовая реализация и примеры использования по поиску местоположений и расчету стоимости доставки. Две самые сложные части оформления на мой взгляд. То есть теоретически компонент должен закрыть прям здоровый пласт проблем и интегратору останется по сути не сложная верстка.
Написал новую статью о том как сделать собственный компонент заказа: https://verstaem.com/lessons/making-sa...r-ajax-d7/ Статья получилась большая, с большим количеством форматирования, поэтому полный текст по ссылке
Штатный bitrix:sale.order.ajax очень сложно кастомизировать. Я думаю никто не будет со мной спорить. Битриксовцы подумали над процедурой заказа, о том как заказ должен выглядеть в идеале, а потом реализовали придуманную процедуру в продукте. Все сделано хорошо, однако если у заказчика представления по процедуре заказа отличаются от штатной реализации, то изменить шаблон компонента bitrix:sale.order.ajax практически нереально. Собственно сами битриксовцы на одной из конференций предложили писать отдельный компонент заказа. В этой статье я покажу один из вариантов по реализации такого компонента. И может быть попутно поясню непонятные моменты по созданию заказа на API. Само API по созданию заказа получилось прям отличное, несмотря на сложности кастомизации sale.order.ajax. Если вдруг разработчики читают эту статью, то спасибо вам, прямо приятно работать
По большей части вся статья только про серверный код.
Содержимое статьи: 1 Компонент 1.1 Создание виртуального заказа 1.2 Добавляем свойства заказа 1.3 Добавляем отгрузку (службу доставки) 1.4 Добавляем платежную систему 1.5 Подключение шаблона и сохранение 2 Шаблон компонента 2.1 Корзина 2.2 Работа со свойствами 2.2.1 Форма 2.2.2 Отображаемое местоположение 2.2.3 Получение свойства по коду 2.3 Прочие возможности 2.3.1 Стоимость доставки и заказа 2.3.2 Выбранная служба доставки 2.3.3 Выбранная система оплаты 2.4 Итого по шаблону 3 Добавляем ООП 3.1 Расширяем корзину 3.2 Расширяем заказ 3.3 Итого по ООП 4 Прикручиваем ajax 4.1 Actions компонента 4.2 Поиск местоположений 4.3 Метод расчета стоимости доставки 5 Общий итог
TL;DR При каждом вызове компонента, неважно аяксом или на странице создаем объект заказа. По необходимости добавляем новые методы в объекты корзины и заказа. В шаблоне компонента пользуемся объектом заказа напрямую, $arResult скорее всего не пригодится. При ответе аяксом возвращаем json где передаем чистые данные + сразу html нужного куска шаблона.
Написал статью о том как сделать приложение для битрикс24 на symfony. https://verstaem.com/bitrix24/cloud-ap...n-symfony/ Фреймворк ставится в минимально возможной комплектации, ничего лишнего. Статья получилась большая, поэтому чтобы прочитать с нормальным форматированием перейдите по ссылке.
Была задача реализовать собственное действие в бизнес процессе битрикс24. Именно в облаке. В этом случае единственный вариант — написать собственное приложение и подключить его к нужному порталу. Никаких других вариантов кастомизации не предусмотрено, так как прямой доступ к серверному коду облака закрыт. В этой статье я обозначу основные шаги по реализации такого приложения. От новой пустой папки и до работающего финального действия в бизнес процессе.
Что я вообще хочу от докера при разработке. Во первых, мне нужна локальная копия сайта, именно на этой локальной копии я буду смотреть как собственно работает код. Эта локальная копия должна открываться по красивому адресу, например если основной рабочий сайт это example.com, то моя локальная копия должна открываться по адресу my.example.com. Безо всяких портов типа my.example.com:8747. Я часто открываю сразу несколько проектов и все открытые проекты не должны конфликтовать, то есть например у меня открыто два окна phpstorm в одном ведется разработка проекта example.com, во втором ведется разработка test.ru, и для каждого из этих проектов одновременно должны работать два локальных сайта my.example.com и my.test.ru. Во вторых, мне под каждый проект нужны специальные настройки (mbstring, timezone) и расширения php (типа xdebug). В третьих, мне нужны внешние инструменты типа phpmyadmin для работы с БД проекта или node.js для работы с gulp/webpack. И наконец в четвертых, все это должно быстро подниматься для новых разработчиков которые подключаются к проекту.
Не совсем, я про то что nginx надо собирать с nginx-push-stream-module или nodejs и вытаскивать решение из текущей VM.
Это интересно. Можете поделиться лучшим вариантом реализации такой развертки с вашей точки зрения? Чтобы на любой машине при создании контейнеров все прям собралось. Где-то заранее архив с битриксом и БД подготовить? Хранить весь битрикс вместе с модулями в репозитории? На лету с живого тестового сайта копировать? Еще как то?
Я не большой гуру в docker'е, но у себя реализовал таким образом, в .env есть переменная APPLICATION_FROM=<git><path>.git Т.е. в момент разворачивания php-fpm контейнера, запускается кастомный ENTRYPOINT скрипт, который согласно параметру APPLICATION_FROM клонирует репозиторий или скачивает и разворачивает резеврную копию с "живого" проекта.
И еще, как по вашему лучше конфиги / докерфайлы образов хранить, в репозитории вместе с файлами проекта или отдельно?
Сложно сказать, зависит от вашего цикла разработки.
Если еще заморочитесь с PHP-FPM контейнером и необходимостью запуска РНР скриптов из-под крон, то можете написать мне и я вам скину простенький консольный скрипт, который будет выполнять PHP файлы. Можно конечно накрутить PHP-CLI в этом же контейнере, но я посчитал это лишним.
Это неформальная встреча всех кто связан с разработкой на битриксе, а так же созданием и обслуживанием сайтов в целом. В пятницу, 26 октября мы снова встретимся, чтобы познакомиться, обменяться опытом и обсудить интересные темы, относящиеся к программированию на php и связанным технологиям.
Адрес: Челябинск, ул. Северная, д.48а, 2 этаж, оф.3
Начало в 18:30. Доклады планируются небольшие. Примерно по 15-30 минут плюс обсуждение. Ориентировочное время завершения — девять вечера.
Шубин Александр — Простой способ авторазвертки сайтов при создании ветки в git Доклад о том, как использовать красивые схемы ветвления. Практический опыт которым можно пользоваться сразу. Вебхуки и настройка сервера nginx + php-fpm.
После докладов желающие могут остаться и продолжить общение на афтепати
Долгополов Игорь написал: Не желаете поделиться наработками со своего выступления?
Я примеры выкладывал тут https://verstaem.com/bxmeetup/ с февраля еще раздел висит, когда я в прошлый раз не успел рассказать. Ссылка на этот раздел была в презентации. По ссылке презентация, пример конфига nginx и пример скрипта для авторазвертки. Вроде бы больше ничего не показывал
С версии битрикса 17.5.10 добавился новый функционал по работе с аяксом. Теперь можно вызывать аяксом методы модуля или методы компонента без необходимости выполнения шаблона сайта. То есть по запросу выполнится только немного служебного кода и собственно сам метод.
На клиенте все довольно просто. Мы должны отправить обычный аякс запрос по адресу /bitrix/services/main/ajax.php
В js библиотеке битрикса есть методы которые самостоятельно формируют запрос, запись получается слегка короче, чем при написании запроса другими способами. Я покажу примеры запросов на битриксовой библиотеке и на jquery
Сделали единый роутер на ajax - это хорошо. Сделали подключение на классы модуля - великолепно. Вообще вся эта тема с аяксом в битриксе меня запарила еще пару лет назад. В итоге взяли роутер у симфони, прикрутили обертку над ним и зажили счастливо. В роутах указывается либо компонент с экшеном, либо модуль с классом и экшеном, либо просто класс и экшен. Все роуты в 1 - 2-х файлах, всегда понятно что за что отвечает. Передача параметров... а ну их на фиг. Не всегда они они нужны, точнее редко, и если надо запишем в сессию разок при executeComponent().
Дрёмин Станислав написал: В итоге взяли роутер у симфони, прикрутили обертку над ним и зажили счастливо
Да, тоже собственный роутер для аякса использую. В новом аяксе от битрикс больше нравится именно взаимодействие с модулями. Довольно красиво получается, просто новый файл с классом создал и уже можно запросы слать
Сегодня попробовал! Крайне крутая, удобная штука! Но есть ряд вопросов )
На сколько я понял метод экшена не может генерировать ошибку ? Например мне перед выполнением экшена нужно проверить подключен ли модуль. Я написал ActionFilter для префильтра, который проверят/подключает нужные модуль. Это работает, но это не очень удобно в двух местах делать одно и тоже (при обычном запуске компонента и когда компонент запущен в экшен режиме). Может быть я чего не недопонимаю, как мне сгенерировать ошибку внутри экшена, что бы я мог в обоих случаях использовать один и тот же метод для проверки подключения модулей.
Я пробовал в экшене вернуть Main\EventResult ошибочный, но компонент мой ответил status = success
Интересно мнение сообщества. Используете ли вы при разработке на битриксе композер? Как часто вы его используете, во всех ли проектах или только в некоторых? Если вы используете композер, то приложите список главных с вашей точки зрения зависимостей отдельным комментарием. Действительно интересна статистика. Прошу всех голосовать и поделиться ссылкой на опрос со знакомыми программистами.
Александр Янцен написал: Надо будет написать разработчикам Yii, Symfony, что они зря подключают автолоадер composer в index.php
даже в эти фрейморках вроде бы был модульный подход. или это было в ZF2. по хорошему у каждого модуля свои зависимости и он должен отрабатывать только в своей части системы. у каждого модуля свой автозагрузчик. а композер делает общую свалку - больше вероятность конфликтов библиотек.
Отрицать эффективность композера самого по себе не стоит я думаю. Сам по себе композер довольно крутая штука. В данном топике все же хотелось бы собрать мнения по поводу использования композера вместе с битриксом. Нужно ли это и насколько удобно.
Написал статью по структуре битрикс проекта, с точки зрения серверного программиста. Статья получилась довольно большая, поэтому тут ее вряд ли получится повторить с таким же оформлением. В статье попытался сформировать общий взгляд на проект, чтобы было понятно куда и какой код писать. Без деталей и подробных пояснений, поэтому для новичков вряд ли статья будет понятна/интересна. Любопытно было бы сравнить кто и как структурирует проект, буду рад вашим комментариям
Краткое содержимое статьи для понимания: 1 Создание проекта 1.1 Контроль версий 1.2 Автодополнение 1.3 Верстка 2 О папке local 3 Шаблон сайта 3.1 Зависимые области 4 Константы 4.1 Наименование констант 5 Модуль проекта 5.1 Автолоад классов 5.2 Обработчики 5.3 Класс обработчика 5.4 Хэлперы и части страниц 5.5 Итого по модулю проекта 6 Компоненты 7 Компонент vs Модуль 8 Общий взгляд
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».