Sitecore 6 - как хранить html-форматированный текст и ссылки в коде позади - PullRequest
0 голосов
/ 09 ноября 2010

Я хотел бы иметь возможность хранить повторно используемый текст в формате html в Sitecore и ссылку в codebehind для включения в пользовательский элемент управления. Какова лучшая практика для этого? Например, если пользователь выберет опцию A, я буду ссылаться на стандартный текст A в моем элементе управления. Любые примеры того, как этого добиться, приветствуются. Спасибо.

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

У вас есть пара опций:

  1. Сохраните текст в стандартных значениях того же шаблона, который определяет ваш список опций.Это делает его доступным для того же предмета, но стандартным для всех предметов.Используйте безопасность, чтобы заблокировать поле, если вы беспокоитесь о его редактировании.Полагаю, этого также можно добиться с помощью новой функции «клонирования» в 6.4.
  2. Создайте структуру вне элемента Home для хранения этих данных.В зависимости от выбранной опции найдите в дереве контента элемент, соответствующий выбранному элементу, и прочитайте его текст.Вам потребуется найти этот элемент либо относительно / sitecore / Content, либо относительно корня вашего сайта, если требуется поддержка нескольких сайтов.

№ 2 в псевдокоде:

//get the item where we have the text values
Item textBase = Sitecore.Context.Database.SelectSingleItem(textBasePath);
//find the child w/ the same name as the selected option
Item textItem = textBase.Axes.GetChild(selectedOptionValue);
string value = textItem["text"];
0 голосов
/ 05 января 2011

Я думаю, что я бы сделал что-то вроде 2. опции techphoria414:

т.е. у вас есть обычные шаблоны "страниц", как обычно, но затем у вас есть несколько полей (многолисты, трилисты), куда вы помещаетеисточник, указывающий на другие ваши элементы, содержит различные тексты.

тогда вам просто нужно получить элементы из текущего элемента (с некоторым очень быстрым и грязным кодом / псевдокодом):

    var CurrentItem = Sitecore.Context.Item;
    Sitecore.Data.Fields.MultilistField mlf1 = CurrentItem.Fields["myExternalTexts"];
    if(mlf1 != null)
    {
        foreach (Item itm in mlf1.GetItems())
        {
            lit += Sitecore.Web.UI.WebControls.FieldRenderer.Render(itm, "richtext");
        }
    } 

Вы, конечно, не должны просто добавлять ихк литералу, и вы должны, если вы используете Sitecore, встроенный в Field renderes, если используете Sitecore 6 или выше, и это поле Rich text.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...