PHPackages                             vivomedia/neos-rss - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. vivomedia/neos-rss

ActiveNeos-package[Utility &amp; Helpers](/categories/utility)

vivomedia/neos-rss
==================

RSS feed document node type for Neos

1.1.0(1mo ago)09↓50%proprietary

Since Jun 12Pushed 1mo agoCompare

[ Source](https://github.com/VIVOMEDIA/neos-rss)[ Packagist](https://packagist.org/packages/vivomedia/neos-rss)[ RSS](/packages/vivomedia-neos-rss/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (2)Dependencies (2)Versions (4)Used By (0)

VIVOMEDIA.Rss
=============

[](#vivomediarss)

An RSS feed document node type for [Neos CMS](https://www.neos.io/).

Editors create an **RSS Feed** document anywhere in the content tree. The feed collects descendant documents below a configurable starting point, optionally filtered by node type, and renders them as RSS 2.0 XML. Each feed item can be rendered with a dedicated, project-specific renderer.

- **Frontend:** the feed is served as XML under the document's URL with an `.xml` suffix (e.g. `/news.xml`) and sends an `application/rss+xml` header. The regular (`.html`) URL redirects to the `.xml` URL with a `303`.
- **Backend:** the document renders an HTML preview listing the feed items and the public feed URL.

Requirements
------------

[](#requirements)

- Neos `>= 8.3`

Installation
------------

[](#installation)

```
composer require vivomedia/neos-rss
```

Usage
-----

[](#usage)

Create an **RSS Feed** document in the content tree and configure it in the inspector (group *RSS Feed*):

PropertyLabelDescription`rootNode`AusgangspunktStarting point of the feed. Descendants below this node are collected. *Required.*`nodeTypeFilter`Seitentypen FilterMulti-select of allowed node types. Empty = **all** document types. The available options are empty by default and extended per project (see below).`levels`Ebenen (0 = alle)How many levels below the starting point to include. `0` = unlimited.`limit`Max. Einträge (0 = alle)Maximum number of items. `0` = unlimited. Default `20`.`feedDescription`Feed-Beschreibung`` of the channel.The channel title is the document's title; items are sorted by last publication date (descending).

The feed is reachable at the document URL with an `.xml` suffix, e.g. `https://example.com/news.xml`. Opening the document's HTML URL redirects there.

Extending with custom node types
--------------------------------

[](#extending-with-custom-node-types)

Out of the box the filter select box is empty, and every node type is rendered with the default item renderer (title, link, publication date). Projects typically do two things: offer specific node types in the filter, and provide a dedicated rendering for them.

### 1. Add node types to the filter select box

[](#1-add-node-types-to-the-filter-select-box)

Override `VIVOMEDIA.Rss:RssFeed` in your site package's `NodeTypes/` to populate the `nodeTypeFilter` options:

```
# NodeTypes/Override/RssFeed.Override.yaml
'VIVOMEDIA.Rss:RssFeed':
  properties:
    nodeTypeFilter:
      ui:
        inspector:
          editorOptions:
            values:
              'Acme.Site:NewsPage':
                label: 'News page'
                icon: 'fas fa-newspaper'
              'Acme.Site:BlogPost':
                label: 'Blog post'
                icon: 'fas fa-blog'
```

### 2. Provide a dedicated item renderer

[](#2-provide-a-dedicated-item-renderer)

For each node type the feed resolves a prototype named `.RssItem`. If that prototype exists (`Neos.Fusion:CanRender`), it is used; otherwise it falls back to `VIVOMEDIA.Rss:DefaultRssItem`.

Define one in your project and compose the supplied presentational component, `VIVOMEDIA.Rss:Component.RssItem`, which renders a valid ``:

```
prototype(Acme.Site:NewsPage.RssItem) < prototype(Neos.Fusion:Component) {
    title = ${q(node).property('title')}
    description = ${q(node).property('teaser')}
    pubDate = ${q(node).property('date') || q(node).property('_lastPublicationDateTime')}
    guid = ${node.identifier}
    link = Neos.Neos:NodeUri {
        node = ${node}
        format = 'html'
        absolute = true
    }

    renderer = afx`

    `
}

```

#### `VIVOMEDIA.Rss:Component.RssItem` props

[](#vivomediarsscomponentrssitem-props)

PropDescription`title`Item title (wrapped in CDATA, tags stripped).`link`Absolute item URL.`description`Item description (CDATA). Omitted when empty.`pubDate``DateTime`; formatted as RFC-822. Omitted when empty.`guid`Unique identifier, rendered with `isPermaLink="false"`. Omitted when empty.`content`AFX children — extra elements placed inside the ``, e.g. `` or an `` element.To emit custom namespaced elements you usually also need to declare the XML namespace on the `` element. Override the channel renderer's `rssAttributes` in your project:

```
prototype(VIVOMEDIA.Rss:RssFeed.Xml) {
    body.rssAttributes.'xmlns:content' = 'https://purl.org/rss/1.0/modules/content/'
}

```

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance92

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~6 days

Total

2

Last Release

40d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a003ae6bea3612ba71a5d5e34478807946dc4a073893c6e7897648095bf4440d?d=identicon)[dlubitz](/maintainers/dlubitz)

---

Top Contributors

[![dlubitz](https://avatars.githubusercontent.com/u/13046100?v=4)](https://github.com/dlubitz "dlubitz (2 commits)")

### Embed Badge

![Health badge](/badges/vivomedia-neos-rss/health.svg)

```
[![Health](https://phpackages.com/badges/vivomedia-neos-rss/health.svg)](https://phpackages.com/packages/vivomedia-neos-rss)
```

###  Alternatives

[neos/seo

SEO configuration and tools for Neos

131.0M32](/packages/neos-seo)[sitegeist/kaleidoscope

Responsive-images for Neos

29370.3k12](/packages/sitegeist-kaleidoscope)[kaufmanndigital/gdpr-cookieconsent

A ready-to-run package, that integrates an advanced cookie consent banner into your Neos CMS site.

2542.4k](/packages/kaufmanndigital-gdpr-cookieconsent)[techdivision/ckstyles

Neos package which enables you adding your custom style classes for the CkEditor with a simple Yaml configuration

21179.5k](/packages/techdivision-ckstyles)[sitegeist/taxonomy

Manage vocabularies and taxonomies as separate node-hierarchy.

1595.1k1](/packages/sitegeist-taxonomy)[shel/neos-colorpicker

A plugin for Neos CMS which provides a colorpicker editor

14104.7k6](/packages/shel-neos-colorpicker)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
