7 dicembre 2016

Blog Widget di WebSite X5 con effetto carousel slider

In un articolo precedente abbiamo utilizzato un effetto carousel slider per animare i commenti del guestbook inseriti in un'altra pagina.
Lo stesso effetto si può applicare all'oggetto opzionale Blog Widget e anche allo script da noi pubblicato sull'Unofficial forum ormai un paio di anni fa, utilizzato fin dal template Tamarillo per la versione 10 e costantemente aggiornato adeguandolo via via alle nuove versioni di WebSite X5.
Ecco la nostra demo in cui sono presenti le due alternative:

demo blog widget carousel slider
DEMO

Sia che scegliate la prima o la seconda soluzione, per prima cosa dovete scaricare il plugin OwlCarousel dal sito ufficiale oppure da questo file .zip, in cui abbiamo inserito solo i file necessari alla nostra implementazione; dovete quindi allegare al progetto i file owl.carousel.min.css, owl.theme.default.min.css e owl.carousel.js utilizzando la scheda Esperto di un Oggetto HTML inserito nella pagina e flaggando l'opzione Collega il file.

Blog Widget


In una pagina inseriamo l'oggetto Blog Widget del programma. In Mappa, Proprietà Pagina, Esperto, Prima della chiusura del tag HEAD inseriamo questo codice:
<script>
$(document).ready(function() {
  $(".post_container").addClass("owl-carousel owl-theme");
  x5engine.boot.push(function() {
    //owlCarousel e relative opzioni
    var owl = $(".owl-carousel");
    owl.owlCarousel({
      items: 1, 
      loop: true,
      margin: 10,
      autoplay: true,
      autoplayTimeout: 6000,
      autoplayHoverPause: true
    });
  });
});
</script>
Lo script si occupa di assegnare al div generato dall'oggetto Blog Widget le classi che servono per il funzionamento del plugin OwlCarousel e di richiamare il plugin stesso solo dopo che nella pagina sono stati caricati tutti i file JavaScript gestiti dal programma.
Le opzioni del plugin OwlCarousel sono disponibili sul sito dell'autore.

Script MAeSI


Ora ci occupiamo della seconda alternativa, fatta in casa. Inseriamo nella pagina un oggetto Codice HTML contenente questo codice:
<!-- ultimi articoli blog -->
<div id="newsBlog"></div>

Nella finestra Proprietà Pagina, Sezione Esperto, Prima della chiusura del tag HEAD, inseriamo questo codice:
<script>
/* =========================================================================================
   Author's custom code: http://quellidelcucuzzolo.blogspot.it - Please do not remove credit
   ========================================================================================= */

var nNews = 3; //numero degli articoli del blog visibili
$(document).ready(function() {
  var request = $.ajax({
    type: "GET",
    url: "blog/x5feed.php",
    dataType: "xml"
  });
  request.done(parseXML);
  request.fail(function() {
    $("#newsBlog").text("Errore nel caricamento degli articoli del blog. Questa funzionalità è attiva solo dopo la pubblicazione del sito su Internet.");
  });
  // START owl carousel
  request.always(function() {
    $("#newsBlog").addClass("owl-carousel owl-theme");
    var owl = $(".owl-carousel");
    owl.owlCarousel({
      items: 1,
      loop: true,
      margin: 10,
      autoplay: true,
      autoplayTimeout: 6000,
      autoplayHoverPause: true
    });
  });
  //END owl carousel
});

//lettura dati x5feed.php
function parseXML(xml) {
  $(xml).find("item").each(function(index) {
    var miadata = new Date($(this).find("pubDate").text());
    var day = miadata.getDate();
    var mese = miadata.getMonth() + 1;
    var year = miadata.getFullYear();
    var titolo = $.trim($(this).find("title").text());
    var link = ($(this).find("link").text());
    var articolo = $($(this).find("description").text());
    var immagine = articolo.find("img").eq(0).attr("src");
    var desc = articolo.text().substr(0, 250); //visualizza i primi 250 caratteri dell'articolo
    var autore = $(this).find("author").text();
    var tag = $(this).find("category[domain^='http']").text();
    var tagImg = immagine ? "<div class='imgBlog'><img src='" + immagine + "' /></div>" : "";
    // OUTPUT
    var link_markup = "<div>"+
      // immagine e titolo dell'articolo
      "<div class='descBlog'>" + tagImg + " <div class='titoloBlog'>" + titolo + "</div>" +
      // categoria
      "<div class='dataBlog'><span><i class='fa fa-tag'> </i>" + tag + "</span>" +
      // autore    
      "<span><i class='fa fa-user'> </i>" + autore + "</span>" +
      //data
      "<span><i class='fa fa-calendar'> </i>" + day + "/" + mese + "/" + year + "</span></div>" +
      // testo e link leggi tutto
      desc + "... <a class='imCssLink' href='" + link + "'>leggi tutto &raquo;</a></div>" +
      "<div class='divisorio'></div></div>";
    // inserimento output nel div contenuto nell'oggetto Codice HTML
    $(link_markup).appendTo("#newsBlog");
    if (index == (nNews - 1)) return false;
  });
}
</script>
Lo script utilizza i dati presenti nel file x5feed.php, file che il programma produce automaticamente e che lo script recupera attraverso una chiamata Ajax. Come detto all'inizio si possono trovare informazioni più dettagliate nel topic del forum Unofficial. L'assegnazione delle classi necessarie al funzionamento del plugin OwlCarousel e il richiamo alla funzione stessa vengono effettuati solo dopo che la chiamata Ajax è stata completata.
E' possibile personalizzare il numero di articoli che si vogliono visualizzare, modificando il valore della variabile nNews:
var nNews = 3; //numero degli articoli del blog visibili 
Anche la struttura dell'output, interamente commentato, può essere modificata a piacere. Facciamo notare che nel codice abbiamo inserito i tag propri per visualizzare le icone Font Awesome: per riprodurre fedelmente la nostra demo dobbiamo quindi anche scaricare dal sito ufficiale ed allegare al progetto tutti i file necessari.

Ovviamente dobbiamo scrivere anche le regole CSS che stabiliscono l'aspetto dell'output. Queste sono le regole utilizzate nella nostra demo, completamente personalizzabili, inserite nella scheda Esperto dell'oggetto Codice HTML:
div#newsBlog div.imgBlog {
    float: left;
    margin: 4px 20px 4px 0;
    width: 100px;
}
div#newsBlog div.titoloBlog {
    font-size: 12pt;
    font-weight: bold;
    margin-bottom: 5px;
}
div#newsBlog div.dataBlog {
    font-size: 12px;
    padding-top: 8px;
    margin-bottom: 10px;
}
div#newsBlog div.dataBlog span {
    margin-right: 10px;
}
div#newsBlog div.dataBlog i {
    font-size: 14px;
    margin-right: 4px;
}



21 novembre 2016

Layout a strisce orizzontali con WebSite X5 13: tips & tricks

Creare un sito con un layout a strisce orizzontali, con la possibilità di aggiungere anche un effetto parallasse alle immagini di sfondo full width: queste sono due delle novità presenti nell'ultima release del software di casa Incomedia, WebSite X5 13.
Oggi ci siamo divertiti ad esplorare le potenzialità di queste nuove funzioni mettendoci, come sempre, lo zampino smile

La struttura della pagina della versione 13 è diversa rispetto a quella della versione 12, quindi, per ottenere, ad esempio, la mappa di Google a tutto schermo, esempio fatto per la 12 in questo post,  non è più necessario intervenire con codice JavaScript spostando gli elementi al di fuori del div con id imPage, ma basta un semplice CSS che imposta al 100% la larghezza dei div contenuti nella riga.
In questa DEMO (risoluzione desktop 960px) abbiamo inserito a tutto schermo, oltre alla mappa di Google, anche un link impostato su un'immagine con effetto parallasse.


Oggetto Google Maps Full Width


Inseriamo l'Oggetto Google Maps in Creazione della Pagina.


In Proprietà Pagina Esperto Prima della chiusura del tag HEAD incolliamo questo CSS, sostituendo al numero 3, il numero della riga in cui abbiamo inserito l'Oggetto Google Maps:
<style>
#imPageRow_3 div {
    padding: 0;
    width: 100% !important;
}
/* spazio laterale sotto i 480px */
@media (max-width: 480px){
    #imPageRow_3 {
        width: 92% !important;
    }
}
</style>

Nella nostra demo abbiamo inserito un oggetto per ogni riga ma se abbiamo unito, per esempio, più righe per impostare lo stesso stile grafico, il numero da personalizzare si dovrà calcolare dalla finestra "Stile delle Righe". Nella situazione seguente, il numero della riga dell'Oggetto Google Maps sarà il 2:

Un calcolo analogo va fatto anche se inseriamo un oggetto che si estende in verticale su più righe.
Per layout più articolati, consigliamo l'uso degli "strumenti per sviluppatori" presenti ormai in ogni browser, per individuare con facilità il numero della riga da personalizzare.

Nel codice è presente anche una media query che lascia uno spazio a destra della mappa per facilitare lo scorrimento della pagina a risoluzioni uguali o inferiori a 480px.

Link immagine con effetto parallasse


Associare un link ad un'immagine utilizzata come sfondo in Stile delle righe, impostata a tutto schermo, è relativamente semplice: basta inserire in Creazione Pagina un Oggetto Immagine contenente un'immagine trasparente ed associare ad essa un collegamento. Ma in questo modo il link non sarà attivo per tutta la larghezza della finestra del browser, ma solo nella parte che corrisponde alla larghezza del contenuto della pagina. Per estendere il link a tutto schermo possiamo quindi usare un CSS analogo a quello visto prima, da inserire sempre in Proprietà Pagina Esperto Prima della chiusura del tag HEAD, sostituendo al numero 1, il numero della riga in cui abbiamo inserito l'Oggetto Immagine:

<style>
#imPageRow_1 div {
    padding: 0;
    width: 100% !important;
}
#imPageRow_1 img {
    max-width:none;
    height:300px;/* altezza dell'immagine trasparente */
}
</style>

E' importante personalizzare il valore di height che deve corrispondere all'altezza dell'immagine trasparente inserita nell'Oggetto Immagine.

Le possibilità non finiscono qui: nell'ultima riga della nostra demo abbiamo allargato a tutto schermo un Oggetto Codice HTML... e qui il limite è solo la fantasia.