I många av SiteVisions standardmoduler finns möjligheten att använda "egen mall" för att förändra renderingen av modulens resultat. Att göra en enkel justering av den HTML som finns i mallen är ofta trivialt men om logik-förändringar behöver göras så krävs kunskap om Velocity och SiteVisions publika API. Den här föreläsningen ger en introduktion till det som behövs för att kunna göra lite mer avancerade förändringar av egna mallar.
1 of 31
Download to read offline
More Related Content
Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014
6. Egna mallar i moduler – 1. Velocity
$ - referens
● $<namn>
● ${<namn>}
6
”Velocity Context”
”myObject”
”myOtherObject”
7. Egna mallar i moduler – 1. Velocity
Access
7
$myObject.getName()
$myObject.Name
$myObject.name
”myObject”
$myObject.setName('Nisse')
$myObject.setName("Nisse")
$myObject.setName($myString)
String getName()
void setName(String aName)
...
8. Egna mallar i moduler – 1. Velocity
Output
Velocity-kod Output
<p>
Sätter namnet till Anna
$myObject.setName('Anna')
</p>
<p>Hej $myObject.name</p>
8
● Allt som är kvar efter evaluering
<p>
Sätter namnet till Anna
</p>
<p>Hej Anna</p>
12. Egna mallar i moduler – 1. Velocity
12
Operatorer/utvärdering
● ! == ”not”
● && == ”and”
● || == ”or”
● Icke-existerande/null är ”false”
#if ($user && (!$user.active || $user.obsolete))
...
#end
13. Egna mallar i moduler – 1. Velocity
Iteration - #foreach in #end
13
● Implicit #set
#foreach ($user in $userList)
…
$user.age
#end
14. Egna mallar i moduler – 2. API
2. SiteVision API
● JCR
● Datamodell
● Utilities
● Funktioner / modellhjälp
14
http://help.sitevision.se/api
http://help.sitevision.se/javadoc
15. Egna mallar i moduler – 2. API:JCR
API del 1 - JCR
● Java Content Repository
● JSR 283 (JSR 170)
● Generell standard
● Trädstruktur
● SiteVision implementerar
Level 1 (”Läs”)
15
16. Egna mallar i moduler – 2. API:JCR
Grundläggande koncept
16
Parent
Name Identifier
NodeType
Children
Node
PropertyType
Node
STRING
BOOLEAN
LONG
DOUBLE
DATE
...
WEAKREFERENCE
Node
Properties
Path
17. Egna mallar i moduler – 2. API:JCR
Jobba med JCR
● Träduppbyggnad?
● Nod-typer?
● Properties för resp. nod-typ?
● Typ för resp. property?
17
http://help.sitevision.se/nodetypes
18. Egna mallar i moduler – 2. API:JCR
18
Träd
sv:page (En sida)
sv:pageContent
sv:referenceLayout (Mittenspalt)
sv:portlet (En textmodul)
sv:layoutRepository
sv:layout ("Absolut innehåll")
sv:localImageRepository ("Bilder på sidan")
sv:image
sv:localFileRepository ("Filer på sidan")
sv:file
sv:pageCommentRepository ("Sidkommentarer")
sv:pageComment
sv:ratingRepository ("Betyg för sidan")
sv:rating
sv:metadataDefinitionRepository
sv:metadata...Definition
sv:page (En undersida)
sv:pageContent
19. Egna mallar i moduler – 2. API:JCR
Vanliga metoder
● Parent: → Node.getParent()
● Children: → Node.getNodes()
● Lookup: → Node.getNode(RelativePathString)
→ Session.getNodeByIdentifier(Identifier)
● Property: → Node.getProperty(Name).get<TYP>()
19
20. Egna mallar i moduler – 2. API:JCR
Potentiella svårigheter
● Hitta noder
● Iterera ”rätt” noder
● Hämta properties
● RepositoryException
20
21. Egna mallar i moduler – 2. API:Utilities
API del 2 - Utilities
● JCR-hjälp
→ Genvägar
→ Properties
→ ...
● Funktioner
→ Skapa sida
→ Lägg till medlem i grupp
→ ...
21
22. Egna mallar i moduler – 2. API:JCR/Utilities
22
javax.jcr.*
JCR
senselogic.*
Utilities
23. Egna mallar i moduler
3. Tillgängligt i den egna mallen
23
29. Egna mallar i moduler – 2. API:Utilities
API-tips: JCR-utilities
● PropertyUtil
→ läsa properties
● PortletContextUtil + ResourceLocatorUtil
→ hitta noder
● NodeIteratorUtil + NodeTreeUtil
→ iterera och filtrera noder
● NodeComparatorUtil + NodeFilterUtil
→ sortera och filtrera noder/collections
29
30. Egna mallar i moduler – 2. API:Utilities
API-tips: Skript/Velocity-utilities
● ScriptUtil
→ underlätta
● InstanceTypeUtil
→ kontrollera typ
● InstanceCreatorUtil
→ skapa objekt
30
31. Egna mallar i moduler – 2. API:Utilities
API-tips: Renderings-utilities
● LinkRenderer
→ rendera länkar
● ImageRenderer + ImageLinkRenderer
→ rendera bilder
● OutputUtil
→ rendera annan modul
● BuddyIconRenderer
→ rendera profilbilds-miniatyren för en social identitet
31