2017-08-02 2 views
0

J'ai deux parties de texte éditables sur une page. Une partie Web a le texte par défaut défini comme la majorité du temps ce sera le même texte.Kentico 10 Contrôle de la visibilité de la partie Web sur la base d'une autre partie Web

Je souhaite définir la visibilité de ce composant WebPart en fonction du texte d'un autre composant WebPart pour le site en ligne.

J'ai essayé ceci:

{#!string.IsNullOrEmpty(WebPart.GetValue("AreaDescription", "Content")) && 
CMS.PortalEngine.ViewModeEnum.LiveSite == CMS.PortalEngine.PortalContext.ViewMode #} 

Mais il n'y a jamais visible il est donc pas ramasser avec succès le texte dans l'autre webpart. Donc je pense peut-être que j'ai besoin d'appeler GetContent() pour obtenir le texte fourni par l'utilisateur de la région modifiable. J'ai essayé d'écrire une méthode de transformation personnalisée, mais l'utilisation de PagePlaceholder ci-dessous est inconnue et je ne suis pas sûr de savoir comment y faire référence.

CMSAbstractWebPart webpart = PagePlaceholder.FindWebPart("webPartId"); 

Répondre

0

Prise en charge de Kentico - les macros ne me permettent pas de faire ce que je veux réaliser car le contenu d'autres parties Web n'est pas disponible dans CMSContext ou dans DocumentContent.

Comme je l'ai essayé d'éviter les pièces Web personnalisées, ils ont suggéré que je pourrais créer une mise en page alternative pour ma part web qui serait le même que celui par défaut, plus ajouter:

votre gestionnaire pour onLoad, ou mieux événement

Si elle était une partie Web personnalisée que je pourrais ajouter:

///find another web part - in this case WebPart1 
CMSAbstractWebPart webpart1 = PagePlaceholder.FindWebPart("WebPart1"); 

///store value/content of chosen property 
string wp1DefaultText = ValidationHelper.GetString(webpart1.GetValue("DefaultText"), ""); 

potentiellement sur prérendu pour vous assurer qu'il ne serait pas remplacé.

A ce stade, je vais juste supprimer le texte par défaut car j'ai l'impression de combattre le système et la valeur acquise ne vaut probablement pas l'effort/la personnalisation.

1

Essayez {% (ViewMode == "LiveSite") & & (CMSContext.CurrentDocument.WebPartID = ""!) #%}

+0

Merci! Malheureusement, le titre ne s'affiche pas. C'est comme si l'AreaDescription était interprétée comme vide. Même si j'ai saisi du texte dans la vue Page dans la zone de texte modifiable. – Jen

1

dans une macro pour obtenir le contenu du texte modifiable:

{%CurrentDocument.DocumentContent["webPartId"]#%} 

donc ce que vous cherchez est quelque chose comme ceci:

{%!string.IsNullOrEmpty(CurrentDocument.DocumentContent["AreaDescription"]) && (PortalContext.ViewMode == "LiveSite")#%} 
+0

Merci! Malheureusement, le titre ne s'affiche pas. C'est comme si l'AreaDescription était interprétée comme vide. Même si j'ai saisi du texte dans la vue Page dans la zone de texte modifiable. – Jen