Статьи

Отобразите все, что вы хотите от API Envato, используя PHP

Если вы не в курсе, у Envato есть стабильный и фантастический API для работы, который очень мощный и очень простой. Последняя версия (на момент написания) — версия v2 . В этой статье мы рассмотрим, как получить доступ к каждому общедоступному набору из API Envato.


Перво-наперво: вам нужно знать, где найти API, что это такое и как именно оно работает. Вы можете найти официальный выпуск API на форумах, а также обновление ветки API и информацию об обновлении v1 .

API работает, отправляя запросы на пользовательские URL-адреса, содержащие данные, которые вы хотите вернуть. Данные также могут быть возвращены в двух форматах, xml или JSON , который возвращается на ваше усмотрение. Я предпочитаю возвращаться как JSON и использовать PHP json_decode, чтобы превратить данные во вложенные массивы.


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

Таблица релизов

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

Кроме того, не стесняйтесь использовать этот код и методы, изученные в этом руководстве, как вы пожелаете!


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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//Initialize curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘http://marketplace.envato.com/api/v1/blog-posts:themeforest.json’);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ch_data = curl_exec($ch);
curl_close($ch);
 
if(!empty($ch_data))
{
    $json_data = json_decode($ch_data, true);
    //print_r($json_data);
    $data_count = count($json_data[‘blog-posts’]) -1;
     
    echo ‘<ul>’;
    for($i = 0; $i <= $data_count; $i++)
    {
        echo ‘<li><a href=»‘,$json_data[‘blog-posts’][$i][‘url’],'»>’,$json_data[‘blog-posts’][$i][‘title’],'</a></li>’;
    }
    echo ‘</ul>’;
}
else
{
    echo ‘Sorry, but there was a problem connecting to the API.’;
}

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

  • Мы начнем с инициализации новой ручки завитка. cURL позволяет нам запрашивать API с любыми параметрами, которые нам нравятся. Вы можете использовать file_get_contents , но вы получите повышение производительности с помощью cURL.
  • Мы устанавливаем наш целевой URL. Обратите внимание, как мы передали набор сообщений в блоге, а затем themeforest для параметра. Также обратите внимание, что мы запрашиваем данные в формате JSON.
  • Далее мы устанавливаем еще два варианта cURL. CURLOPT_CONNECTTIMEOUT позволяет нам установить время ожидания для нашего запроса, которое мы устанавливаем равным 5 секундам. Другой вариант — CURLOPT_RETURNTRANSFER — указывает cURL возвращать данные в виде строки, а не выводить их напрямую.
  • Мы сохраняем результаты запроса cURL в $ ch_data .
  • Теперь мы проверяем, действительно ли были возвращены некоторые данные, если это так, мы декодируем json и превращаем его во вложенный массив.
  • Наконец, мы перебираем элементы массива и выводим некоторые основные данные.

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

И демоверсия выхода:

Сообщения в блоге

Набор активных потоков позволяет вам выводить некоторые недавно активные темы форума.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘http://marketplace.envato.com/api/v1/active-threads:themeforest.json’);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ch_data = curl_exec($ch);
curl_close($ch);
 
if(!empty($ch_data))
{
    $json_data = json_decode($ch_data, true);
    //print_r($json_data);
    $data_count = count($json_data[‘active-threads’]) -1;
     
    echo ‘<ul>’;
    for($i = 0; $i <= $data_count; $i++)
    {
        echo ‘<li><a href=»‘,$json_data[‘active-threads’][$i][‘url’],'»>’,$json_data[‘active-threads’][$i][‘title’],'</a></li>’;
    }
    echo ‘</ul>’;
}
else
{
    echo ‘Sorry, but there was a problem connecting to the API.’;
}

Обратите внимание на несколько вещей здесь; Во-первых, мы изменили URL нашего запроса, чтобы отразить новый набор, который мы хотим получить. Во-вторых, обратите внимание, что имена массивов менялись, как и в каждом новом наборе, которое мы запрашиваем. Наконец, обратите внимание, как закомментирован print_r . Это очень полезно для отладки и просмотра структуры и иерархии данных.

