Модуль для маркетплейс — от идеи до старта продаж. Часть 11 — Сборка, логи, ограничения и локализация

Все ближе и ближе тот момент, когда модуль выйдет в открытое плавание. До этого события нужно еще многое успеть сделать. В этой статье я расскажу о том, как будет организован процесс сборки модуля, а также пару мелочей касательно логов, локализации и совместимости.

Читать далее →

Модуль для маркетплейс — от идеи до старта продаж. Часть 10 — Бизнес логика

На этот раз речь пойдет о бизнес-логике модуля. Это, пожалуй, самая важная часть. Это то, без чего смысла в модуле вообще никакого нет. Бизнес-логика должна решать реальную задачу, что в свою очередь нацелено на извлечение прибыли. Ей и займемся, но сначала ….

Читать далее →

Модуль для маркетплейс — от идеи до старта продаж. Часть 9 — Вдыхаем жизнь в генератор

Пришла пора обучить страницу генератора взаимодействовать с пользователем.Для этого потребуется набросать функционал обработки ajax запросов в компоненте, а также набросать небольшой кусок js кода для контроля над страницей. Поехали

Читать далее →

Модуль для маркетплейс — от идеи до старта продаж. Часть 8 — форма настроек и снова инсталлятор

Пора бы уже начать решать поставленную задачу, а то уже на протяжении 7ми последних частей — один трёп 🙂 Но перед этим снова придется немного повозиться с инсталлятором, т.к. появились дополнительные потребности, а также нужно исправить недочеты, сделанные ранее. Чувствую, что с инсталлятором придется возиться до момента самого запуска …

Читать далее →

Пара слов о техподдержке Битрикс

Мне довольно часто приходится общаться с техподдержкой 1С-Битрикс по работе. Время от времени находятся баги в ядре, которые мы не в силах устранить по той причине, что это бессмысленно. Бывают баги, на исследование которых могут уходить долгие часы, и искать их нерентабельно. Бывают иногда вопросы лицензионного характера, или вопросы по работе функционала с позиции пользователя. Но одно из последних обращений меня поразило «донельзя», чем хочу поделиться с Вами.

Читать далее →

Модуль для маркетплейс — от идеи до старта продаж. Часть 7 — еще немного возни с инсталлятором

Хотел было взяться уже за разработку бизнес-логики, но нет. Как только задумался о файлах, как и где их хранить, что инсталлировать, а что нет, сразу стало понятно, что сложность инсталлятора сильно возрастет и будет слишком много кода в одном классе. Поэтому решил вместе с разработкой файлового инсталлятора заодно сделать небольшой рефакторинг процесса инсталляции.

Читать далее →

Модуль для маркетплейс — от идеи до старта продаж. Часть 6 — база данных

Перед тем, как начать реализовывать эту часть, я решил все-таки проверить, насколько битрикс трепетно относится к структуре тех таблиц, которые сам создает. И, кажется, не зря.

Читать далее →

Модуль для маркетплейс — от идеи до старта продаж. Часть 5 — держим себя в руках. Файловая структура модуля, инсталлятор

Пора начинать наконец заниматься делом и приступать к созданию модуля. Первым делом нужно реализовать базовую файловую структуру и механизм инсталляции. Каждый раз так влом создавать эту структуру всю, лень писать инсталлятор, но надо перебороть себя и сделать.

Читать далее →

Модуль для маркетплейс — от идеи до старта продаж. Часть 4 — техническое задание и архитектура

Разработка архитектуры и составление технического задания — это, пожалуй, самый сложный этап работ во всем процессе. Особенно важным этот этап становится при разработке особо крупных и сложных проектов, т.к. на нем закладываются базовые принципы взаимодействия подмодулей системы, гибкость и расширяемость, структуры данных; если что-то на этом этапе не додумать и не доработать, то в будущем это может аукнуться серьезными переработками и массовыми вливаниями средств.

Но, у нас фан-проект 🙂 сурового энтерпрайза тут нет и не предвидится. Да и команды разработки у нас нет, у нас всего один человек в штате 🙂 Так и хочется сказать, что «мы забьем на этот этап», но нет, все же надо заложить какой-то фундамент, чтобы потом от него уже строить код.

Читать далее →

Модуль для маркетплейс — от идеи до старта продаж. Часть 3 — функциональные требования

Итак, функциональные требования (далее — ФТ).

