Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
6 лет назад

Разработка клиента блокчейна Голос с использованием GOLOS API 2.0


Клиент в помощь новичкам Голоса от незрячего начинающего php программиста Дениса Скрипника.
Здравствуйте. Неделю назад ходил по постам в Голосе, и увидел библиотеку php golos api v2. Захотелось попробовать реализовать клиент для Голоса, благо идеи были:

  1. Сайт в помощь новичкам: посты и список ников;
  2. Клиент, собирающий торренты, парсящий содержимое в поисках magnet ссылок.

Решил реализовать первый.

Цели создания

  1. Научиться работать с API. Я новичок в программировании на php (Начал кодить в июле, но через неделю застопорился на 4 месяца).
  2. Помочь новичкам Голоса. На сайте размещаются их посты: те, кто уже имеет какой-то вес, может прочитать статью, перейти на goldvoice (В будущем будет выбор) и поставить апвоут. Либо, другой вариант - можно посмотреть список ников, кликнуть на любой и перейти на goldvoice. Дальше вариантов много:
  • Подписаться на новичка;
  • Апвоутить его посты;
  • Репостнуть записи.

Я тоже буду это делать.

Функционал

О функционале немного писал выше, но сейчас расскажу подробнее:

  1. На главной размещается две вкладки: посты новичков и список новичков. По умолчанию всегда открыта первая вкладка. Содержимым является таблица, содержащая ник автора со ссылкой, его пост и количество голосов.
    Содержимое первой вкладки: список постов
    На второй вкладке размещается список ников с возможностью перехода на страницу пользователя.
    Список ников новичков
    На каждой вкладке работает постраничная навигация (Отображается по 30 элементов). Единственное неудобство заключается в том, что после клика на следующую или предыдущую страницу, произойдёт автоматический выбор первой вкладки (Посты новичков).
  2. По клику на пост открывается страница с записью. Она содержит название, дату, автора, количество апвоутов и текст. Ниже текста - ссылка на goldvoice для того, чтобы вы могли проголосовать.
    Страница поста: его содержимое

Код

Код клиента можно посмотреть на GitHub:
https://github.com/denis-skripnik/newbie-goloses-ru

Рабочий пример

Посмотреть можно тут http://newbie.goloses.ru/

Сложности:

  1. Постраничная навигация работала так, что на главной выводилась ошибка. @tristamoff помог с её удалением. Кроме этого, он сделал работоспособными ссылки "Предыдущая", "следующая".
  2. Не понимал, как вывести количество голосов. @tristamoff помог и тут, за что ему большая благодарность.
  3. С трудом смог сделать работоспособными страницы записей. Дело в том, что в информации про getpost.php не говорилось о необходимости добавлять author в url.

Планы на будущее:

  1. Сделать сохранение вкладки при переходе на новую страницу. Будет либо заменён метод их размещения, либо исправлен текущий.
  2. Сделать перенаправление 301 с ?page=0 на главную.
  3. Кеширование элементов, пока они находятся в списке (Пока не знаю как, но буду разбираться, поскольку скорость загрузки сайта низкая).
  4. Сделать обработку адресов, как ссылок. Те изображения, которые вставлены просто адресами, сейчас не кликабельны.
  5. Добавить ссылку на golos.io, чтобы те, кто не авторизовывались в goldvoice, могли проголосовать на golos.io.

Здесь я вижу 2 варианта:

  1. Разместить две ссылки.
  2. Добавить вверху страницы выпадающий список с возможностью выбора клиента (golos, goldvoice).
    Вопрос: какой вариант вам больше нравится?
    И ещё один: ссылку на переход в основной клиент сделать возле количества голосов или оставить под текстом?
    Благодарю за ответы.

Предложения

Если это реально, было бы замечательно интегрировать систему апвоутов в newbie-golos-ru, чтоб людям не приходилось переходить на другие клиенты.
Насколько я знаю - это реализуется только с использованием node.js. Будет, конечно, хорошо, если на php будет подобное реализовано, но если нет - может тот, кто знает node.js захочет добавить данный функционал.

Примечание редактора: можно и на чистом js, в браузере, имея логин и как минимум приватный постинг ключ. На php ещё никто не написал скрипт, позволяющий записывать данные в блокчейн:)

Заключение

Ещё раз повторяю, что я - новичок в программировании на php, поэтому прошу не писать о том, что у меня "говнокод", "непонятный код" и т. п. я об этом знаю, но пока начать функциональным методом писать не получается.
Жду комментариев и апвоутов. Надеюсь, данный клиент кому-то будет полезным (или хотя-бы интересно будет посмотреть на опыт новичка).

Пост подготовлен незрячим вебмастером @denis-skripnik

1
318.824 GOLOS
На Golos с August 2017
Комментарии (14)
Сортировать по:
Сначала старые