Commit 33b4c613 authored by Alexis Piéplu's avatar Alexis Piéplu
Browse files

Add Snipets! :)

parents
# Velocty Snippets
Une liste de snippet utile pour velocity
## Documentations
### Variables utile
* [Variables disponible dans le thème][themeVariable]
* [Variables spécifique aux webcontent (template)][webContentReservedVariables]
* [Variables disponibles dans les templates][webContentVariables]
* [Velocity Objects][Velocity Objects]
### Documentaion liferay API
* [liferayApiDocs][liferayApiDocs]
### Notes utiles
### Introduction
Velocity est un langage qui utilise des objets Java.
Toutes les variables / objets sont des objets Java,
il est donc possible d'utiliser les methodes de ces dernière.
### $serviceLocator
Cette variable permet d'aller chercher des class de l'api de Liferay.
Cela est habituellement désactivé dans les projets, l'utiliser veux dire qu'il vaudrait mieux
faire cela avec un portlet, ou un "velcityHook".
### Les applications display template pour aggrégateur de contenu
Dans ce dernier les webcontent sont accéssibe par une liste de `AssetEntry`.
Cela permet d'accéder directement aux catégories ou tags, mais pas à ce que contiennent les webcontent.
Il faut récuprérer le `journalArticle` correspondant. (Recette plus bas)
---
## Champ personalisé
* Récupérer la valeur d'un champ personalisé d'une page, depuis les élément de navigation
```html
$nav_item.getLayout().getExpandoBridge().getAttribute('Nom du champ personalisé')
```
* Récupérer la valeur d'un champ personalisé de la page courante
```html
$theme_display.layout.expandoBridge.getAttribute('Nom du champ personalisé')
```
## Language
```html
#language("language.key")
```
### Accéder à un élément de type `TemplateNode` (structure / template)
```html
$element.data
<!-- ou -->
$element.getData()
```
## Accéder à un sous-élément `TemplateNode` (structure / template)
```html
$id_element.id_sous_element.data
```
## Accéder à des éléments/sous-élément `TemplateNode` (structure / template) répétable
```html
#foreach ($element in $elements.getSiblings())
<span>$element.getData()</span>
#foreach ( $sub_element in $element.sub_elements.getSiblings() )
<span>$sub_element.getData()</span>
#end
#end
```
## Récupérer et formater une date
```html
#set ( $date = "Thu, 24 Mar 2016 20:30:00 +0000" )
#set ( $dateObject = $dateTool.toDate("EEE, dd MMM yyyy hh:mm:ss Z", $date, $locale))
#set ( $date = $dateTool.format("MMMM yyyy", $dateObject, $locale))
```
## Récupérer les tags de l'article
```html
#set( $tagdataUtil = $serviceLocator.findService("com.liferay.portlet.asset.service.AssetTagLocalService") )
#set( $articlePrimKey = $journalLocalService.getArticle($getterUtil.getLong($request.theme-display.scope-group-id), $reserved-article-id.data).resourcePrimKey )
#set( $listTags = $tagdataUtil.getTags("com.liferay.portlet.journal.model.JournalArticle", $articlePrimKey) )
#foreach( $tag in $listTags )
<span>$tag.getName()</span>
#end
```
## Récupérer les catégories de l'article
```html
#set( $journalLocalService = $serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleLocalService") )
#set( $catLocalService = $serviceLocator.findService("com.liferay.portlet.asset.service.AssetCategoryLocalService") )
#set( $scopeId = $request.theme-display.scope-group-id )
#set( $articlePrimKey = $journalLocalService.getArticle($getterUtil.getLong($scopeId), $reserved-article-id.data).resourcePrimKey )
#set( $articleCatNames = $catLocalService.getCategoryNames("com.liferay.portlet.journal.model.JournalArticle", $getterUtil.getLong($articlePrimKey)) )
#foreach( $categorie in $articleCatNames )
<span>$categorie</span>
#end
```
## Récupérer l'objet "DFileEntry" d'un élément document et media
`$File` est l'élément de type "document_library"
```html
#set($DLFileEntryLocalService = $serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFileEntryLocalService"))
#set( $fileArray = $File.data.split("/")) <!-- $File.data : /documents/10182/0/ownCloud_User_Manual.pdf/0c909167 -->
#set( $gid = $getterUtil.getLong($fileArray.get(2))) <!-- 10182 -->
#set( $fid = $getterUtil.getLong($fileArray.get(3))) <!-- 0 -->
#set( $fileTitle = $fileArray.get(4)) <!-- ownCloud_User_Manual.pdf -->
#set( $fileEntry = $DLFileEntryLocalService.getFileEntry($gid, $fid, $fileTitle))
<a href="$File.getData()">$fileTitle</a>
Version: <strong>$fileEntry.getLatestFileVersion(true).getVersion()</strong>
Last modified date : <strong>$fileEntry.getModifiedDate()</strong>
```
---
## Tri d'objets
```html
$sortTool.sort($entries, "publishDate:desc")
```
## Récupérer les éléments d'un Asset Entry (Asset publisher)
```html
#foreach ($entry in $entries)
#set( $renderer = $entry.getAssetRenderer() )
#set( $journalArticle = $renderer.getArticle() )
#set( $document = $saxReaderUtil.read($journalArticle.getContent()) )
#set( $rootElement = $document.getRootElement() )
<!-- On récupère l'élément, puis sa valeur, où 'Element' est l'identifiant dans la structure -->
#set( $xPath_element = $saxReaderUtil.createXPath("dynamic-element[@name='Element']/dynamic-content[@language-id='$locale']") )
#set( $article_element = $xPath_element.selectSingleNode($rootElement).getStringValue() )
<span> $article_element</span>
#end
```
---
## Afficher les valeurs d'une dynamic data list
Où la dynamic data list contient les éléments `lettre` et `mot`
```html
<!-- ## Get content variables -->
<!-- Get the reference of DDL Record Service via serviceLocator, which is automatically set in the context -->
#set ($ddlRecordService = $serviceLocator.findService('com.liferay.portlet.dynamicdatalists.service.DDLRecordLocalService'))
<!-- $reserved_record_set_id is also an object set in the context and it has the value of the list id configured for the portlet instance -->
#set ($recordSetId = $getterUtil.getInteger($reserved_record_set_id, 0))
<!-- call to the retrieve all records of the list -->
#set ($records = $ddlRecordService.getRecords($recordSetId))
#foreach( $record in $records )
<span>$record.getFieldValue("lettre", $locale)</span>
<span>$record.getFieldValue("mot", $locale)</span>
#end
```
## Afficher les labels d'un 'select' de la structure d'une dynamic data list
`lettre` est un élément de type 'select' dans la dynamic data list
```html
<!-- ## Get structure fields variables -->
<!-- Get the structure DDL service -->
#set ($DDMStructureLocalService = $serviceLocator.findService("com.liferay.portlet.dynamicdatamapping.service.DDMStructureLocalService"))
#set ($StructureSetId = $getterUtil.getInteger($reserved_ddm_structure_id, 0))
<!-- Get the structure -->
#set ($structs = $DDMStructureLocalService.getStructure($StructureSetId))
#foreach($optionName in $structs.getChildrenFieldNames("lettre"))
$structs.getFieldLabel($optionName, $locale))
#end
```
[themeVariable]: http://content.liferay.com/4.3/misc/theme-api-4.3.0.html
[webContentReservedVariables]:https://www.liferay.com/fr/community/wiki/-/wiki/Main/Velocity+Variables+Available+in+Web+Content
[webContentVariables]: https://dev.liferay.com/develop/tutorials/-/knowledge_base/6-1/available-variables
[Velocity Objects]: https://www.liferay.com/fr/community/wiki/-/wiki/Main/Access+Objects+from+Velocity
[liferayApiDocs]: https://docs.liferay.com/portal/6.1/javadocs/
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment