Vapor Sitemap

一个用于 Vapor 的动态站点地图生成器。

设置

将该软件包添加到您的 Package.swift 文件中

let package = Package(
    // ...
    dependencies: [
        // 💧 A server-side Swift web framework.
        .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"),
        .package(url: "https://github.com/vapor-community/vapor-sitemap.git", from: "1.0.0"), // Add this line
    ],
    targets: [
        .target(
            name: "App",
            dependencies: [
                .product(name: "Vapor", package: "vapor"),
                .product(name: "VaporSitemap", package: "vapor-sitemap"), // Add this line
            ]
        ),
    ],
    // ...
)

用法

首先,我们需要创建一些函数来告知中间件该怎么做

isSitemap(_ req: Request) -> Bool

此函数的目的是告知中间件是否应该处理某个路径。一个基本的实现如下

func isSitemap(_ req: Request) -> Bool {
    return req.url.path == "/sitemap.xml"
}

通过此实现,您告知中间件仅处理 /sitemap.xml

在某些情况下,您可能想要生成多个站点地图。为此,只需在此函数中处理所有您想要的路径。

generateURLs(_ req: Request) -> [SitemapURL]

此函数的目的是给出所有要放入指定站点地图中的 URL。一个示例实现如下

func generateURLs(_ req: Request) -> [SitemapURL] {
    let prefix = "https://www.example.com/"
    let paths = ["home", "page1", "folder/page2"]
        
    return paths.map { path in
        prefix + path
    }
    .map(SitemapURL.init)
}

最后一步

在您的 configure.swift 文件中,添加相应的中间件

app.middleware.use(SitemapMiddleware(
    isSitemap: isSitemap,
    generateURLs: generateURLs
))

您已准备就绪!

关于

此软件包由 Nathan Fallet 开发和维护。