Если вы не в курсе, у Envato есть стабильный и фантастический API для работы, который очень мощный и очень простой. Последняя версия (на момент написания) — версия v2 . В этой статье мы рассмотрим, как получить доступ к каждому общедоступному набору из API Envato.
Изучение Основ
Перво-наперво: вам нужно знать, где найти API, что это такое и как именно оно работает. Вы можете найти официальный выпуск API на форумах, а также обновление ветки API и информацию об обновлении v1 .
API работает, отправляя запросы на пользовательские URL-адреса, содержащие данные, которые вы хотите вернуть. Данные также могут быть возвращены в двух форматах, xml или JSON , который возвращается на ваше усмотрение. Я предпочитаю возвращаться как JSON и использовать PHP json_decode, чтобы превратить данные во вложенные массивы.
Что мы будем выполнять
Ниже вы увидите скриншот всех доступных в настоящее время общедоступных наборов. Мы рассмотрим каждый из них сегодня, индивидуально, с примером рабочего кода и предварительным просмотром окончательного результата!

Для каждого набора, который мы рассмотрим сегодня, я кратко опишу смысл этого набора, опубликую код, а затем объясню каждый шаг кода ниже. Обязательно задавайте любые вопросы о любых фрагментах кода, которые вы найдете ниже.
Кроме того, не стесняйтесь использовать этот код и методы, изученные в этом руководстве, как вы пожелаете!
1. Сообщения блога
Набор постов блога позволяет запрашивать и отображать список постов блога для любого конкретного рынка. Для этого требуется один параметр — это торговая площадка, с которой вы хотели бы получить последние сообщения в блоге.
|
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 и превращаем его во вложенный массив.
- Наконец, мы перебираем элементы массива и выводим некоторые основные данные.
Помните эти детали; Как я уже сказал, вы увидите этот шаблон почти в каждом наборе, который мы покрываем, хотя они будут немного отличаться.
И демоверсия выхода:

2. Активные темы
Набор активных потоков позволяет вам выводить некоторые недавно активные темы форума.
|
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 . Это очень полезно для отладки и просмотра структуры и иерархии данных.
И демоверсия выхода:

3. Количество файлов
Не позволяйте названию набора файлов ввести вас в заблуждение. Это не количество файлов пользователей (но мы рассмотрим это!), А количество файлов в данной категории с данного рынка. Например, это позволит вам узнать, сколько всего шаблонов сайтов у нас на 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 , с которого мы собираем данные. Пример вывода из этого фрагмента ниже:

4. Новые файлы
Так же, как на главной странице 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. Это позволяет нам отображать эскиз элемента.
Пример вывода этого фрагмента ниже:

5. Популярное
Аналогично отображению недавно загруженных товаров на определенном рынке, мы также можем отображать популярные товары с данного рынка. Возможно, вы хотите отобразить список популярных файлов 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, чтобы сэкономить нам время при наборе текста при прохождении через вложенный массив возвращаемых данных. Всего за несколько строк кода мы можем отобразить миниатюру, имя и ссылку на элемент, как показано ниже:

6. Новые файлы от пользователя
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.’;
}
|
Необходимыми параметрами являются имя пользователя и требуемая торговая площадка. Остальная часть фрагмента соответствует той же логике, которую мы обсуждали. Ниже приведен пример вывода двух моих последних файлов.

7. Случайные новые файлы
Набор 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.’;
}
|
Там нет ничего, что вы еще не видели здесь. Мы используем этот набор для отображения некоторых миниатюр и заголовка. Не забудьте проверить все данные, которые возвращаются, хотя, вы можете быть заинтересованы в этом. Скриншот вывода ниже:

8. Поиск
Правильно, вы действительно можете использовать 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 и проверить все, что возможно с помощью набора поиска.

9. Пользователь
Набор данных пользователя возвращает небольшое количество информации о данном пользователе. Обратите внимание, что ключ 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.’;
}
|
Поскольку мы возвращаем информацию только от одного пользователя, нет необходимости выполнять какие-либо циклы — просто выводим данные.

10. Релизы
Вам, вероятно, никогда не понадобится использовать набор релизов , но я сказал, что мы охватим каждый публичный набор, и это хорошо. Набор выпусков возвращает информацию о выпуске и наборе для 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 +.