【问题标题】:How to render a template in Sitecore, if it does not have a content item如果模板没有内容项,如何在 Sitecore 中呈现模板
【发布时间】:2016-06-29 13:25:57
【问题描述】:

这似乎是一个非常简单的概念,但我无法解决。我要做的是向页面呈现/显示模板的标准值。
使用 Rocks 创建项目和模板。这是结构。

1.子布局 - footer.ascx

<div class="content">
    <h1>This is a title.</h1>
    <p>All the content goes here</p>
    <sc:placeholder runat="server" Key="footercontent" />   
</div>

2。子布局 - StickyNav.ascx

<a class="btn" href="#">
     <sc:Text Field="Sticky Nav Title" runat="server" />            
 </a>

3.模板 - 粘性导航

第一张图片是模板,第二张显示在 _Standard Values 中分配的默认值。
然后,在 Sitecore Explorer 中,
right clicked on (Sticky Nav - _Standard Values) &gt; Tasks &gt; Design Layout on Standard Values.

现在,/sitecore/content/ 下有一个内容项“索引”。它声明了以下布局:
当我右键单击Index &gt; Tools &gt; Browse &gt; Preview 时,索引页面确实打开并且页脚内容也显示出来了。

但是,我看不到设置为标准值的文本“Go To Top”(图 2)。它是空的。

我在这里错过了什么。

【问题讨论】:

  • 周围没有cmets!
  • 确保您的所有模板、效果图和内容项都已发布。您可以通过切换到网络数据库并在内容编辑器中查看项目来做到这一点。
  • 我只在master工作。我做的唯一发布是 Visual Studio 发布

标签: asp.net sitecore sitecore8


【解决方案1】:

可能有几个因素阻碍了正在显示的内容。对于前端,最好的办法是排除发布之类的事情——即确保模板、字段、标准值和内容项都正确发布。如果您处于预览状态,这可能不太相关,但在部署时值得注意

sc:Text 控件呈现时将运行renderField 管道。在交互时,它将通过 api 与 Sitecore 对话。

通过您的控件背后的代码检查事物(假设它是一个 ascx,由于 runat="server" 标记)。检查:

Field field = Sitecore.Context.Item.Fields["Sticky Nav Title"];

if (field != null)
{
    string value = field.Value;
}

并通过调试检查该字段实际上是否具有您需要的值。

在 cms 中,当您查看感兴趣的页面时,“Sticky Nav Title”字段是否似乎有一个值,并且是您感兴趣的值?

【讨论】:

  • 在cms中,没有值。我在 page_load 中执行此操作以检查 if (field != null){}else{Response.write("000");},输出为 000。这里是初学者,我不知道如何像 VS .net 项目那样进行调试。试过但失败了
  • 您是如何将__standard values 项目添加到您的模板中的?听起来要么没有正确链接,要么没有正确设置数据。要验证这一点,您需要检查几个地方(见 2 秒内的屏幕截图)
  • 1.如果您在模板上,请参阅功能区的构建器部分,单击“标准值”。这应该将您带到名为__Standard Values 的原始项目的子项。在此项目上,用您感兴趣的语言填写您想要的字段 (screencast.com/t/xwPkeCr0wHER)。然后在内容项上,检查所需字段旁边显示的 [标准值] 属性。
  • 可能值得阅读 gettingtoknowsitecore.blogspot.co.uk/2010/01/… 以帮助您掌握所需的模板继承
  • 您是否在将“Go To Top”的标准值放入标准值中之前创建了该项目?标准值仅在您创建项目时应用。在创建项目后应用标准值不会将值向下传播到项目。
【解决方案2】:

我意识到最初的想法本身就是一个错误。如果它的价值必须显示在页面上,则必须有一个项目。

所以,我使用模板Sticky Nav/sitecore/content/Sticky Nav Button 下创建了一个新项目。

并且在 StickyNav.ascx 中,将控件更新为:

&lt;sc:Text Field="Sticky Nav Title" runat="server" DataSource = "/sitecore/content/Sticky Nav Button"/&gt;

希望这对像我这样的初学者有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2011-01-16
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多