И демоверсия выхода:

Активные темы

Не позволяйте названию набора файлов ввести вас в заблуждение. Это не количество файлов пользователей (но мы рассмотрим это!), А количество файлов в данной категории с данного рынка. Например, это позволит вам узнать, сколько всего шаблонов сайтов у нас на ThemeForest, что мы и сделаем сейчас.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘http://marketplace.envato.com/api/v1/number-of-files:themeforest.json’);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ch_data = curl_exec($ch);
curl_close($ch);
 
if(!empty($ch_data))
{
    $json_data = json_decode($ch_data, true);
    //print_r($json_data);
    $data_count = count($json_data[‘number-of-files’]) -1;
     
    echo ‘<ul>’;
    for($i = 0; $i <= $data_count; $i++)
    {
        echo ‘<li><a href=»‘.$json_data[‘number-of-files’][$i][‘url’].'»>’,$json_data[‘number-of-files’][$i][‘category’],'</a> — ‘,$json_data[‘number-of-files’][$i][‘number_of_files’],'</li>’;
    }
    echo ‘</ul>’;
}
else
{
    echo ‘Sorry, but there was a problem connecting to the API.’;
}

Конечно, наш URL-запрос изменился, и мы передали параметр themeforest , с которого мы собираем данные. Пример вывода из этого фрагмента ниже:

Количество файлов

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘http://marketplace.envato.com/api/v1/new-files:themeforest,wordpress.json’);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ch_data = curl_exec($ch);
curl_close($ch);
 
if(!empty($ch_data))
{
    $json_data = json_decode($ch_data, true);
    //print_r($json_data);
    $data_count = count($json_data[‘new-files’]) -1;
     
    echo ‘<ul>’;
    for($i = 0; $i <= $data_count; $i++)
    {
        echo ‘<li><img style=»width: 560px;»
    }
    echo ‘</ul>’;
}
else
{
    echo ‘Sorry, but there was a problem connecting to the API.’;
}

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

Пример вывода этого фрагмента ниже:

Новые файлы

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘http://marketplace.envato.com/api/v1/popular:themeforest.json’);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ch_data = curl_exec($ch);
curl_close($ch);
 
if(!empty($ch_data))
{
    $json_data = json_decode($ch_data, true);
    //print_r($json_data);
    $json_short = $json_data[‘popular’][‘items_last_week’];//Save us some typing.
    $data_count = count($json_short) -1;
     
    echo ‘<ul>’;
    for($i = 0; $i <= $data_count; $i++)
    {
        echo ‘<li><img style=»width: 560px;»
    }
    echo ‘</ul>’;
}
else
{
    echo ‘Sorry, but there was a problem connecting to the API.’;
}

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

Популярные файлы

New-files-from-user — это популярный набор, который мы использовали некоторое время назад, когда создавали плагин WordPress с API Envato . Этот набор позволяет вам получить 10 новейших файлов, загруженных пользователем, и данные, которые сопровождают его. Вы можете использовать этот набор, чтобы рекламировать себя в своем блоге автоматически каждый раз, когда вы загружаете новый элемент.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘http://marketplace.envato.com/api/v1/new-files-from-user:creatingdrew,themeforest.json’);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ch_data = curl_exec($ch);
curl_close($ch);
 
if(!empty($ch_data))
{
    $json_data = json_decode($ch_data, true);
    //print_r($json_data);
    $data_count = count($json_data[‘new-files-from-user’]) -1;
     
    echo ‘<ul>’;
    for($i = 0; $i <= $data_count; $i++)
    {
        echo ‘<li><img style=»width: 560px;»
    }
    echo ‘</ul>’;
}
else
{
    echo ‘Sorry, but there was a problem connecting to the API.’;
}

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

Новые файлы от пользователя

Набор random-new-files довольно понятен и действует как ожидалось. Возвращает случайный список недавно загруженных файлов с данного рынка. Он также возвращает метаданные о файле, которым вы можете свободно пользоваться и манипулировать.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘http://marketplace.envato.com/api/v1/random-new-files:themeforest.json’);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ch_data = curl_exec($ch);
curl_close($ch);
 
