Sitecore 6 - 如何在代码隐藏中存储 html 格式的文本和引用

发布于 2024-10-01 13:25:02 字数 132 浏览 1 评论 0原文

我希望能够在 Sitecore 中存储可重用的 html 格式文本,并在代码隐藏中进行引用,以便包含在自定义用户控件中。这样做的最佳实践是什么?例如,如果用户选择选项 A,我将在控件中引用标准文本 A。任何有关如何实现这一点的示例都将受到赞赏。谢谢。

I would like to be able to store reusable html-formatted text in Sitecore and reference in codebehind for inclusion in a custom user control. What is the best practice for doing this? If a user selects option A, for example, I would reference standard text A in my control. Any examples for how to accomplish this are appreciated. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

没有心的人 2024-10-08 13:25:02

您有几个选项:

  1. 将文本存储在定义选项列表的同一模板的标准值中。这使得它可以在同一商品上使用,但对所有商品都是标准的。如果您担心该字段被编辑,请使用安全措施锁定该字段。我相信,这也可以通过 6.4 中新的“克隆”功能来完成。
  2. 在 Home 元素外部创建一个结构来存储此数据。根据所选的选项,在内容树中找到与所选项目相对应的项目,然后读取其中的文本。如果需要多站点支持,您需要相对于 /sitecore/Content 或相对于您的网站根目录找到此项目。

伪代码中的No.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"];

You have a couple options:

  1. Store the text in the Standard Values of the same template that defines your option list. That makes it available on the same item, but standard for all items. Use security to lock down the field if you are worried about it being edited. This could also be accomplished with the new "cloning" feature in 6.4, I believe.
  2. Create a structure outside of your Home element for storing this data. Based on the option selected, find an item in your content tree which corresponds to the selected item, and read the text off of it. You would need to find this item either relative to /sitecore/Content, or relative to your website root if multi-site support is a requirement.

No.2 in pseudo-code:

//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"];
烦人精 2024-10-08 13:25:02

我想我会做类似 techphoria414 的 2. 选项的事情:

即您像往常一样拥有正常的“页面”模板,但是您有一些字段(多列表、树列表字段),您将指向包含的其他项目的源代码放在其中不同的文本。

那么你基本上只需要从当前项目中获取项目(使用一些非常快速的脏代码/伪代码):

    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 或以上,它是一个富文本字段。

我希望这有帮助。

I think I would do something like techphoria414's 2. option:

ie you have your normal "page" templates as per usual, but then you have some fields (multilist, treelist fields), where you put the source pointing to your other items contain the different texts.

then you basically just have to get the items from the current item (with some very quick'n'dirty code/pseudocode):

    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");
        }
    } 

You ofc shouldn't just add them to a literal and you should you Sitecore built in Field renderes if using Sitecore 6 or above and it's a Rich text field.

I hope that helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文