Testo troncato che si visualizza tutto nella stessa pagina

5 contenuti / 0 new
Ultimo contenuto
Testo troncato che si visualizza tutto nella stessa pagina

Ho realizzato una vista prendendo campi di un certo tipo di contenuto. Mi hanno chiesto di troncare il testo se supera i 200 caratteri e fin qui tutto bene. Ho messo un link che permette di caricare la pagina del nodo, ma vorrebbero che il testo si potesse visualizzare all'interno della stessa pagina senza ricaricarla, con una cosa del tipo "clicca per leggere il resto" e cliccando si espanda il contenuto nascosto. Esiste un modo per farlo o mi conviene studiare qualche complicato javascript?

Devi usare jQuery, ma non è complicato. Devi creare un template tpl.php relativo alla view. In corrispondenza del campo, metti una funzione per troncare il testo e in coda, metti un link a cui assegni una classe.
Sempre nel template aggiungi un comando drupal_add_js per incorporare un file js in cui inserisci comandi jQuery per sostituire il testo troncato con il testo intero.
Il tutto dovrebbe richiederti una decina di righe di jQuery

Grazie mille, ci provo, poi ti faccio sapere.

@Pinolo.... questo sarebbe vero se devi solo scoprire del codice già presente, se invece devi andare a caricare in maniera asincrona l'informazione non è così immediato, devi creare un modulo apposito (o sfruttare in maniera poco ortodossa le funzionalità AJAX di views2.

Ciao
Marco
--
My blog
Working at @agavee

Ho risolto in questo modo: ho creato un template per la pagina della vista; ho creato un template per il campo body che si doveva troncare a 200 caratteri; in quest'ultimo ho messo un div intorno al contenuto con una classe alla quale jquery poteva fare riferimento; nel template della pagina ho messo uno script che al caricamento della pagina cercava tutti i div con quella classe e per ognuno troncava a 200 caratteri, il tutto in questo modo:

$(document).ready(function(){
i = 0;
$("div.parziale p").each(function(){
i++;
completo = $(this).text();
nuovo = $(this).text().substr(0,200);
$(this).prepend('<a name="ancor'+i+'"></a>');
$(this).html('<span class="visibile" id="vis'+i+'">'+nuovo+'...</span><span class="invisibile" id="invis'+i+'">'+completo+'</span>');
$(this).append('<br /><a href="#ancor'+i+'" onclick="continua('+i+')" id="continua'+i+'">Continua</a>');
});
})
function continua(elem){
$("#vis"+elem).attr("class","invisibile");
$("#invis"+elem).attr("class","visibile");
$("#continua"+elem).attr("class","invisibile");
}

Spero che questo possa servire a quanlcun altro. Grazie.