Наиболее удобный формат для составления ФТ — это User Stories + Наброски интерфейса. Рассказывать о том, что такое User Stories я не буду, в интернетах масса информации на эту тему, поэтому сразу к делу.

Читать далее →

Модуль для маркетплейс — от идеи до старта продаж. Часть 2 — идея и цели

Итак, теперь нужно разобраться с тем, что именно я буду делать и зачем.

Немного предыстории.
На протяжении всего моего скромного опыта веб-разработки мне приходилось работать в основном с клиентами из e-commerce сферы. Кто-то из них продавал много, кто-то мало. Но неизменным было одно — все пытались тем или иным способом стимулировать продажи с помощью акций. В битриксе на эту тему есть неплохой функционал «Правила работы с корзиной», который позволяет довольно гибко настроить условия скидок (неплохой — с точки зрения администратора системы, но никак не в плане реализации). Кроме того, этот функционал позволяет создавать и привязывать купоны к скидкам таким образом, что скидки будут привязываться к заказу только в том случае, если был применен купон.

Купоны в битриксе — это сущность с очень длинной историей. Купоны существовали в битриксе еще очень давно, сначала в модуле «Торговый каталог», как и вся скидочная программа. Этот модуль ранее позволял присваивать скидки на конкретные товары, в том числе и с использованием купонов.
Потом в модуле «Интернет-магазин» появились правила работы с корзиной. Так в битриксе образовалось сразу 2 сервиса, дающих примерно одинаковую функциональность, но которую было очень сложно использовать вместе. Одни скидки применялись только в корзине, а другие — в каталоге и корзине, а условия применения скидок были разными. Купонов для правил работы с корзиной тогда не выпустили, что было неудобно.
Чуть позже был разработан очень крутой конструктор скидок (слямзили у Magento, вероятно, ну да ладно), а впоследствии добавили и купоны в правила работы с корзиной.
В итоге получилось 2 абсолютно идентичных функционала, которые отличались одной деталью — старый модуль давал скидки на отдельные товары, даже если они еще не лежали в корзине (и соответственно показывал эту скидку в каталоге товаров), а новый давал скидку только на товары, которые лежат в корзине (и не показывал скидку в каталоге). Не так давно было выпущено обновление, которое сливает эти две подсистемы в одну единую, что несомненно очень хорошо.
Однако до купонов все это время особо дела никому не было, и эта часть скидочной системы развивается медленнее остальных.

Читать далее →

Модуль для маркетплейс — от идеи до старта продаж. Часть 1 — вводная

В интернете довольно много различных площадок, предоставляющих разработчикам возможности по тиражированию своих решений. Это в первую очередь маркеты для мобильных приложений, которыми сейчас пользуются миллиарды пользователей — Google Play Market, iTunes store. Для веб-разработчиков это маркеты Envato — ThemeForest, CodeCanyon и многие другие по разным направлениям. Есть и более узкоспециализированные маркеты, например магазин готовых решений для Magento — Magento Marketplace, или для Shopify — Shopify App Store.

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

У меня как-то не сложилось с этой площадкой, разрабатывать конкретные модули было все время некогда, хотя идей всегда было валом.

Этой статьей я хочу начать новый цикл материалов, которые будут посвящены тому, как разработать модуль для 1С-Битрикс, начиная с непосредственно идеи и заканчивая публикацией готового модуля в маркетплейсе с его поддержкой. Но разрабатывать модуль в сухую, честно говоря, совсем скучно, поэтому в процессе разработки я буду выкладывать статьи о ходе разработки, о проблемах, с которыми пришлось столкнуться, постараюсь закопаться поглубже в процесс разработки модуля, как и что настроить чтобы процесс был удобным, ну и в таком духе.

Читать далее →

Подборка ссылок про битрикс

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

На этот раз хочу опубликовать небольшую подборку статей про Битрикс, которые раскрывают его не с самой лучшей стороны. Надеюсь, что эта подборка поможет кому-то в будущем сделать правильный выбор.

Итак:

Читать далее →

Про миграции в Битриксе

Так уж сложилось, что в 1С-Битрикс нет никакой штатной возможности по работе с модификацией структуры БД, кроме как делать это ручками в админке.

На конференциях разработчиков, у сотрудников Битрикса постоянно просят добавить в продукт механизм миграций БД, однако нам постоянно отвечают «завтраками», что может быть, когда-нибудь мы их сделаем.

