Je suis la conception d'un nouveau modèle pour mon éditeur d'actifs pour obtenir tout le contenu avec une classeLiferay 6.2 - (VM) Modèle de vélocité pour l'éditeur d'assets - comment obtenir une variable dans une autre variable?
com.liferay.portlet.journal.model.JournalArticle
à partir d'un site spécifique.
Dans ma structure de contenu web j'ai:
-Image
dans cette image:
-Il y remorque variable texte
pour le titre -one
pour la description -one
voici mon code de structure:
<root available-locales="en_US" default-locale="en_US">
<dynamic-element dataType="image" fieldNamespace="wcm" indexType="keyword" localizable="true" name="myImage" readOnly="false" repeatable="false" required="false" showLabel="true" type="wcm-image" width="">
<dynamic-element dataType="string" indexType="keyword" localizable="true" name="title" readOnly="false" repeatable="false" required="false" showLabel="true" type="text" width="small">
<meta-data locale="en_US">
<entry name="label">
<![CDATA[Title]]>
</entry>
<entry name="predefinedValue">
<![CDATA[]]>
</entry>
<entry name="tip">
<![CDATA[]]>
</entry>
</meta-data>
</dynamic-element>
<dynamic-element dataType="string" indexType="keyword" localizable="true" name="desc" readOnly="false" repeatable="false" required="false" showLabel="true" type="text" width="small">
<meta-data locale="en_US">
<entry name="label">
<![CDATA[Description]]>
</entry>
<entry name="predefinedValue">
<![CDATA[]]>
</entry>
<entry name="tip">
<![CDATA[]]>
</entry>
</meta-data>
</dynamic-element>
<meta-data locale="en_US">
<entry name="label">
<![CDATA[Image]]>
</entry>
<entry name="predefinedValue">
<![CDATA[]]>
</entry>
<entry name="tip">
<![CDATA[]]>
</entry>
</meta-data>
</dynamic-element>
et voici comment il est apparaît: Screenshot of my structure
Maintenant, j'écrit ce code dans mon modèle d'actif à l'aide (VM) ou des macros Velocity
#if (!$entries.isEmpty())
#foreach ($entry in $entries)
#set($renderer = $entry.getAssetRenderer())
#set($className = $renderer.getClassName())
#if($className == "com.liferay.portlet.journal.model.JournalArticle")
#set($journalArticle = $renderer.getArticle())
#set($document = $saxReaderUtil.read($journalArticle.getContent()))
#set($rootElement = $document.getRootElement())
#foreach($dynamicElement in $rootElement.elements())
#if("myImage" == $dynamicElement.attributeValue("name"))
#set($myImage = $dynamicElement.element("dynamic-content").getText())
#end
<img src="$myImage" >
#end
#end
#end
extrémité
de ce code je peux atteindre mon image, mais mon problème est que je ne peux pas trouver un moyen d'obtenir les variables à l'intérieur de l'image, l'un avec name = "title" et un autre avec name = "desc"? Donc, j'ai besoin d'atteindre ces variables de texte de remorquage
peut-je voir votre code de modèle s'il vous plaît? –
Sur l'écran est l'effet final et le code du modèle est affiché ci-dessus :). Cela ressemble à ceci: '$ myImage' - ceci imprime toute la variable montrée ci-dessus. '$ myImage.title.getData()' - ceci affiche le titre imbriqué. '$ myImage.desc.getData()' - ceci affiche la description imbriquée. J'ai édité ma réponse –
d'accord, je vous comprends, mais je veux savoir où placer ce code dans mon modèle :) –