if(!empty($ch_data))
{
    $json_data = json_decode($ch_data, true);
    //print_r($json_data);
    $data_count = count($json_data[‘random-new-files’]) -1;
     
    echo ‘<ul>’;
    for($i = 0; $i <= $data_count; $i++)
    {
        echo ‘<li><img style=»width: 560px;»
    }
    echo ‘</ul>’;
}
else
{
    echo ‘Sorry, but there was a problem connecting to the API.’;
}

Там нет ничего, что вы еще не видели здесь. Мы используем этот набор для отображения некоторых миниатюр и заголовка. Не забудьте проверить все данные, которые возвращаются, хотя, вы можете быть заинтересованы в этом. Скриншот вывода ниже:

Случайные новые файлы

Правильно, вы действительно можете использовать API для поиска пользовательских данных в пользовательских категориях из пользовательских торговых площадок! Разработчики действительно продумали API, и поисковый набор — прекрасное тому подтверждение. Давайте посмотрим на короткий фрагмент поиска. Имейте в виду, что вы могли бы взять все эти данные из пользовательского ввода и настроить собственный поиск Envato на своем сайте, но это выходит за рамки данного руководства.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘http://marketplace.envato.com/api/v1/search:themeforest,wordpress,clean.json’);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ch_data = curl_exec($ch);
curl_close($ch);
 
if(!empty($ch_data))
{
    $json_data = json_decode($ch_data, true);
    //print_r($json_data);
    $data_count = count($json_data[‘search’]) -1;
     
    echo ‘<ul>’;
    for($i = 0; $i <= $data_count; $i++)
    {
        echo ‘<li><a href=»‘,$json_data[‘search’][$i][‘url’],'»>’,$json_data[‘search’][$i][‘description’],'</a></li>’;
    }
    echo ‘</ul>’;
}
else
{
    echo ‘Sorry, but there was a problem connecting to the API.’;
}

Выше есть некоторые объяснения.

  • Мы изменили URL нашего запроса на поисковый набор.
  • Набор для поиска принимает три параметра: рынок, категорию для поиска и термин для поиска.
  • Здесь мы искали термин чистый

Я рекомендую ознакомиться с документацией по API и проверить все, что возможно с помощью набора поиска.

Поиск

Набор данных пользователя возвращает небольшое количество информации о данном пользователе. Обратите внимание, что ключ API не требуется.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘http://marketplace.envato.com/api/v1/user:collis.json’);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ch_data = curl_exec($ch);
curl_close($ch);
 
if(!empty($ch_data))
{
    $json_data = json_decode($ch_data, true);
    //print_r($json_data);
    echo ‘<ul>’;
        echo ‘<li>Location =’,$json_data[‘user’][‘location’],'</li>’;
        echo ‘<li>Username =’,$json_data[‘user’][‘username’],'</li>’;
        echo ‘<li>Sales =’,$json_data[‘user’][‘sales’],'</li>’;
    echo ‘</ul>’;
}
else
{
    echo ‘Sorry, but there was a problem connecting to the API.’;
}

Поскольку мы возвращаем информацию только от одного пользователя, нет необходимости выполнять какие-либо циклы — просто выводим данные.

пользователь

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘http://marketplace.envato.com/api/v1/releases.json’);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ch_data = curl_exec($ch);
curl_close($ch);
 
if(!empty($ch_data))
{
    $json_data = json_decode($ch_data, true);
    print_r($json_data);
}
else
{
    echo ‘Sorry, but there was a problem connecting to the API.’;
}

Мы рассмотрели каждый набор, указанный в общедоступном наборе v1 API! Не стесняйтесь погладить себя по спине и съесть немного бекона, вы это заслужили.

Эта статья была первоначально размещена в блоге ThemeForest в конце прошлого года. В настоящее время мы портируем некоторые из наиболее популярных статей на Nettuts +.