Ну а работа не стоит на месте, потребность вносить изменения в БД в автоматическом режиме с соблюдением версионности никуда не делась, и даже наоборот — зреет с каждым днем.

Читать далее →

Подгрузка изображений с продакшена при работе на хосте разработки

Данный пост — скорее закладка, чтобы не потерялось, а то эта полезная информация может очень быстро потеряться.

Очень часто бывает так, что в проекте используется много изображений. Иногда — неприлично много. И перекачивание всего массива изображений к себе на хост разработки становится проблемой, когда их много.

Но есть очень простое повседневное решение, которое позволяет не заниматься ерундой, а грузить картинки напрямую с боевого сайта, если их не нашлось на вашем хосте разработки.

Вариант подключения зависит от веб-сервера, который вы используете.

Читать далее →

Организация кода в Битрикс. Часть 3. Переделываем все к черту и делаем еще лучше!

Я уже раньше писал о том, как я организовываю свой код. Однако с течением времени приходит понимание того, как все же сделать эту схему удобнее. И поэтому данная серия статей никогда не будет иметь финального ответа на вопрос, как же все-таки удобнее всего. Но мы постоянно приближаемся к этому недостижимому идеалу. На этот раз я решил все кардинально изменить.

Раньше я затрагивал только вопрос того, как хранить файлы внутри битрикса, однако начинать надо было не с этого. Начинать надо с того, как хранить файлы проекта, а не битрикса. Каждый сайт, сделанный на битриксе, имеет смысл рассматривать как целостный проект, индивидуальный и самодостаточный. И подход в разработке должен быть соответствующий, включая организацию кода.

Читать далее →

Наболело. Исповедь Битрикс хейтера

Таки кончилось у меня терпение. Давно я шел к этому, собирал данные, делал заготовки, обсуждал с коллегами из http://bitrix.expert/, и наконец сформулировал сгусток негатива к 1С Битрикс в виде одной большущей портянки текста. Целью статьи было донести до общественности (ее IT сегмента) ту боль, которую ежедневно доставляет нам, простым разработчикам, процесс созидания программных продуктов на 1С Битрикс.

И вы знаете, кажется, получилось. Это была моя первая статья на хабре за все время существования моего аккаунта (кстати, тёзка, спасибо за инвайт, если ты меня читаешь 😉 ). Для меня было очень важно написать статью, что называется, хорошо. Обосновать свою позицию детально, предоставить факты и аргументы.

Честно сказать, я сейчас понимаю, что недостаточно хорошо ее проработал. Нужно было поработать над ней немного больше. Но я поторопился, дал волю своему юношескому максимализму. Я забыл написать про такие адские вещи, как работа с ценами, разработку модулей для marketplace и еще несколько важных штук. К некоторым описанным статьям я мог бы предоставить гораздо больше аргументов. Обещаю, что к следующей своей публикации отнесусь более ответственно.

Данная статья — скорее заметка, небольшая памятка для себя. Ну и просто перекрестная ссылка на материал 🙂

В общем, всех, кто еще не читал, прошу на хабр, почитать мою Исповедь Битрикс хейтера.

Дружим Битрикс и Twig

Таки надоело мне лицезреть и постоянно рассказывать новичкам о том, что нельзя просто так взять, и долбить запросы к БД в шаблонах компонентах. А еще нельзя фигачить бизнес-логику туда же. Все, надоело … будем избавляться. Единственным правильным выходом из этой ситуации мне видится использование шаблонизатора.

Читать далее →

За что я все-таки люблю Битрикс

В своей предыдущей записи я сильно критиковал Битрикс по многим параметрам. В нем очень много спорных моментов, которые требуют скорейшего решения. Однако есть в битриксе и моменты, за которые иногда рад работать на этой платформе.

Читать далее →

Почему я не люблю Битрикс

Ох Битрикс … как много в этом слове. Стоит его только употребить в сообществе веб-разработчиков, так тебя сразу сольют. Надо сказать, что не безосновательно … За все время своего существования эта CMS завоевала рейтинг самой говнокодерской из всех ныне живущих. Достаточно заявить, что ты создаешь сайты на Битрикс — тебе сразу же присвоят сан почетного говнокодера.

Увы и ах, но в большинстве случаев оно так и выходит. Я повидал немало проектов, разработанных кем-то на битриксе, и навидался разного. И у меня сложилось определенное мнение, которым я и хочу поделиться.

