gpt4 book ai didi

coldfusion - 如何将动态 sitemap.xml 添加到 CFWheels 应用程序?

转载 作者:行者123 更新时间:2023-12-04 05:59:44 26 4
gpt4 key购买 nike

如何配置 CFWheels 以在 http://mydomain.com/sitemap.xml 处显示以下 XML ?

<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">

<-- I'll add the <url> tags dynamically here later -->
</urlset>

我已经从 web.config 中删除了“sitemap.xml”文件。

在此之后,我不确定如何创建 controllerview .我应该在“views”文件夹中创建一个“sitemap.xml”文件夹,然后添加一个“index.cfm”文件,然后添加上面的XML吗?

我应该在“controllers”文件夹中创建一个“sitemap.xml.cfc”文件吗? Controller 文件应该包含什么?

它应该看起来像这样吗?
<cfcomponent extends="Controller" output="false">
<cfscript>
function init(){
// Let CFWheels know what type of output this controller can 'provide'
provides("xml");
}

function index(){

}
</cfscript>
</cfcomponent>

我需要在routes.cfm 中添加一个条目吗?

最佳答案

设置 Controller

您的 Controller index()方法应该是这样的。它存储在 controllers/Sitemap.cfc .

function init() {
// Grab data about URLs from model or build an array of structs to pass to the view
urls = model("page").findAll(); // This line is just an example

// Call `renderWith()` to instruct Wheels that this requires a special content-type
renderWith(urls);
}

设置 View

您在 views/sitemap/index.xml.cfm 的看法然后可以生成所需的 XML:
<cfoutput>

<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">

#includePartial(partial="url.xml", query=urls)#
</urlset>

</cfoutput>

然后你可以在 views/sitemap/_url.xml.cfm 实现一个部分表示查询或数组中的单个项目。如果您使用的不是查询,请告诉我,我可以修改上面的示例。
<cfoutput>

<url>
<loc>#arguments.uri#</loc>
<loc>#arguments.updatedAt#</loc>
</url>

</cfoutput>

请记住,当您使用这样的部分时,查询列或结构键会被放置到 arguments 中。范围,这就是我引用 arguments.uri 的原因和 arguments.updatedAt在我虚构的例子中。

通过 URL 访问

根据您服务器的 URL 重写功能,您可能需要尝试一些方法来让 URL 执行您想要的操作。

您也许可以在 config/routes.cfm 中做这样的事情(但我只在 Apache 上测试过):
<cfset addRoute(pattern="sitemap.[format]", controller="sitemap", action="index")>
<cfset addRoute(pattern="sitemap", controller="sitemap", action="index")>

然后你可以在 http://www.example.com/sitemap.xml 加载 URL

如果这不起作用,请尝试以下操作:
<cfset addRoute(pattern="sitemap.xml", controller="sitemap", action="index")>
<cfset addRoute(pattern="sitemap", controller="sitemap", action="index")>

同样,您可以在 http://www.example.com/sitemap.xml 处加载 URL。

最后,如果这不起作用,请从 config/routes.cfm 中删除多余的行并加载这个 URL(无论如何它肯定会一直工作):
`http://www.example.com/sitemap?format=xml`.

关于coldfusion - 如何将动态 sitemap.xml 添加到 CFWheels 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9071542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com