Para no tener que rascar más código, voy a pasar el implementado en mi blog, a ver si alguien se ahorra un poco de trabajo, además de unas cortas instrucciones sobre su implementación.
El principio es simple: quiero coger del blog una serie de post al azar y mostrarlos en la página principal, de forma secuencial y en forma de diapositivas. Para ello, utilizaré las librerías de JavaScript DOJO, que nos simplificarán la tarea a realizar.
Los pasos a realizar son los siguientes:
- IMPORTANTE: Salvar primero una copia de la plantilla completa, para poder recuperar la situación en caso de que algo no funcione correctamente.
- Acceder a Blogger, concretamente al panel de control del blog donde vamos a instalar la presentación,
- Seleccionar la opción Plantilla y dentro de ella el botón de Edición de HTML,
- Ignorar el mensaje de advertencia y seleccionar el botón de Continuar,
- Marcar la casilla Expandir plantillas de artilugios,
- Colocar el siguiente código antes del tag </head>:
- <script data-dojo-config="async: false" src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojo/dojo.js">
- <script type='text/javascript'>
- //<![CDATA[
- function removeHtmlTag_bySammy(strx,chop)
- {
- if(strx.indexOf('<')!=-1)
- {
- var s = strx.split('<');
- for(var i=0;i<s.length;i++)
- if(s[i].indexOf('>')!=-1) s[i] = s[i].substring(s[i].indexOf('>')+1,s[i].length);
- strx = s.join('');
- }
- chop = (chop < strx.length-1) ? chop : strx.length-2;
- while (strx.charAt(chop-1)!=' ' && strx.indexOf(' ',chop)!=-1) chop++;
- if (strx.length>chop) strx = strx.substring(0,chop-1);
- return strx+'...';
- }
- function montaSlideShow_bySammy(jsonObject)
- {
- var entries=jsonObject.feed.entry;
- var numRandom;
- var postTitle,postContent,postURL,postImatge;
- var htmlContent='';
- var objPanes=[];
- var bTrobats=false;
- // SlideShow Config
- var numeroPosts=5; // Numero de post a mostrar
- var lengthResum=150; // Longitud maxima del text
- var idDIV='slideShowContainer_bySammy'; // Identificador on s'ha de possar els slideShow
- var width=640; // Amplada en pixels
- var height=300; // Alcada en pixels
- var delayTime=10; // Temps d'espera en segons
- var leftArrow='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVnX6m6Zhf8xuTtYsSHazDVrxOXDraHRGCSqwe4OQkdfKljfYfujU5q6ZbAD__idANI60tKFrgBdtJqgntsMq-3xBi9XK1NvXCBL4FijjaaB7MdMDzrm8d2Rpco9wH97e4yrl1Pp8GOv8/s800/left_arrow.png'; // Fletxa esquerra
- var rightArrow='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSu1dw56ssoomVd7gFmaG-rhfSHKqh_JQNIWSgkHry0glnXOMJ7v9tp-Galsj4Y8QipxWLIPbtfTn-kBwzIwLC5GK8jkWnx2R3TUCi88X9gDEQaWHZ7Co8YsF-VG8TP699d0GLqjEoAWg/s800/right_arrow.png'; // Fletxa dereta
- for (var I=0; I < numeroPosts;I++)
- {
- numRandom=Math.floor((Math.random()*entries.length)+0);
- postTitle=entries[numRandom].title.$t;
- postURL='';
- for (var k = 0; k < entries[numRandom].link.length; k++)
- if (entries[numRandom].link[k].rel == 'alternate') { postURL = entries[numRandom].link[k].href; break;}
- postContent='';
- if ('content' in entries[numRandom]) postContent=entries[numRandom].content.$t;
- else if ('summary' in entries[numRandom]) postContent=entries[numRandom].summary.$t;
- postContent=removeHtmlTag_bySammy(postContent,lengthResum);
- // Buscar la primera imatge del post
- var s,a,b,c,d;
- postImatge='';
- s=entries[numRandom].content.$t;
- a = s.indexOf('<img'); // Buscar tag IMG
- b = s.indexOf('src="',a); // Buscar l'atribut SRC de la etiqueta trobada
- c = s.indexOf('"',b+5); // Buscar el final del atribut SRC
- d = s.substr(b+5,c-b-5); // Llegir valor del atribut SRC
- if((a!=-1) && (b!=-1) && (c!=-1) && (d!='')) postImatge = d;
- if (postImatge!='')
- {
- bTrobats=true;
- htmlContent='<a href="'+postURL+'"><img src="'+postImatge+'" style="border-style:none; width:'+width+'px; height:'+height+'px"/></a>';
- htmlContent+='<span style="filter: alpha(opacity=70); padding:5px 5px 5px 5px; background:rgba(0,0,0,0.6); *background:rgb(0,0,0); width:98%; color: #ffffff; position:absolute; left:0%; bottom:10px;"><h3 style="text-align:center">
- <a href="'+postURL+'" style="text-decoration:underline; color: #ffffff;">'+postTitle+'</h3>
- </a>'+postContent+'</span>';
- objPanes.push({className: 'pane', innerHTML: htmlContent});
- }
- entries.splice(numRandom,1); // Eliminar la entrada per no repetir
- if (entries.length==0) break; // Finalitzar si no hi ha mes entrades.
- }
- if (bTrobats)
- {
- require(["dojox/widget/Rotator", "dojox/widget/rotator/Fade", "dojo/domReady!"], function(dom){
- dojo.style(idDIV,{width: width+'px',height: height+'px', padding:'0px 5px 5px 5px', overflow: 'hidden'});
- var divSlideShow=dojo.create('div',{innerHTML:'', style:'width: '+width+'px; height:'+height+'px; background-color: #000000'},dojo.byId(idDIV));
- var leftSlide=dojo.create('div',{innerHTML:''},dojo.byId(idDIV));
- dojo.style(leftSlide,
- {filter: 'alpha(opacity=0)',
- opacity:0.0,
- cursor:'pointer',
- background: 'rgba(255,255,255,0.6) url('+leftArrow+') left center no-repeat',
- position: 'absolute',
- top:0,
- left:'5px',
- 'z-index':666,
- width:'35px',
- height:height+'px'
- });
- var rightSlide=dojo.create('div',{innerHTML:''},dojo.byId(idDIV));
- dojo.style(rightSlide,
- {filter: 'alpha(opacity=0)',
- opacity:0.0,
- cursor:'pointer',
- background: 'rgba(255,255,255,0.6) url('+rightArrow+') right center no-repeat',
- position: 'absolute',
- top:0,
- right:'5px',
- 'z-index':666,
- width:'35px',
- height:height+'px'
- });
- var objRotator=new dojox.widget.Rotator(
- {
- transition: 'dojox.widget.rotator.fade',
- panes: objPanes
- }, divSlideShow);
- console.log(objRotator);
- setInterval(function(){objRotator.next();},delayTime*1000);
- require(["dojo/_base/connect"], function(connect){
- connect.connect(rightSlide, 'onmouseover', function(){dojo.style(rightSlide,{opacity: 1.0,filter: 'alpha(opacity=50)'});});
- connect.connect(rightSlide, 'onmouseout', function(){dojo.style(rightSlide,{opacity: 0.0,filter: 'alpha(opacity=00)'});});
- connect.connect(rightSlide, 'onclick', function(){objRotator.next();});
- connect.connect(leftSlide, 'onmouseover', function(){dojo.style(leftSlide,{opacity: 1.0,filter: 'alpha(opacity=50)'});});
- connect.connect(leftSlide, 'onmouseout', function(){dojo.style(leftSlide,{opacity: 0.0,filter: 'alpha(opacity=0)'});});
- connect.connect(leftSlide, 'onclick', function(){objRotator.prev();});
- });
- });
- }
- }
- //]]>
- </script>
- Localizar en el código HTML del blog la zona donde colocar la presentación, debería de ser algo así como:
<b:includable id='main' var='top'>
<b:if cond='data:mobile == "false"'>
<!-- posts -->
<div class='blog-posts hfeed'> -
Colocar justo debajo el siguiente código:
<b:if cond='data:blog.pageType == "index"'>
<!-- Index page, inserir la sequencia de post. -->
<div id='slideShowContainer_bySammy'/>
<script src='http://sammy1965.blogspot.com/feeds/posts/default?start- index=1&alt=json-in-script&callback=montaSlideShow_bySammy' type='text/javascript'/>
</b:if> - Guardar la plantilla y finalizamos.
Si no se ha cometido ningún error, el funcionamiento debería de ser el esperado.
Quedo abierto a cualquier tipo de comentario, sugerencia o queja.
Publica un comentari a l'entrada
Recuerda que debes haber aceptado la política de privacidad de Google para comentar.
Para tu información, puedes consultar nuestra política de privacidad y aviso legal donde encontrarás toda la información al respecto.