如何实现 TYPO3 9.5 RSS Feed for Pages

问题描述 投票:0回答:1

我进行了一些研究,但未能找到合适的解决方案。问题很简单,我们只需要为我们的自定义博客页面输出 RSS 提要。

我们有一个博客页面,子页面可以说是实际的博客记录 - 其他外围系统需要这种结构。现在我的问题是 TYPO3 中实际为每个子页面生成 RSS 提要的方法是什么?

非常感谢任何帮助。

typo3 rss typo3-9.x rss2
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
© www.soinside.com 2019 - 2024. All rights reserved.