Читать далее →

Презентую модуль для 1С-Битрикс maximaster.tools

Давно у меня назревала мысль создания модуля с полезными наработками, которые будет удобно распространять и использовать между всеми проектами. Но почему-то не находила эта идея времени на реализацию.

И вот, спустя N лет наконец, начало положено! Ура товарищи! И сразу публикую его исходники для сообщества.

Читать далее →

Организация кода в битрикс. Переосмысление

В продолжение моей предыдущей статьи на эту тему, решил пересмотреть и переосмыслить то, с чем приходилось работать в течение полугода. В целом, модель годная, но при использовании вскрываются некоторые мелкие недостатки, которые удобнее было бы организовать по другому. Итак

Читать далее →

Разбираемся с sitemap.xml, а заодно и с поиском

Пишу статью для начинающих, чтобы было проще разобраться с такой типовой задачей.

Не очень в битриксе хорошо дело обстоит с SEO. Да, в последнее время в этом направлении есть определенные подвижки, но этого явно недостаточно. На днях пришлось столкнуться с задачей настройки сайтпама (наконец-то!). Никогда не верьте Битриксоидам насчет того, что «все включается одной галочкой». Сегодня расскажу о том, как более-менее правильно использовать штатный механизм генерации Google Sitemap, тот самый «старый», который принадлежит модулю поиска.

Читать далее →

God mode on?

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

Читать далее →

Composer. Дружим битрикс с менеджером пакетов

Как много различных интересных инструментов нас окружает, и как много разработчиков по каким-то причинам боится их использовать. Сегодня речь пойдет о composer, о том, как «по быстрому» его поставить и заставить работать в унисон с битриксом.

Пара  слов о том, что это за зверь, и зачем он вам вообще нужен (если вы до сих пор не в курсе).
Composer — это отличный менеджер зависимостей для php. Это значит, что с его помощью вы можете управлять зависимостями вашего проекта буквально в «пару кликов». Например, досконально известно, что ваш проект зависит от php 5.4 (т.к. использует, например, трейты), а также в коде компонентов вашего проекта используется замечательная библиотека Guzzle. С помощью composer эти 2 зависимости можно напрямую связать с вашим проектом, и они будут поддерживаться при переносе всей системы в целом на другую машину, например. Или при обновлении библиотек, использующихся в проекте.
Обо всем — по порядку.

Читать далее →

Композитный сайт битрикс. Часть 2 — Подводные камни

Да уж … прошло уже более 2х месяцев со дня последнего поста. Честно признаться — времени не хватает, и работы много, и семья, и хобби.

Как и обещал, пишу пост про те тонкости и подводные камни. Если у вас стандартный сайт, сделанный на стандартном шаблоне, то скорее всего вы с ними не столкнетесь. Проблемы начинаются там, где кончается «зона комфорта», а, как говорится, не выйдешь из зоны комфорта — не будет никакого движения вперед. Поэтому давайте не будем останавливаться, а дадим немного газу и ускорим ваш сайт!

Читать далее →

Продолжаем про кеш. Композитный сайт Битрикс

Продолжая тему оптимизации скорости загрузки сайта, хочу рассказать о новой технологии от Битрикс — композитный сайт. Как водится, все новое — это хорошо забытое старое, вот и эта технология в общем-то мало отличается от кеширования страниц целиком в том же phpbb или wordpress, разве что с рядом технических улучшений. Но, обо всем — по порядку.

Читать далее →

Пара строк о тегированном кеше в битрикс

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

Вкратце — как работает почти любая система кеширования:
Кеш — совокупность каких-то данных (структурированных или нет). Кеш имеет определенный период жизни и какой-то идентификатор (нечто, что уникально идентифицирует именно эту совокупность данных в каком-то контексте). Пока период жизни кеша не истек — нужно обращаться к кешу, а после истечения срока жизни кеша нужно его актуализировать и снова сохранить на указанный период.

Читать далее →

Способы оптимизации скорости загрузки страниц 1С-Битрикс приложений. Оптимизация php кода

