2017-02-15 1 views
0

j'ai une situation où il y a un cas conditionnel où l'éditeur peut choisir la mise en page des articles de l'enfant.Kentico - Afficher les éléments de l'enfant par des transformations

enter image description here

Comme on peut le voir sur l'image ci-dessus, est de bulletins d'informations de type NewsContainer qui fournit l'option pour la mise en page des articles enfants de type NewItem. Si la mise en page est de type choisi, deux éléments par ligne, les éléments de l'enfant doivent être affichées verticalement horizontalement autrement. L'image ci-dessous montre la structure de transformation, où j'ai besoin d'accéder aux propriétés des éléments d'information enfants.

enter image description here

Toute aide serait appréciée. Merci.

PS: Version Kentico: 10

MISES À JOUR basé sur les commentaires Comme par le commentaire de Roman, j'ai essayé, mais encore rien n'apparaît dans la sortie:

enter image description here

enter image description here

enter image description here

L'application de transformations individuelles directement au champ Transformation du répéteur produit la sortie, mais ne fonctionne pas lorsque vous utilisez la macro.

Répondre

1

Je suis un peu confus par votre description. La transformation serait appliquée pour ces pages News1-4 droite? Vous devez donc accéder à la propriété layout de la page parent, pas à la page enfant, correct? Si oui, je vous recommande de passer au texte/XML type de transformation et utiliser cette macro:

{%Documents[Documents[NodeAliasPath].Parent.NodeAliasPath].GetValue("LayoutField")%} 

et juste FYI de votre capture d'écran la page de bulletins d'informations ne semble pas être un type de page conteneur -> il est plus probable contenu seul type de page qui ne peut pas lister les pages standard.

+0

Je vais essayer cela et revenir, et oui les types de pages sont comme vous l'avez dit. – MrClan

+0

Cela ne semble pas retourner de valeur pour moi. – MrClan

+0

La partie NodeAliasPath de votre configuration Columns (ou la propriété Columns est-elle vide)? Avez-vous la transformation Texte/XML? Je l'ai testé et ça marche très bien. – JanH

1

Vous pouvez mettre en œuvre deux transformations distinctes et d'utiliser leurs noms de code comme valeurs dans la liste déroulante Mise en page vers le bas. Vous devez maintenant placer une partie Web (repeater, uni viewer, etc.) sur la page 'container' et entrer la macro {%Layout%} dans le champ de transformation de partie Web.

+0

Je vais essayer ça et revenir. – MrClan

+0

Essayé, mais ne semble pas fonctionner. S'il vous plaît voir la question mise à jour avec des images. – MrClan

+0

Avez-vous une erreur? Qu'Est-ce que c'est? –

0

méthode de Roman est propre, mais si vous voulez simplement de le faire dans une transformation, c'est ce que vous feriez.

<%# IfCompare(Eval("Layout"), "horizontal", "The content if it's NOT horizontal", "the content if it IS horizontal") %> 

Le IfCompare est un ballon impair qu'il est « faux » est d'abord et « vrai » est le deuxième (haine que).

Vous pouvez mettre toute votre logique dans le « » alors, ou vous pouvez rendre la vie un peu plus facile si vous êtes d'accord avec un code en double et d'afficher tout à la fois et de masquer selon le cas

<div class="horizontalLayout <%# IfCompare(Eval("Layout"), "horizontal", "hidden", "") %>"> 
    Horizontal Here 
</div> 
<div class="verticalLayout <%# IfCompare(Eval("Layout"), "horizontal", "", "hidden") %>"> 
    Vertical Layout here 
</div> 

Voir

+0

oui c'est exactement quelque chose que j'ai essayé de faire, mais je ne sais pas comment accéder aux éléments enfants de la transformation dans le type NewsContainer. – MrClan

1

Une meilleure approche consisterait à renseigner conditionnellement le champ de transformation à l'aide de macros. Quelque chose comme ça.

{% CurrentDocument.ApplyTransformation(([YOURCONDITION] ? "[TRANSFORMATION_A]" : "[TRANFORMATION_B]")) %}