Das PodcastManager Addon unterstützt jetzt drei verschiedene Formate für die Episode-Beschreibungen im RSS-Feed:
Konvertiert HTML zu lesbarem Plain-Text. Links werden als "Text (URL)" dargestellt.
$rss = new PodcastRSS('text');
echo $rss->generate('rss2');Beispiel Ausgabe:
Willkommen zur neuen Episode!
In dieser Episode sprechen wir über:
- REDAXO CMS
- Podcast-Optimierung
- SEO Best Practices
Mehr Infos auf unserer Website (https://example.com)
Konvertiert HTML zu Markdown - sowohl menschen- als auch maschinenlesbar!
$rss = new PodcastRSS('markdown');
echo $rss->generate('rss2');Beispiel Ausgabe:
# Willkommen zur neuen Episode!
In dieser Episode sprechen wir über:
* REDAXO CMS
* Podcast-Optimierung
* SEO Best Practices
[Mehr Infos auf unserer Website](https://example.com)Vorteile von Markdown:
- ✅ Menschenlesbar im Rohformat
- ✅ Maschinenlesbar für Parser/Bots
- ✅ Kann einfach zu HTML konvertiert werden
- ✅ Behält Formatierung bei (Listen, Links, Überschriften)
- ✅ Perfekt für moderne Podcast-Apps
- ✅ GitHub/Gitlab/Markdown-Editoren kompatibel
Behält sauberes HTML (nur sichere Tags).
$rss = new PodcastRSS('html');
echo $rss->generate('rss2');Beispiel Ausgabe:
<h1>Willkommen zur neuen Episode!</h1>
<p>In dieser Episode sprechen wir über:</p>
<ul>
<li>REDAXO CMS</li>
<li>Podcast-Optimierung</li>
<li>SEO Best Practices</li>
</ul>
<p><a href="https://example.com">Mehr Infos auf unserer Website</a></p><?php
// RSS Feed Template mit Markdown-Support
// Content-Type setzen
rex_response::sendContentType('application/xml; charset=utf-8');
// Format auswählen
$format = rex_get('format', 'string', 'markdown');
// Validiere Format
$allowedFormats = ['text', 'markdown', 'html'];
if (!in_array($format, $allowedFormats)) {
$format = 'text';
}
// RSS generieren
$rss = new PodcastRSS($format);
echo $rss->generate('rss2');
exit;Aufruf:
https://example.com/podcast-feed→ Standard (text)https://example.com/podcast-feed?format=markdown→ Markdownhttps://example.com/podcast-feed?format=html→ HTML
<?php
if (rex::isBackend()) {
// Backend: Format-Auswahl anzeigen
echo '<div class="form-group">';
echo '<label>RSS Description Format:</label>';
echo '<select class="form-control" name="REX_INPUT_VALUE[5]">';
echo '<option value="text"' . ('REX_VALUE[5]' == 'text' ? ' selected' : '') . '>Text (Standard)</option>';
echo '<option value="markdown"' . ('REX_VALUE[5]' == 'markdown' ? ' selected' : '') . '>Markdown</option>';
echo '<option value="html"' . ('REX_VALUE[5]' == 'html' ? ' selected' : '') . '>HTML</option>';
echo '</select>';
echo '</div>';
} else {
// Frontend: RSS generieren
$format = 'REX_VALUE[5]' ?: 'text';
rex_response::sendContentType('application/xml; charset=utf-8');
$rss = new PodcastRSS($format);
echo $rss->generate('rss2');
exit;
}Mit xoutputfilter Addon werden Platzhalter ZUERST ersetzt, DANN in Markdown konvertiert:
Input (in REDAXO Backend):
<p>Hier ist ein tolles Buch:</p>
[[AMAZON_LINK produkt=B08XYZ|Buchtitel=Das beste Buch ever]]
<h2>Weitere Empfehlungen</h2>
<ul>
<li>Empfehlung 1</li>
<li>Empfehlung 2</li>
</ul>Output (Markdown im RSS Feed):
Hier ist ein tolles Buch:
[Das beste Buch ever](https://amazon.de/dp/B08XYZ?tag=dein-affiliate-id)
## Weitere Empfehlungen
* Empfehlung 1
* Empfehlung 2<?php
// Beispiel Episode
$episode = rex_sql::factory()->getArray(
'SELECT * FROM ' . rex::getTable('podcastmanager') . ' WHERE id = 1'
)[0];
// Text Format
$text = podcastmanager::urlFeedConvert($episode['description'], 'text');
echo $text;
// Markdown Format
$markdown = podcastmanager::urlFeedConvert($episode['description'], 'markdown');
echo $markdown;
// HTML Format
$html = podcastmanager::urlFeedConvert($episode['description'], 'html');
echo $html;Das Markdown-Format kann auch außerhalb des RSS-Feeds genutzt werden:
<?php
// In einem Blog-Addon
$podcastEpisode = /* ... episode data ... */;
$markdownDescription = podcastmanager::urlFeedConvert(
$podcastEpisode['description'],
'markdown'
);
// Markdown zu HTML konvertieren (falls benötigt)
// Nutze z.B. Parsedown oder Markdown Parser
$html = (new Parsedown())->text($markdownDescription);
echo $html;<?php
// api.php?episode=123&format=markdown
$episodeId = rex_get('episode', 'int', 0);
$format = rex_get('format', 'string', 'markdown');
if ($episodeId > 0) {
$episode = rex_sql::factory()->getArray(
'SELECT * FROM ' . rex::getTable('podcastmanager') . ' WHERE id = ' . $episodeId
);
if (!empty($episode)) {
$item = podcastmanager::prepare($episode[0]);
header('Content-Type: application/json; charset=utf-8');
echo json_encode([
'title' => $item['title'],
'number' => $item['number'],
'description' => podcastmanager::urlFeedConvert($item['description'], $format),
'format' => $format
], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
exit;
}
}- Bessere Lesbarkeit in Apps
- Funktioniert mit allen Markdown-Readern
- Copy-Paste freundlich
- Einfach zu parsen
- Kann zu HTML/PDF/etc. konvertiert werden
- Versionierbar (Git-friendly)
- Strukturierte Inhalte
- Bessere Indexierung
- Klare Hierarchie
Bestehende Feeds bleiben unverändert (Text-Format ist Standard).
Um auf Markdown umzustellen:
// Alt:
$rss = new PodcastRSS();
// Neu:
$rss = new PodcastRSS('markdown');Keine Breaking Changes! Backward-kompatibel.
| App | Text | Markdown | HTML |
|---|---|---|---|
| Apple Podcasts | ✅ | ✅ | |
| Spotify | ✅ | ✅ | |
| Overcast | ✅ | ✅ | ✅ |
| Pocket Casts | ✅ | ✅ | |
| Castro | ✅ | ✅ | ✅ |
✅ = Vollständig unterstützt
Empfehlung: Nutze Markdown für beste Kompatibilität und Lesbarkeit!