Довелось мне поработать с разными проектами и разными людьми. Бывали проекты нагруженные в плане посещаемости, но бедные по функциональности. Бывали наоборот — 500 хитов в месяц, а сложность функционала — выше крыши. Но вот с чем не повезло — так это с разработкой. Разработать проект с нуля и до запуска мне приходилось буквально пару раз. В остальных случаях приходилось заниматься сопровождением существующего кода (написанного другими разработчиками) и внедрением новых функциональностей в него. Но я считаю это огромным плюсом моей работы. Во-первых — можно встретить множество решений, как интересных, так и откровенно говоря «поганых». Во-вторых, приходится задействовать огромное количество серого вещества с целью собрать воедино всю картину в голове, чтобы при внедрении каких-то доработок не развалились старые.

Читать далее →

Настройка VCS в phpStorm на примере git

Поначалу мне не очень понравилась интеграция git в phpStorm. Наверно потому, что я ко времени первого своего знакомства с этим инструментом уже довольно долго работал с SourceTree. Последний — реально хорош, там есть все (почти все), что необходимо разработчику для ежедневной работы с гитом. Однако я решился, и заставил себя пользоваться инструментарием от jetBrains, и в принципе, нашел там определенные удобства.

Читать далее →

Документируй!

Раньше, когда я не пользовался IDE, я частенько бегал в гугл. Держать в голове всю документацию php — нереально, никогда не запомнишь всего и вся. А чтобы найти нужную функцию или класс в доке — нужно: интернет, набрать в гугле запрос, перейти к функции и только после этого начать читать, потом прочитав — вернуться в редактор. В день таких операций может быть десятки, они могут отнимать в день достаточно много времени. Очень много. Если еще посчитать время, которое теряется при отвлечении от кода, то оно может измеряться десятками минут, и даже часами!

Читать далее →

Организация кода в Битрикс — к обсуждению

Не сохранилась половина статьи про исключения ….(( а написал много. Поэтому пока их отложу, а напишу про битрикс.

Несмотря на весь тот свод правил, которые предлагает нам битрикс, можно организовывать хранение своего кода по разному. В статье я постараюсь предложить варианты, который хотел бы видеть в проектах, с которыми работаю. Он не идеален, он не панацея, доступен для обсуждения, я всегда открыт для ваших предложений.

Читать далее →

Возможности php. Пространства имен (Namespaces), ч.2

Продолжаем знакомиться с пространствами имен. В предыдущей статье мы узнали, что такое пространства имен, зачем они нужны, узнали что инклюлить файлы все равно придется, и рассмотрели пример о том, как же ими пользоваться, как определять и т.д.

В этой статье рассмотрим остальные аспекты пространств имен, которые не были затронуты ранее.

Читать далее →

Возможности php. Autoload

Продолжаем серию статей о фишках и возможностях php. На этот раз расскажу о возможности автоматической загрузки классов

В предыдущей статье я упоминал как раз о том, что буду писать про возможности автоматической загрузки. А догадливый Дима спросил, буду я писать про __autoload() или про spl_autoload_register(). Сначала я, было, ответил, что конечно же про spl_, ведь  __autoload() признан устаревшим. Ан нет — не получится, придется рассказать про оба, чтобы у вас сформировалась полная и четкая картина про автоматическую загрузку.

Читать далее →

Возможности php. Пространства имен (Namespaces), ч.1

С этого поста хочу начать цикл статей о возможностях языка, которые начинающие разработчики часто игнорируют, а потом в ежедневной суете не остается времени на их изучение или применение и часто люди избегают использования таких крутых возможностей языка, что становится странно. Все-таки php сейчас — один из самых динамично развивающихся языков, но иногда мне кажется, что многие разработчики просто застряли на эпохе зарождения php 5.

Все описанное ниже, а также далее в этой серии статей, будет иным трактованием официальной документации, и не более. Это просто очередная попытка донести до разработчиков необходимую информацию и не более.

Читать далее →

Базовые фишки phpStorm, которыми я пользуюсь каждый день

phpStorm

В продолжение предыдущей статьи, хотел бы поведать о том, чем же он так круче остальных IDE и редакторов, какие именно его особенности позволяют мне ежедневно экономить время на разработке и работать эффективнее.

Читать далее →

Укрощение phpStorm, или как начать. Настраиваем свой первый проект

phpStorm

Получил определенный фидбек на свое обращение к компании о создании блога. И некоторые коллеги просили в первую очередь рассказать именно про настройку phpStorm. Некоторые пока не совсем понимают, зачем им этот тормознутый зверь (на самом деле я так не думаю), который изменит их привычный уклад работы с проектом. Да и в самом то деле — зачем?

Читать далее →