die Aufrufseite für den RSS-Feed ist ja:
SEITE/index.php/article/index/rss
Beim Speichern, durch Gründe die ich nicht verstehe zurzeit,
ersetzt er "<p> bzw. </p>" durch den HTML Code, sprich "<p> bzw </p>"
In der Datenbank ist es Normal gespeichert.
prntscr.com/nj5bfs <- Datenbank
Nur gibt er mir in der xml Datei das aus:
<?xml version="1.0" encoding="utf-8"?> <rss version="2.0"> <channel> <title>ilch - Content Management System</title> <description>Alle Neuigkeiten von ilch - Content Management System</description> <language>de</language> <link>http://localhost/</link> <lastBuildDate>Wed, 1 May 2019 17:47:12 Europe/Berlin</lastBuildDate> <item> <title>Willkommenß</title> <description><p>34567890üälkjhgfdseer76t8z9uipüäöß</p> <p>12321</p> <p>11111</p> </description> <author>Killa Rebell</author> <link>http://localhost/index.php/article/index/show/id/2</link> <pubDate>Wed, 1 May 2019 17:46:30 Europe/Berlin</pubDate> <guid>http://localhost/index.php/article/index/show/id/2</guid> </item> </channel> </rss>
Habe in der PHP Datei (rss.php)schon den Befehl html_entity_decode eingefügt, dadurch ändert er schonmal die Sonderzeichen zum Normalen Buchstaben.
Nur ist das Problem das er aus dem <p>-Tag einfach die HTML Code Bezeichnung macht.
Dadurch entsteht bei der XML Datei ein Parse fehler.
rss.php
<?php $userMapper = $this->get('userMapper'); $articles = $this->get('articles'); $date = new \Ilch\Date(); $adminAccess = null; if ($this->getUser()) { $adminAccess = $this->getUser()->isAdmin(); } $xml = new DOMDocument('1.0', 'utf-8'); $xml->formatOutput = true; $rss = $xml->createElement('rss'); $rss->setAttribute('version', '2.0'); $xml->appendChild($rss); $channel = $xml->createElement('channel'); $rss->appendChild($channel); $head = $xml->createElement('title', $this->get('siteTitle')); $channel->appendChild($head); $head = $xml->createElement('description', $this->getTrans('rssDesc', $this->get('siteTitle'))); $channel->appendChild($head); $head = $xml->createElement('language', substr($this->getTranslator()->getLocale(), 0, 2)); $channel->appendChild($head); $head = $xml->createElement('link', $this->getURL()); $channel->appendChild($head); $head = $xml->createElement('lastBuildDate', $date->format('D, j M Y H:i:s e', true)); $channel->appendChild($head); if ($articles) { foreach ($articles as $article) { if (!is_in_array($this->get('readAccess'), explode(',', $article->getReadAccess())) && $adminAccess == false) { continue; } $articleDate = new \Ilch\Date($article->getDateCreated()); $user = $userMapper->getUserById($article->getAuthorId()); $strippedContent = html_entity_decode(str_replace(" ", " ", $article->getContent())); $item = $xml->createElement('item'); $channel->appendChild($item); $data = $xml->createElement('title', $this->escape($article->getTitle())); $item->appendChild($data); if (strpos($strippedContent, '[PREVIEWSTOP]') !== false) { $contentParts = explode('[PREVIEWSTOP]', $strippedContent); $data = $xml->createElement('description', reset($contentParts)); $item->appendChild($data); } else { $data = $xml->createElement('description', $strippedContent); $item->appendChild($data); } if ($user) { $data = $xml->createElement('author', $this->escape($user->getName())); $item->appendChild($data); } $data = $xml->createElement('link', $this->getUrl(['action' => 'show', 'id' => $article->getId()])); $item->appendChild($data); $data = $xml->createElement('pubDate', $articleDate->format('D, j M Y H:i:s e', true)); $item->appendChild($data); $data = $xml->createElement('guid', $this->getUrl(['action' => 'show', 'id' => $article->getId()])); $item->appendChild($data); } } $xml->save('rss.xml'); echo $article->getContent();
Am Ende habe ich zur Fehlerbehebung mal echo anstatt die Weiterleitung eingefügt.
Die von mir geänderte Zeile ist 44.
Selbst das Neuaufsetzen etc von V2.1.21 hat keinerlei Besserung gebracht.
mfg Nico
verwendete ilch Version: 2.1.x