0

我研究了一下,但找不到合适的解决方案。问题很简单,我们只需要为我们的自定义博客页面输出一个 RSS 提要。我们有一个博客页面,子页面可以说是实际的博客记录——其他外围系统需要这种结构。现在我的问题是 TYPO3 中为每个子页面实际生成 RSS 提要的方法是什么?

任何帮助深表感谢

4

1 回答 1

2
plugin.tx_seo {
    view {
        templateRootPaths {
            20 = EXT:ds_site/Resources/Private/Templates/Sitemaps/
        }
    }
    config {
        xmlSitemap {
            sitemaps {
                rssFeedAllBlogPosts {
                    provider = TYPO3\CMS\Seo\XmlSitemap\RecordsXmlSitemapDataProvider
                    config {
                        table = pages
                        sortField = tstamp
                        lastModifiedField = tstamp
                        additionalWhere = AND (no_index = 0 OR no_follow = 0)
                        pid = 2
                        recursive = 3
                        template = RssFeed
                    }
                }
            }
        }
    }
}

version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Daniel Siepmann - Coding is Art</title>
        <description>List of blog posts at daniel-siepmann.de</description>
        <link>{f:uri.page(pageUid: 1, absolute: 1)}</link>
        <atom:link href="{f:uri.page(pageUid: 1. pageType: 1533906435, additionalParams: {sitemap: 'rssFeedAllBlogPosts'}, absolute: 1)}" rel="self" type="application/rss+xml" />
        <lastBuildDate>{f:format.date(date: 'now', format: 'D, d M Y H:i:s O')}</lastBuildDate>
        <ttl>1800</ttl>

        <f:for each="{items}" as="item">
            <f:if condition="{item.data.doktype} < 200">
                {f:render(section: 'Item', arguments: {
                    item: item.data
                })}
            </f:if>
        </f:for>
    </channel>
</rss>

<f:section name="Item">
    <item>
        <title>{item.title}</title>
        <description>{item.abstract}</description>
        <link>{f:uri.page(pageUid: item.uid, absolute: 1)}</link>
        <pubDate>{f:format.date(date: item.lastUpdated, format: 'D, d M Y H:i:s O')}</pubDate>
        <guid isPermaLink="true">{f:uri.page(pageUid: item.uid, absolute: 1)}</guid>
    </item>
</f:section>

您可以将此作为参考实现。这就是我用于我的网站的内容。当然你需要相应地调整它,例如pid可能不同,以及扩展键ds_site等。

还要注意,这个使用 EXT:seo,一个 TYPO3 的系统扩展,提供站点地图功能。

您可以链接到提要:<a href="{f:uri.page(pageUid: 1, pageType: 1533906435, additionalParams: {sitemap: 'rssFeedAllBlogPosts'})}">RSS Feed</a>

此外,您可能想调整 url 路由:

routeEnhancers:
  PageTypeSuffix:
    type: PageType
    default: .html
    map:
      .xml: 1533906435
      .html: 0
  Feed:
    type: Simple
    limitToPages:
      - 1
    routePath: '/feed/{sitemap_id}'
    requirements:
      sitemap_id: '[a-zA-Z].*'
    _arguments:
      sitemap: sitemap_id
于 2020-02-25T11:51:21.017 回答