bloggers bloggers

Marco Napolitano
Messaggi: 68
Stelle: 0
Data: 15/11/17
Jader Jed Francia
Messaggi: 50
Stelle: 0
Data: 22/09/17
Ezio Lombardi
Messaggi: 9
Stelle: 0
Data: 23/06/17
Chiara Mambretti
Messaggi: 25
Stelle: 0
Data: 27/02/17
Serena Traversi
Messaggi: 3
Stelle: 0
Data: 21/07/16
Francesco Falanga
Messaggi: 8
Stelle: 0
Data: 14/06/16
Antonio Musarra
Messaggi: 2
Stelle: 0
Data: 18/11/13
Simone Celli Marchi
Messaggi: 6
Stelle: 0
Data: 09/07/13
marcello marangio
Messaggi: 4
Stelle: 0
Data: 05/07/13
Marco Mancini
Messaggi: 1
Stelle: 0
Data: 05/06/13
Indietro

URL parlanti anche quando linkiamo dal CMS

Spesso utilizzando le strutture per i web content di Liferay utilizziamo il tipo "Link a pagina": questo speciale tipo di dato permette al contributore, in fase di data entry, di selezionare da un comodo select box una pagina del sito, senza doverne mettere a mano il nome o altro.

All'interno del template di rendering del contenuto, poi, stampiamo il valore che il campo contiene ma il link che viene generato mostra solamente l'id della pagina e non il friendly url.


Lato Liferay, questo è poco male: il sistema, infatti, è in grado autonomamente di riconoscere l'indirizzo e di caricare la pagina relativa all'id, senza "turbare" la user experience del navigatore.

Peccato che i nostri amici della SEO poi vengono da noi e si lamentano che le pagine non hanno il nome parlante!

Quindi? Che fare??

Beh, un po' di velocity e tutto si sistema!

Ecco qui un bello snippet già pronto all'uso che, dato l'id della pagina letto dal campo contribuito in fase di data entry è in grado di generare il link usando la friendlyUrl:

#set ($service =

$serviceLocator.findService(

"com.liferay.portal.service.LayoutLocalService"))

#set ($myGroup = $getterUtil.getLong($groupId))

#set ($myLayoutId = $getterUtil.getLong($Linkpagina.getData()))

#set ($myLayout = $service.getLayout($myGroup, false, $myLayoutId))

<a href="$myLayout.getFriendlyURL()"><h2>$titolo.getData()</h2></a>

Che cosa ne pensate?
Facile, no? :)

Un'ultima raccomandazione, però: per poter utilizzare la variabile $serviceLocator dentro al vostro template velocity dovete prima valorizzare a stringa vuota questa property dentro al vostro portal-ext.properties:

journal.template.velocity.restricted.variables

Questo perché, di default, è valorizzata così:

journal.template.velocity.restricted.variables=serviceLocator

quindi la variabile viene inibita all'interno dei vostri template!

Alla prossima! :)

Precedente
Commenti
Nessun commento. Vuoi essere il primo.