Спринт: разработка магазина для BuddyPress #1

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

В качестве идеи для реализации я выбрал давно наметившийся план по созданию BuddyShop – плагина магазина для социальной сети на WordPress + BuddyPress.

Итак, ниже я буду публиковать процесс работы с точностью до +/- 10 минут.

16 апреля @ 18.30

  1. Создаю базу данных
  2. Разворачиваю локальный домен, устанавливаю последнюю версию WordPress 3.1.1 и BuddyPress 1.3 (bleeding edge).
  3. BuddyPress вытягиваю из репозитория используя комманду
    svn co http://svn.buddypress.org/trunk/

16 апреля @ 18.40

  1. Создаю папку /buddyshop/ и начинаю думать, что работы будет чрезвычайно много.
  2. Создаю черновик записи на сайте CosyDale.com, которые в будущем буду постоянно обновлять текущим статусом.

16 апреля @ 18.55

  1. Разобрался с общим оформлением этой записи.
  2. Ко мне пришли с приглашением на какое-то собрание в честь рождения завтра Иисуса Христа.
  3. На сайте itsworkable.com в своем аккаунте создал еще одну площадку для проектов и задач под названием BuddyShop. Там я буду записывать все, что мне надо сделать по этому плагину.

16 апреля @ 19.05

  1. Создал основной файл buddyshop.php с хуками выполнения кода сразу после активации и во время своей деактивации.
  2. Написал пару функций для дебуга, в частности:
     if (!function_exists('print_var')){
    	function print_var($var){
    		echo '<pre>'
    		if(!empty($var))
    			print_r($var);
    		else
    			var_dump($var);
    		echo '</pre>'
    	}
    }
    add_action('bp_adminbar_menus', 'b_shop_queries');
    function b_shop_queries(){
        echo '<li class="no-arrow"><a>'.get_num_queries() . ' queries | ';
        echo round(memory_get_usage() / 1024 / 1024, 2) . 'Mb</a></li>';
    }

16 апреля @ 19.20

  1. Начал работать над админкой плагина внутри меню BuddyPress с первоначальными настройками.
  2. Одновременно продумываю структуру кода и грамотное подключение файлов (по необходимости).

16 апреля @ 19.40

  1. Наполняю админку минимально необходимыми опциями разного типа с последующим сохранением всего.
  2. Сейчас все выглядит вот так:

16 апреля @ 20.00

  1. Подключил необходимые скрипты и стили. Причем они включаются только там, где это действительно необходимо (админские файлы вообще не будут грузиться на морде сайта).
  2. Внедрил и далее буду поддерживать локализацию плагина (локаль ‘b_shop’).

16 апреля @ 20.15

  1. Расширил админку разными типами (потом просто буду копипастить, а не писать каждый раз заново).

16 апреля @ 20.55

  1. Пытаюсь понять, почему не срабатывает шаблонизатор в версии BP 1.3.
  2. Добавил пользовательское меню. На данный момент есть ссылки в профиле на статистику пользовательского магазина, собственные товары, список пожеланий и настройки.
  3. Отправил запрос в репозитории на регистрацию своего плагина. Вот его будущее расположение.

16 апреля @ 21.15

  1. Вы бы видели, НАСКОЛЬКО сильно изменился код в 1.3 по сравнению с 1.2. Переписано практически все… Во всех плагинах поотваливаются создаваемые ими на морде страницы. Так что не обновляйтесь недели 2 после выхода 1.3…
  2. Вникаю в новое API добавления данных внутрь BuddyPress.
  3. Начинаю переписывать свой же код по регистрации ссылок и шаблонов вывода.
  4. Хочется пива.

16 апреля @ 22.00

  1. Переписал частично плагин. Меню и ссылки загружаются по-новому. Подключение идет тоже по-новому. В целом новая система мне нравится – она единообразная. Разработчики создали единый класс, который запускает модуль или плагин, а вы уже можете его расширять, создавая нечто свое собственное.
  2. Сделаю себе перерыв на полтора часа.

17 апреля @ 00.00

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

17 апреля @ 00.45

  1. Нашел неприятный момент внутри BP кода. Оказывается, можно с чрезвычайной легкостью загрузится до BuddyPress, используя его же классы. Логика этого решения мне непонятна.
  2. В третий раз переписал основной класс компонента.
  3. Название изменил с BuddyShop на ВР Shop (чтобы подстроиться к внутренней логике инклудинга файлов).
  4. Зарегистрировал новое название в репозитории плагинов.

17 апреля @ 01.30

  1. Окончательно разделил компонент на составляющие.
  2. Ко мне пришло осознание новой архитектуры BuddyPress :) Сочувствую всем, кому придется повторять мой путь.
  3. Теперь уже можно непосредственно начать писать сам компонент, а не подстраиваться под новый формат движка.

17 апреля @ 02.30

  1. Добрался до фронт-энда.
  2. Начинаю работать с базой данных. Хотя скорее всего, продолжу завтра.
  3. Теперь добавление своих компонентов на порядок легче стало. Тут разработчики молодцы.

комментариев 13

  1. Продолжение следует? :)

    • Да :)
      Я постараюсь, по крайней мере.

      • Написание таких коротких заметок по ходу разработки не сильно отвлекает от самой разработки? По-моему пока пишешь заметку, о проделанном за 10-30 мин, отвлекаешься от кода и сила мысли направленная на код куда-то рассеивается.

        • Я пишу после того, как уже закончил определенный логический блок. И занимает это минуту, так что лично мне не мешает.

        • Петр:

          Какой планируется функционал?
          электронную оплату надо внедрять однозначно!

        • Да, знаю :)
          Webmoney + Paypal + Alertpay будет точно, но тяжело сказать когда именно.
          Первая версия будет давать возможность связаться с владельцем для дальнейшего личного обсуждения формата оплаты – мне надо хотя бы базы выпустить :)
          Если найдется спонсор, то скорость работы над плагином значительно вырастет, плюс если будут премиум фишки в будущем, то такие люди получат их бесплатно или с большой скидкой ;)

  2. Петр:

    Ух ты..
    Вот это тема будет!
    Ждем с нетерпением!

  3. Jettochkin:

    давайте скинимся и попросим slaFFik-а опубликовать некий труд под названием “Переводим свою соцсеть с 1.2.x на 1.3” :)
    у меня плагин События – однозначно будет переделываться под новую структуру.. я помру!

    • Петр:

      Готов кинуть копейку в котел :)
      И еще на счет магазина, не плохо бы привязать к ролям! Ну в смысле только определенный роли могут выставлять товар на продажу и тд… много вариантов в голове.. :)

    • Было бы неплохо :)
      Они оставили deprecated функции, но они все в одном файле, который скорее всего будет удален (правда, неизвестно когда). Так что однозначно лучше переезжать на новый формат работы плагина сразу после выхода.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *