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):
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; ?>