Пользователь
0,0
рейтинг
5 декабря 2012 в 15:47

Разработка → Битрикс + Bitcoin. Пишем решение для Маркетплейс. Часть 1 из песочницы tutorial

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

Условия


Дано: Битрикс редакции «Малый бизнес» — одна штука.
Задача: Научить его принимать платежи Bitcoin и…
И вот тут я задумался — а как? Модулей для интеграции платёжных систем для Битрикс я писал и переписывал немало. Но что делать с Биткоинами? С какой стороны подступиться? Я не знал.

Поиск решения


В процессе довольно продолжительного гугления удалось выйти на платёжную систему, позволяющую принимать BTC и автоматически конвертировать их в валюту, выбранную продавцом в настройках магазина. Тут всё оказалось довольно просто — API есть, Bitcoin в роли валюты принимается, чего вам ещё? Поехали!

Появление идеи


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

Документация


Если API платёжной системы оказалось довольно хорошо документировано и интуитивно понятно (да и понимать особо нечего — пара функций да пример кода), то с инструкциями по производству модулей для Битрикса всё крайне неоднозначно.
С одной стороны она есть, с другой не очень-то мне и помогла. Всё как-то сумбурно, скомкано, постоянные прыжки по тексту в поисках ответов на вопросы. Как кто-то очень точно подметил на форуме самого Битрикса: «Сухие мануалы по модулям лучше даже не открывать — их писали не для тех, кто хочет научиться, а для тех кто уже умеет». Помог неплохой видеоурок, там по крайней мере объясняет живой человек.

Note: Хочу отдельно подчеркнуть, что я совсем не дурак и не тугодум. Это был первый опыт разработки модуля для Marketplace. Сейчас, пройдя этот путь, я вижу что многие вещи на самом деле элементарны, но поиск этих решений в первый раз производился методом «пальцем в небо»

С чего начинается модуль?


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

Изображение взято из официальной документации.
Здесь необходимо пояснить что к чему. Приведённая на изображении структура папок вряд ли будет у Вас точно такой же. Она избыточна и когда (если?) вы будете разрабатывать свой модуль, от неё останется всего пара папок и пара файлов.
Что из этого является обязательным:
  1. /install/version.php — файл с номером версии (объявление массива с парой переменных)
  2. /install/index.php — файл с описанием модуля, содержащий инсталлятор/деинсталлятор модуля. Фактически и является установщиком. Именно он запускается, когда пользователь нажмёт кнопку «Установить». Вернее сам файл, а методы DoInstall / DoUninstall описанные в нём. Кроме того может содержать вспомогательные методы, копирующие файлы в разные директории, выполняющие SQL-запросы и т.д.
  3. /include.php – подключаемый файл. Он подключается при активации модуля во время выполнения скриптов сайта. То есть по сути это инъекция в сам движок. В нём, например, можно добавить какие-либо фоновые обработчики-агенты, добавить пункты меню в административном интерфейсе и т.п.

Остальные элементы структуры являются вспомогательными:
  1. /lang/ — директория, в которой должны находиться все чувствительные к кодировке файлы — локализации. Не ленитесь выносить локализацию из кода компонентов в языковые файлы!
  2. /classes/ — как видно из названий поддиректорий, это основные классы модуля (в том числе для работы с различными БД)
  3. /install/admin/ | /install/components/ | /install/themes/ — вспомогательные директории, из которых мы будем копировать служебные файлы в процессе установки.


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

В следующей части статьи мы узнаем как применить эти знания на практике, а в третьей части будет описание структуры и назначения обновлений модуля.
Mike Iceman @Quiz
карма
38,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (6)

  • 0
    Господа, если Вам что-то не понравилось в статье, не надо молча минусовать. Комментируйте что не так, буду учиться на своих ошибках.
    • +1
      Просто мало. Введение — это хорошо, но думаю все кто открыли статью ждали именно Bitcoin в битриксе, а не это.
      • –4
        Материала просто очень много, а на огромные посты люди обычно жалуются =(
        Поэтому и получилась не очень большая заметка. Вторая часть значительно больше.
        • +1
          За всех не скажу, но я ожидал описание работы в принципе с Bitccoin из PHP, т.к. с Битриксом особо не сталкиваюсь, а вот тема биткоинов интересна. Видимо, часть людей из-за этого и минусовала.
    • 0
      Толку ноль от поста, вот и минусуют. А начиналось все интересно… всегда интересовала структура «упакованных» для маркетплейса модулей.
  • 0
    Странно почему столько минусов, отличная статья!

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.