Nem todo mundo sabe, mas a Envato tem um sistema de afiliados. Para recomendar algum tema, é necessário adicionar “?ref=”usuario” no fim de qualquer url (usuário é o seu login da Envato). Há um tempo atrás precisei criar  uma espécie de vitrine para os templates.

A Envato fornece uma API pelo site pelo qual é possível pegar informação dos templates. Aqui estou usando o feed “popular” que traz os temas mais populares do Theme Forest. O resultado foi o da imagem abaixo (da última semana):

localhost teste ads.php

A única coisa que você precisa modificar no código abaixo é o nome do usuário, a quantidade de itens a serem mostrados e as dimensões da imagem. O usuário serve para adicionar o código do afiliado no fim de cada URL.

<?php
$usuario = ""; //Seu usuário no ThemeForest
$qtd = 5; //Quantidade de imagens
$largura = 300; //Largura da imagem em pixels (Recomendado para evitar imagens muito grandes)
$altura = ""; // Altura da imagem em pixels (Não obrigatório)

$url = "http://marketplace.envato.com/api/edge/popular:themeforest.xml";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
$xml = new SimpleXMLElement($data);

$xmlNodes = $xml->{'popular'}->{'items-last-week'}->{'items-last-week'};
$i=0;
foreach($xmlNodes as $element){
echo '<a href="'.$element->{'url'}.'?ref='.$usuario.'"><img src="'.$element->{'live-preview-url'}.'" width="'.$largura.'" height="'.$altura.'" /></a>';
if (++$i == $qtd) break;
}
?>

O código mostra apenas uma imagem dentro de uma tag <a>. Você pode transformar em lista, slide ou no que vier à sua cabeça.

Atualização

Segue um outro código usando os outros mercados da Envato (GraphicRiver, Codecanyon, etc):

<?php
$usuario = ''; //Seu usuario na Envato
$fontes = array (
 0 => 'http://marketplace.envato.com/api/edge/popular:activeden.xml',
 1 => 'http://marketplace.envato.com/api/edge/popular:themeforest.xml',
 2 => 'http://marketplace.envato.com/api/edge/popular:graphicriver.xml',
 );
$url = $fontes[rand(0,2)];
$ch = curl_init();
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Return data rather then echo it
 curl_setopt($ch, CURLOPT_URL, $url); //Pass in our url
 $data = curl_exec($ch);
 curl_close($ch);
 $xml = new SimpleXMLElement($data); //Read the returned XML
 
 $xmlNodes = $xml->{'popular'}->{'items-last-week'}->{'items-last-week'}; 
 $html = '<ul style="list-style:none;">';
 $i=0; 
 foreach($xmlNodes as $element){
 echo '<li style="display:block;float:left; margin: 5px!important; list-style:none">';
 echo '<a href="'. $element->url .'?ref='.$usuario.'" ><img src="'. $element->thumbnail .'" alt="'. $element->item .'" title="'. $element->item .'" /></a></li>';
 if (++$i == 6) break;
 }
 $html .= '</ul>'; 
 echo $html;
?>

Post Comment