在带有母版页的 Umbraco 网页上显示 XML 内容(用于站点地图)
Showing XML content on on an Umbraco webpage with Masterpages (for sitemap)
我是 运行 Umbraco 的多站点实例。一切顺利,但现在我需要创建站点地图。
我已经成功创建了显示完美 XML 格式站点地图的宏,但是....
我不知道如何以正确的方式在页面上显示 headers。现在看起来像这样:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
</head>
<body>
<form method="post" action="./sitemap" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="faEtomis/pJrnOEH1FjMt3tYgJgnPP8lddqb60IlljFoqaMzmdGrfFsw4WeF9tCiqAa6bpN0obMQKnBNa1OmWHYSPuVgJB8116lnS+3eY95EqMoOpeTPa8jbsUSJXzXx" />
</div>
<div>
<url>
<loc>https://www.example.com/</loc>;
<lastmod>2017-02-12T17:41:48+00:00</lastmod>
</url>
</div>
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="CA0B0334" />
</div>
</form>
</body>
</html>
显然,这不是格式正确的 XML 站点地图文件。
我的问题是 umbraco/default.master 必须有基础 html、head、body 标签才能让我的模板的 ContentPlaceHolder 工作。
我该怎么做才能完成这项工作?
您的 Sitemap.Master 模板(或您用来放置站点地图 xml 结构的任何模板)不必继承任何东西,但默认的 Umbraco MasterPage 不应包含任何 HTML 标记。例如,Umbraco 的库存标准安装具有以下 /Umbraco/MasterPages/Default.Master:
<%@ Master Language="C#" AutoEventWireup="True" CodeBehind="Default.master.cs" Inherits="Umbraco.Web.UI.Umbraco.Masterpages.Default" %>
<asp:ContentPlaceHolder ID="ContentPlaceHolderDefault" runat="server">
</asp:ContentPlaceHolder>
值得注意的是,如果您确实在使用 Umbraco 7(或 6),您可以使用 MVC 而不是 MasterPages 创建一个模板,它仍然可以工作。
要获得更详细的答案,请分享您当前的站点地图母版页模板和结构...
我是 运行 Umbraco 的多站点实例。一切顺利,但现在我需要创建站点地图。
我已经成功创建了显示完美 XML 格式站点地图的宏,但是....
我不知道如何以正确的方式在页面上显示 headers。现在看起来像这样:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
</head>
<body>
<form method="post" action="./sitemap" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="faEtomis/pJrnOEH1FjMt3tYgJgnPP8lddqb60IlljFoqaMzmdGrfFsw4WeF9tCiqAa6bpN0obMQKnBNa1OmWHYSPuVgJB8116lnS+3eY95EqMoOpeTPa8jbsUSJXzXx" />
</div>
<div>
<url>
<loc>https://www.example.com/</loc>;
<lastmod>2017-02-12T17:41:48+00:00</lastmod>
</url>
</div>
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="CA0B0334" />
</div>
</form>
</body>
</html>
显然,这不是格式正确的 XML 站点地图文件。
我的问题是 umbraco/default.master 必须有基础 html、head、body 标签才能让我的模板的 ContentPlaceHolder 工作。
我该怎么做才能完成这项工作?
您的 Sitemap.Master 模板(或您用来放置站点地图 xml 结构的任何模板)不必继承任何东西,但默认的 Umbraco MasterPage 不应包含任何 HTML 标记。例如,Umbraco 的库存标准安装具有以下 /Umbraco/MasterPages/Default.Master:
<%@ Master Language="C#" AutoEventWireup="True" CodeBehind="Default.master.cs" Inherits="Umbraco.Web.UI.Umbraco.Masterpages.Default" %>
<asp:ContentPlaceHolder ID="ContentPlaceHolderDefault" runat="server">
</asp:ContentPlaceHolder>
值得注意的是,如果您确实在使用 Umbraco 7(或 6),您可以使用 MVC 而不是 MasterPages 创建一个模板,它仍然可以工作。
要获得更详细的答案,请分享您当前的站点地图母版页模板和结构...