Спринт: разработка магазина для BuddyPress #1
Решил провести вечер спринт-программирования. Это значит, что я попытаюсь не отвлекаясь создать за короткий промежуток времени как можно более функциональный плагин.
В качестве идеи для реализации я выбрал давно наметившийся план по созданию BuddyShop – плагина магазина для социальной сети на WordPress + BuddyPress.
Итак, ниже я буду публиковать процесс работы с точностью до +/- 10 минут.
16 апреля @ 18.30
- Создаю базу данных
- Разворачиваю локальный домен, устанавливаю последнюю версию WordPress 3.1.1 и BuddyPress 1.3 (bleeding edge).
- BuddyPress вытягиваю из репозитория используя комманду
svn co http://svn.buddypress.org/trunk/
16 апреля @ 18.40
- Создаю папку /buddyshop/ и начинаю думать, что работы будет чрезвычайно много.
- Создаю черновик записи на сайте CosyDale.com, которые в будущем буду постоянно обновлять текущим статусом.
16 апреля @ 18.55
- Разобрался с общим оформлением этой записи.
- Ко мне пришли с приглашением на какое-то собрание в честь рождения завтра Иисуса Христа.
- На сайте itsworkable.com в своем аккаунте создал еще одну площадку для проектов и задач под названием BuddyShop. Там я буду записывать все, что мне надо сделать по этому плагину.
16 апреля @ 19.05
- Создал основной файл buddyshop.php с хуками выполнения кода сразу после активации и во время своей деактивации.
- Написал пару функций для дебуга, в частности:
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
- Начал работать над админкой плагина внутри меню BuddyPress с первоначальными настройками.
- Одновременно продумываю структуру кода и грамотное подключение файлов (по необходимости).
16 апреля @ 19.40
- Наполняю админку минимально необходимыми опциями разного типа с последующим сохранением всего.
- Сейчас все выглядит вот так:
16 апреля @ 20.00
- Подключил необходимые скрипты и стили. Причем они включаются только там, где это действительно необходимо (админские файлы вообще не будут грузиться на морде сайта).
- Внедрил и далее буду поддерживать локализацию плагина (локаль ‘b_shop’).
16 апреля @ 20.15
- Расширил админку разными типами (потом просто буду копипастить, а не писать каждый раз заново).
16 апреля @ 20.55
- Пытаюсь понять, почему не срабатывает шаблонизатор в версии BP 1.3.
- Добавил пользовательское меню. На данный момент есть ссылки в профиле на статистику пользовательского магазина, собственные товары, список пожеланий и настройки.
- Отправил запрос в репозитории на регистрацию своего плагина. Вот его будущее расположение.
16 апреля @ 21.15
- Вы бы видели, НАСКОЛЬКО сильно изменился код в 1.3 по сравнению с 1.2. Переписано практически все… Во всех плагинах поотваливаются создаваемые ими на морде страницы. Так что не обновляйтесь недели 2 после выхода 1.3…
- Вникаю в новое API добавления данных внутрь BuddyPress.
- Начинаю переписывать свой же код по регистрации ссылок и шаблонов вывода.
- Хочется пива.
16 апреля @ 22.00
- Переписал частично плагин. Меню и ссылки загружаются по-новому. Подключение идет тоже по-новому. В целом новая система мне нравится – она единообразная. Разработчики создали единый класс, который запускает модуль или плагин, а вы уже можете его расширять, создавая нечто свое собственное.
- Сделаю себе перерыв на полтора часа.
17 апреля @ 00.00
- Вернулся к разработке.
- Выясняю, как работает в BuddyPress внутренняя система подключения модулей.
17 апреля @ 00.45
- Нашел неприятный момент внутри BP кода. Оказывается, можно с чрезвычайной легкостью загрузится до BuddyPress, используя его же классы. Логика этого решения мне непонятна.
- В третий раз переписал основной класс компонента.
- Название изменил с BuddyShop на ВР Shop (чтобы подстроиться к внутренней логике инклудинга файлов).
- Зарегистрировал новое название в репозитории плагинов.
17 апреля @ 01.30
- Окончательно разделил компонент на составляющие.
- Ко мне пришло осознание новой архитектуры BuddyPress :) Сочувствую всем, кому придется повторять мой путь.
- Теперь уже можно непосредственно начать писать сам компонент, а не подстраиваться под новый формат движка.
17 апреля @ 02.30
- Добрался до фронт-энда.
- Начинаю работать с базой данных. Хотя скорее всего, продолжу завтра.
- Теперь добавление своих компонентов на порядок легче стало. Тут разработчики молодцы.
Продолжение следует? :)
Да :)
Я постараюсь, по крайней мере.
Написание таких коротких заметок по ходу разработки не сильно отвлекает от самой разработки? По-моему пока пишешь заметку, о проделанном за 10-30 мин, отвлекаешься от кода и сила мысли направленная на код куда-то рассеивается.
Я пишу после того, как уже закончил определенный логический блок. И занимает это минуту, так что лично мне не мешает.
Какой планируется функционал?
электронную оплату надо внедрять однозначно!
Да, знаю :)
Webmoney + Paypal + Alertpay будет точно, но тяжело сказать когда именно.
Первая версия будет давать возможность связаться с владельцем для дальнейшего личного обсуждения формата оплаты – мне надо хотя бы базы выпустить :)
Если найдется спонсор, то скорость работы над плагином значительно вырастет, плюс если будут премиум фишки в будущем, то такие люди получат их бесплатно или с большой скидкой ;)
Ух ты..
Вот это тема будет!
Ждем с нетерпением!
давайте скинимся и попросим slaFFik-а опубликовать некий труд под названием “Переводим свою соцсеть с 1.2.x на 1.3” :)
у меня плагин События – однозначно будет переделываться под новую структуру.. я помру!
Готов кинуть копейку в котел :)
И еще на счет магазина, не плохо бы привязать к ролям! Ну в смысле только определенный роли могут выставлять товар на продажу и тд… много вариантов в голове.. :)
200 копеек ушло на кошелек!
Спасибо! Я непременно это учту!
Да, возможностей очень много. Но это также подразумевает много сложностей и увеличивает время разработки :)
Было бы неплохо :)
Они оставили deprecated функции, но они все в одном файле, который скорее всего будет удален (правда, неизвестно когда). Так что однозначно лучше переезжать на новый формат работы плагина сразу после выхода.