Aí vai o código fonte de uma vitrine xml em javascript que roda as ofertas de x em x segundos.
A vantagem do javascript sobre o PHP é que o primeiro pode rodar em qualquer tipo de site em qualquer tipo de hospedagem, sem a necessidade de ter um servidor PHP como base. Isso significa que sites que estejam em serviços gratuitos hospedagem (como blogs, fotologs) poderiam usar esse script para rodar ofertas do MercadoLivre via XML.
A configuração é simples:
1) tags = new Array("") coloque aqui uma lista de palavras-chave, separadas por virgula e entre aspas. o script vai mostrar produtos relacionados com essas palavras.
2) promoUrlBase = "" e promoSiteId = "" se referem ao site do MercadoLivre que você deseja promocionar.
3) tool="" é o numero do seu tool-id de traqueamento.
Código fonte
<html> <head> <script> //************************************************************ // START CONFIGURATION //************************************************************ //Keywords to search var tags = new Array("mp3","mp4","sony","celular","notebook"); //MercadoLibre country site var promoUrlBase = "http://www.mercadolivre.com.br/"; //MercadoLibre site ID (MLA, MLB, MLM, MCO, MLC, MLV, MLU, MEC, MPE) var promoSiteId = "MLB"; var tool="0000000"; //************************************************************ // END CONFIGURATION //************************************************************
var isIE = false; var req; var tpl; var rowTpl; var currWordIdx = 0; var queryDelay = 4000; var itemsQty = 10; var titleCharsQty = 25; var swapQty = 10; var cols = 2; var rowTpl = "<td width=50% align=center valign=middle><a class=promoclass href='##LINK##' target=_blank><img src='##IMG##' width=60 height=60 border=0><br>##DESCR## <strong>##PRECIO##</strong></a></td>"; var primeraVuelta = true;
function getNameCountry (siteId) { var ml = ""; switch(siteId) { case "MLA": return ml + "Articulos en MercadoLibre Argentina"; break case "MLB": return "Ofertas no MercadoLivre Brasil!"; break case "MLU": return ml + "Articulos en MercadoLibre Uruguay"; break case "MPE": return ml + "Articulos en MercadoLibre Perú"; break case "MLM": return ml + "Articulos en MercadoLibre Mexico"; break case "MLC": return ml + "Articulos en MercadoLibre Chile"; break case "MCO": return ml + "Articulos en MercadoLibre Colombia"; break case "MLV": return ml + "Articulos en MercadoLibre Venezuela"; break case "MEC": return ml + "Articulos en MercadoLibre Ecuador"; break default: return ml + "Articulos en MercadoLibre Argentina"; } }
function getNameCountry2 (siteId) { var ml = ""; switch(siteId) { case "MLA": return ml + "Ver más..."; break case "MLB": return "Quer mais?"; break case "MLU": return ml + "Ver más..."; break case "MPE": return ml + "Ver más..."; break case "MLM": return ml + "Ver más..."; break case "MLC": return ml + "Ver más..."; break case "MLP": return ml + "Ver más..."; break case "MCO": return ml + "Ver más..."; break case "MLV": return ml + "Ver más..."; break case "MEC": return ml + "Ver más..."; break default: return ml + "Quer mais?"; } }
function getUrlSite (siteId) { switch(siteId) { case "MLA": return "http://www.mercadolibre.com.ar/"; break case "MLB": return "http://www.mercadolivre.com.br/"; break case "MLU": return "http://www.mercadolibre.com.uy/"; break case "MPE": return "http://www.mercadolibre.com.pe/"; break case "MLM": return "http://www.mercadolibre.com.mx/"; break case "MLC": return "http://www.mercadolibre.cl/"; break case "MCO": return "http://www.mercadolibre.com.co/"; break case "MLV": return "http://www.mercadolibre.com.ve/"; break case "MEC": return "http://www.mercadolibre.com.ec/"; break default: return "http://www.mercadolivre.com.br/"; } }
function getUrlSite2 (siteId) { switch(siteId) { case "MLA": return "http://pmstrk.mercadolibre.com.ar/jm/PmsTrk?tool=-1"; break case "MLB": return "http://pmstrk.mercadolivre.com.br/jm/PmsTrk?tool=-1"; break case "MLU": return "http://pmstrk.mercadolibre.com.uy/jm/PmsTrk?tool=-1"; break case "MPE": return "http://pmstrk.mercadolibre.com.pe/jm/PmsTrk?tool=-1"; break case "MLM": return "http://pmstrk.mercadolibre.com.mx/jm/PmsTrk?tool=-1"; break case "MLC": return "http://pmstrk.mercadolibre.cl/jm/PmsTrk?tool=-1"; break case "MCO": return "http://pmstrk.mercadolibre.com.co/jm/PmsTrk?tool=-1"; break case "MLV": return "http://pmstrk.mercadolibre.com.ve/jm/PmsTrk?tool=-1"; break case "MEC": return "http://pmstrk.mercadolibre.com.ec/jm/PmsTrk?tool=-1"; break default: return "http://pmstrk.mercadolibre.com.ar/jm/PmsTrk?tool=-1"; } }
function processResult() { var xml = reques.responseXML; var listing = xml.getElementsByTagName("listing");
if (listing.length == 0 || typeof listing.item(0) == 'undefined' || listing.item(0) == null) { return; }
var qty = listing.item(0).getAttribute("items_total"); var toShow = Math.min(qty,itemsQty); var items = xml.getElementsByTagName("item"); if (items.length <= 0) return; else toShow = Math.min(toShow, items.length); var rows = ""; var cells = new Array(toShow);
for (var i=0; i < toShow; i++ ) { tmp = rowTpl;
id = items.item(i).getAttribute("id"); title = document.createTextNode(getElementTextNS("", "title", items[i], 0)).data; title = title.substring(0,titleCharsQty); price = document.createTextNode(getElementTextNS("", "price", items[i], 0)).data; currency = document.createTextNode(getElementTextNS("", "currency", items[i], 0)).data; imageUrl = document.createTextNode(getElementTextNS("", "image_url", items[i], 0)).data; if ( imageUrl == "undefined" ) imageUrl = getUrlSite(promoSiteId)+"jm/img?s="+promoSiteId+"&f=artsinfoto.gif&v=P";
tmp = tmp.replace("##DESCR##", title); tmp = tmp.replace("##TITLE##", title); tmp = tmp.replace(/##LINK##/gi, getUrlSite2(promoSiteId) +tool+"&go=" + getUrlSite(promoSiteId) +"jm/item?site="+promoSiteId+"$$$"+"id="+id); tmp = tmp.replace("##IMG##", imageUrl); tmp = tmp.replace("##PRECIO##", currency+' '+price);
cells[i] = tmp;
} for (var i=0; i < swapQty; i++ ) { rnd1 = Math.round(Math.random() * 100000000) % cells.length; rnd2 = Math.round(Math.random() * 100000000) % cells.length; tmp = cells[rnd1]; cells[rnd1] = cells[rnd2]; cells[rnd2] = tmp; } for (var i=0; i < toShow; i++ ) { rows += cells[i]; if ((i+1)%cols==0) rows += "</tr><tr>"; }
if (toShow != 0) { document.getElementById("galTpl").innerHTML = tpl.replace("<!--##ROWS##-->", rows); document.getElementById("galTpl").style.visibility = ""; } }
//Retorna un XMlHttpRequest, handler es el nombre de la funcion q va a tratar los eventos, y isDebugEnabled indica si se muestran mensajes para debug. function GetXmlHttpRequest (handler, isDebugEnabled) { var req=false; //para MZ if(window.XMLHttpRequest) { try { req = new XMLHttpRequest(); } catch(e) { req = false; if (isDebugEnabled) alert (e); } // para IE } else if(window.ActiveXObject) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { req = false; if (isDebugEnabled) alert (e); } } }
if(req) { req.onreadystatechange = handler; if (isDebugEnabled) alert ("Request creado correctamente, el handler es: "+handler); }
return req; }
function getElementTextNS(prefix, local, parentElem, index) { var result = ""; if (prefix && isIE) { result = parentElem.getElementsByTagName(prefix + ":" + local)[index]; } else { result = parentElem.getElementsByTagName(local)[index]; }
if (result) { if (result.childNodes.length > 1) { return result.childNodes[1].nodeValue; } else { if (result.firstChild != null ){ return result.firstChild.nodeValue; } } } else { return "n/a"; } }
function actTicker(){
tpl = document.getElementById("galTpl").innerHTML; tpl = tpl.replace("##VER##", getNameCountry2 (promoSiteId)); tpl = tpl.replace("##SITE##", getNameCountry (promoSiteId)); tpl = tpl.replace("##URL_SITE_VISITOR##", getUrlSite2(promoSiteId) +tool+"&go=" + getUrlSite(promoSiteId));
searchPromos(); setInterval ("searchPromos()", queryDelay); }
function searchPromos(){ var url = getUrlSite(promoSiteId)+"jm/searchXml?as_word="+encodeURIComponent(tags[currWordIdx]); reques = GetXmlHttpRequest(processReqChange, false); reques.open("GET", url, true); reques.send("");
//window.status = "url="+url; if ( currWordIdx++ >= tags.length-1 ) currWordIdx = 0; }
function processReqChange() { if (reques.readyState == 4) { if (reques.status == 200) { processResult(); } else { //oops! } } } </script> <title>Untitled Document</title> <style type="text/css"> <!-- a { font-family: Arial, Helvetica, sans-serif; font-size: 10px; } .style1 { font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #000099; font-weight: bold; } --> </style> </head>
<body> <!-- Ticker (carga oculto) --> <div id=galTpl style="visibility:hidden"> <table width="251" border="0" cellpadding="0" cellspacing="0"> <tr> <td colspan="3" height="1" bgcolor="#CEC34A"></td> </tr> <tr> <td width="1" bgcolor="#CEC34A"> </td> <td width="249" height="25" align="center" bgcolor="#FEE600" class="tituloscajas style1">##SITE##</td> <td width="1" bgcolor="#CEC34A"> </td> </tr> <tr> <td colspan="3" height="1" bgcolor="#CEC34A"></td> </tr> <tr> <td bgcolor="#CEC34A"><img src="http://www.mercadolibre.com.ar/org-img/t.gif" width="1" height="1"></td> <td align="center" valign="top"><table width=100% border=0 cellspacing=3 cellpadding=0 align=center bgcolor="#FFFFFF"><tr><!--##ROWS##--> </tr> </table><br> <table width="220" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="20" align="right"><a href="http://guia.mercadolivre.com.br/script-xml-javascript-vitrine-rotativa-13510-VGP##URL_SITE_VISITOR##jm/search?as_categ_id=1648&as_pr_categ_id=" class="hplink2" target=_blank>##VER##</a></td> </tr> </table></td> <td bgcolor="#CEC34A"><img src="http://www.mercadolibre.com.ar/org-img/t.gif" width="1" height="1"></td> </tr> <tr> <td colspan="3" height="1" bgcolor="#CEC34A"></td> </tr> </table> <br> </div> <!-- Activa el ticker--> <script> actTicker(); </script> </body> </html> |