2013-12-20 4 views
4

У меня есть редактируемая текстовая веб-часть на шаблоне страницы. Он имеет собственный HTML-конверт до и после текста. Как я могу скрыть все это, включая конверт, если редактируемый текст пуст?Kentico 7 скрыть редактируемый текст, если он пуст

Мне нужно скрыть его, потому что конверт добавляет стилизованную разметку, которая не должна быть видимой, когда нет текста.

Можно ли сделать это с помощью фрагмента K # в видимой собственности? Я не понимаю, как работает запрос на работу документа.

Спасибо!

+1

[Сообщено здесь] (http://devnet.kentico.com/Forums/f65/t36410/Editable-Image-Visibility.aspx), что исправление было исправлено для устранения этой проблемы. Какую версию ты используешь? – JSuar

+0

@JSuar Я использую шаблон галереи Azure, который является v 7.0.11 –

+0

Основываясь на форуме, похоже, что у вас нет исправления. В любом случае вы можете обновить? – JSuar

ответ

0

Я не знаком с Kentico, но эти решения могут помочь. Они могут не решать вашу проблему конкретно, но могут помочь в решении. Метод

CMSEditableImage Расширение

Я придумал способ проверить это, я добавил метод расширения для класс CMSEditableImage, который принимает объект CurrentPage PageInfo проверить значение редактируемой области , не знаю, является ли это лучшим способом или нет, но вот код.

public static bool IsPopulated(this CMSEditableImage editableImage, PageInfo currentPage) 
{ 
    bool isPopulated = false; 

    string value = currentPage.EditableItems.EditableRegions[editableImage.ID.ToLower()].ToString(); 

    if (!string.IsNullOrEmpty(value)) 
    { 
    value = value.ToUpper(); 
    isPopulated = (value == "<IMAGE><PROPERTY NAME=\"IMAGEPATH\"></PROPERTY></IMAGE>") ? false : true; 
    } 

    return isPopulated; 
} 

с помощью http://devnet.kentico.com/Forums/f19/fp5/t4454/Empty-CMSEditableImage.aspx

Метод JavaScript

контейнера сервлет необходим идентификатор, например:

<h2 id="webpart-header">Headline</h2> 

Тогда у меня есть небольшой яваскрипт функция, которая прилагается в внешнего JS файла:

/* Hide Webcontainer via javascript if empty*/ 
function hideLayer(element) { 
    elem = document.getElementById(element); 
    elem.style.display = "none"; 
} 

Теперь в конфигурации Wep части, без каких-либо поведения данных, то снимите флажок и вызовите функцию JS, введя следующий сценарий в не найденной записи текста: hideLayer (» WebPart-заголовок ");

С помощью заголовка веб-страницы указывается имя вашего контейнера. Вы могли бы также иметь более сложную структуру <div> здесь.

через http://devnet.kentico.com/Forums/f22/fp3/t4180/Webcontainer-and-hide-if-no-data.aspx

+0

OP искал решение относительно редактируемого текста, а не изображение. Да, он может получить от него идеи, но, честно говоря, ни одно из этих решений не очень хорошее. Тем более, что OP специально искал макро-решение K #, а не C# или JavaScript. –

+0

Понял. Просто хочу помочь. Голос вниз, если вы считаете, что это не поможет другим, которые могут столкнуться с этим вопросом. – JSuar

3

Попробуйте это как свойство "Visible":

{% (ViewMode != "LiveSite") || (CMSContext.CurrentDocument.editabletext != "") #%} 

Change "editabletext" к тому, что у вас есть для вашего веб-управления частью ID.

+0

@tyler эта опция отлично работает как решение для макросов! Убедитесь, что у вас нет текста по умолчанию, установленного в конфигурации веб-части. –

+0

Я также установил его в режиме предварительного просмотра '{% (ViewMode! =" LiveSite "&& ViewMode! =" Preview ") || (! string.IsNullOrWhiteSpace (CMSContext.CurrentDocument.editabletext)) #%} ' – jaypeagi

Смежные вопросы