Tutoriais

Atualizado em 06 out 2009 16h03

XML Shopping UOL - Personalizando com PHP e CSS

  • URL Curta:
XML Shopping UOL - Personalizando com PHP e CSS
Como vocês devem ter notado, passei a veicular o shopping uol no site, depois do buscapé virá uma bagunça com certeza está sendo a melhor opção. Como sempre vou compartilhar com vocês uma forma de melhorar a randomização dos anúncios, assim como você poderá exibir eles da forma como melhor lhe agradar via CSS. As vantagens do XML são imensas, hoje o XML tem um papel muito importante na web, a uol fez bem em implementar o XML no shopping. Vamos ao script.

Requisitos:
Conhecimentos em CSS e ID do site do shopping uol.
//----------------------------------------------------------------------------
// FUNÇÃO CURL PARA URL FILE DISABLE - SIMPLE XML LOAD
//----------------------------------------------------------------------------

function curlXML($url) {
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0);
$data = curl_exec($ch);
curl_close($ch);
$xml = new SimpleXMLElement($data);
return $xml;
}
// Verifico se é permido acessar url remota.
function carrega_xml ($url) {
if (ini_get('allow_url_fopen')){
$xml = simplexml_load_file($url);
} else {
$xml = curlXML($url);
}
return $xml;
}


Como sempre essa é uma função em CURL que está sempre fazendo coisas interessantes.
Essa função você pode integrar a uma classe já existe, adaptar, melhorar, enfim.
Agora vamos ao código do shopping uol.
// Categorias a serem exibidas
$categorias = array(
'hd',
'cartao-de-memoria',
'computador',
'cooler',
'drive',
'estabilizador',
'fonte-de-alimentacao',
'gabinete',
'gaveta-para-hd',
'hub-e-switch',
'impressora-e-multifuncional',
'memoria',
'monitor',
'amplificador',
'dvd-player',
'home-theater',
'micro-e-mini-system',
'mp3-player',
'tv'
);

// Pego uma categoria randomica a cada acesso
$aleatorio = rand(0, sizeof($categorias) - 1);
//Verifico se o visitante acessa o site com ou sem www
$site_id = '57724'; // id do site

$i = '0';
$quantidade = '3'; // Quantidade de anúncios a serem exibidos

$url = "http://xml.shopping.uol.com.br/". $categorias[$aleatorio] .".html?idtURL=". $site_id;
// Leio a url do xml
$xml = carrega_xml($url);

foreach ($xml->po->ofr AS $exibe){
$i++;
// Titulo do produto
$titulo = utf8_decode(htmlspecialchars($exibe->prd->n));
// Imagem do produto
$imagem = $exibe->prd->img->src->attributes();
// Substituindo & por & nos links que é o correto no xhtml
$url = str_replace("&", "&", $exibe->prd->lnk->attributes());
// Valor do produto total
$valor = $exibe->prc['vlr'];
// Valor parcelado
$valor_p = utf8_decode($exibe->prc->d);

echo "<p class="vitrine"><a class="descricao-v" href="".$url."" title="{$titulo}" onclick="window.open(this.href); return false;">{$titulo}</a><a href="".$url."" title="{$titulo}" onclick="window.open(this.href); return false;"><img src="". $imagem ."" alt="" /></a><a href="".$url."" title="{$titulo}" onclick="window.open(this.href); return false;"><span class="preco-v"><span class="azul negrito">R$ {$valor}</span><br /><span class="black">{$valor_p}</span><br /><span class="green negrito">Ir para loja</span></span></a></p>";
// se os anúncios forem iguais a quantidade pertmida para a execução
if ($i == $quantidade){
break;
}
}


O CSS que uso para personalizar a exibição é, procurem personalizar pra vocês:
.vitrine {
overflow: hidden;
}
.preco-v {
display: inline;
float: right;
margin-right: 4px;
margin-top: 20px;
}
.vitrine img {
display: inline;
float: left;
}
.descricao-v {
display: block;
clear: both;
}
.azul {
color: blue;
}
.green {
color: green;
}
.vitrine .black { font-size: 9px; }
.vitrine .azul,
.vitrine .green { font-size: 12px; }


Para colocar as categorias corretamente acesse:
http://xml.shopping.uol.com.br/todos.html
Quando abrir o xml procure as categorias, exemplo:
<fil id="542" ip="516" nf="0" raiz="516">
<n>Computador</n>
<lnk url="http://xml.shopping.uol.com.br/computador.html?"/>
</fil>

onde lnk url é o link pra categoria, você vai pegar: computador e colocar no array de categorias.
ou exemplo:
<fil id="322" ip="516" nf="0" raiz="516">
<n>Projetor Multimídia</n>
<lnk url="http://xml.shopping.uol.com.br/projetor-multimidia.html?"/>
</fil>


Coloque: projetor-multimidia no array

É isso, dúvidas e sugestões coerentes são bem-vindas.

© MNDTI - Tecnologia e Informação. Todos Direitos Reservados. Política de privacidade.