Umbraco 10站点Logo仅显示在首页,如何实现全站显示?
解决站点Logo仅在首页显示的问题
问题出在你当前的代码是从当前页面节点读取siteLogo字段,但该字段仅在首页节点配置,其他页面节点没有这个字段,导致非首页页面无法读取到Logo值,自然不会渲染。
解决方法是直接从首页(根节点)读取siteLogo字段,同时确保代码放在所有页面共用的布局文件中:
修改后的代码示例
@{ // 获取根节点(首页) var homePage = Model.Root(); var siteLogo = homePage.Value<IPublishedContent>("siteLogo"); if (siteLogo != null) { <img src="@siteLogo.Url()" class="navbar-brand logo"> } }
备选写法(适配Umbraco不同版本)
如果上述方法不生效,可以尝试通过根节点集合获取首页:
@{ var homePage = Umbraco.ContentAtRoot().FirstOrDefault(); if (homePage != null) { var siteLogo = homePage.Value<IPublishedContent>("siteLogo"); if (siteLogo != null) { <img src="@siteLogo.Url()" class="navbar-brand logo"> } } }
额外注意事项
- 确保这段代码放置在所有页面共用的布局文件(如
_Layout.cshtml)的导航栏区域,而非仅首页视图中,这样所有页面加载时都会执行这段代码。 - 确认首页节点确实配置了
siteLogo字段,且字段别名与代码中的"siteLogo"完全一致(Umbraco字段别名区分大小写)。
内容的提问来源于stack exchange,提问作者N Morrison
相关产品推荐
相关产品推荐

