App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
[PHP] RSS-Feed eines Newsscript umschreiben: RSS1.0 -> RSS2.0
- Ersteller Maxefix
- Erstellt am
Hallo,
ich hab vor kurzem das Newsscript PHPNews installiert. Das erstellt auch automatisch einen RSS-Feed. Leider ist der, im Gegensatz zum Rest des Skriptes, nicht ganz perfekt. Unter anderem fehlen so wichtige Dinge wie <pubDate>. Deshalb wollte ich das Skript umschreiben und wenn ich schon dabei bin auch gleich den neuen Standard berücksichtigen. Ich hab schonmal angefangen, aber leider funktionierts nicht. Aber das kann gut daran liegen das ich mich mit PHP alles andere als gut auskenne
Lange Rede kurzer Sinn: Kann mir bitte da jemand helfen?
Hier mal der Teil des Skriptes der für die RSS-Datei zuständig ist:
Und so hab ich ihn umgeschrieben:
Das komplette Skript könnt ihr hier runterladen.
Schonmal Danke für eure Hilfe und Tipps
MFG Max
EDIT: Problem behoben, ein String war nicht geschloßen. Jetzt kommt das nächste Problem: Das Datum samt Uhrzeit richtig formatiert da reinbekommen
ich hab vor kurzem das Newsscript PHPNews installiert. Das erstellt auch automatisch einen RSS-Feed. Leider ist der, im Gegensatz zum Rest des Skriptes, nicht ganz perfekt. Unter anderem fehlen so wichtige Dinge wie <pubDate>. Deshalb wollte ich das Skript umschreiben und wenn ich schon dabei bin auch gleich den neuen Standard berücksichtigen. Ich hab schonmal angefangen, aber leider funktionierts nicht. Aber das kann gut daran liegen das ich mich mit PHP alles andere als gut auskenne
Lange Rede kurzer Sinn: Kann mir bitte da jemand helfen?
Hier mal der Teil des Skriptes der für die RSS-Datei zuständig ist:
Code:
/********************
* RSS Feed Creation *
********************/
function createRSSFeed() {
//is_admin();
global $Settings, $language, $dbQueries, $db_prefix;
$filename = strtolower(str_replace(' ', '', $Settings['sitename'])) . '.rss';
if (file_exists($filename)) {
@unlink($filename);
}
$handler = fopen($filename, 'w+');
// Creates the header for the RSS file
$rssfile = "<?xml version=\"1.0\" encoding=\"".$language['CHARSET']."\"?>
<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"
xmlns=\"http://purl.org/rss/1.0/\">
<channel rdf:about=\"".$Settings['siteurl']."\">
<title>".$Settings['sitename']."</title>
<link>".$Settings['phpnewsurl'] . $filename ."</link>
<description>
This RSS feed was generated out of the newsdatabase of
".$Settings['sitename']." website.
</description>
<items>
<rdf:Seq>\n";
/* Get information about the News Post */
$SQL_query = mysql_query('SELECT n.id,n.posterid,n.postername,n.time,n.subject,n.titletext,n.maintext,p.username,p.email,p.avatar'
. ' FROM ' . $db_prefix . 'news AS n'
. ' LEFT JOIN ' . $db_prefix . 'posters AS p ON(n.posterid=p.id)'
. ' AND n.trusted = 1'
. ' ORDER by n.id DESC');
$dbQueries++;
while($news = mysql_fetch_assoc($SQL_query))
{
/* Set Variables */
$time = strftime($Settings['timeformat'], $news['time']);
$subject = $news['subject'];
$titletext = $news['titletext'];
$username = $news['username'];
if (!$username)
{
$username = $news['postername'];
}
/* Display link to show comments & news if enabled */
if ($news['maintext'] != '' && $Settings['showcominnews'] == 1 && $Settings['enablecomments'] == 1)
{
$maintext = $Settings['siteurl'] . '?action=fullnews&showcomments=1&id=' . $news['id'] . '';
}
else if ($news['maintext'] != '')
{
$maintext = $Settings['siteurl'] . '?action=fullnews&id=' . $news['id'] . '';
}
else
{
$maintext = $Settings['siteurl'];
}
// Strip tags and BBcode
$titletext = strip_tags($titletext);
$titletext = preg_replace('/\[(.+?)\](.+?)\[\/(.+?)\]/is', '\\2', $titletext);
// Creates table of contents
$rssfile .= " <rdf:li resource=\"".$maintext."\" />\n";
// Creates the <item> construct for every news item
$items .= " <item rdf:about=\"".$maintext."\">
<title>".str_replace('"', '"', $subject) ."</title>
<link>".$maintext."</link>
<description>
".$titletext."
</description>
</item>\n";
}
// Closes table of contents
$rssfile .= " </rdf:Seq>
</items>
</channel>\n";
// Adds the news items to the string
$rssfile .= $items;
// Creates the footer of the RSS file
$rssfile .= "</rdf:RDF>\n";
// Puts the string $rssfile in RSS file
if(!fputs($handler, $rssfile))
{
fatal_error($language['CONTENT_ERRORWRITETORSSFEED']);
}
fclose($handler);
// Only present this link, if parameter is createRSSFeed
if ($_GET['action'] == 'createRSSFeed') {
?>
<p>
<?php echo $language['CONTENT_RSSFEEDCREATED'],"\n";?><br />
<a href="index.php?action=advanced"><?php echo $language['CONTENT_BACK'];?></a>
</p>
<?php
}
checkForIE();
}
Code:
/********************
* RSS Feed Creation *
********************/
function createRSSFeed() {
//is_admin();
global $Settings, $language, $dbQueries, $db_prefix;
$filename = strtolower(str_replace(' ', '', $Settings['sitename'])) . '.rss';
if (file_exists($filename)) {
@unlink($filename);
}
$handler = fopen($filename, 'w+');
// Creates the header for the RSS file
$rssfile = "<?xml version=\"1.0\" encoding=\"".$language['CHARSET']."\"?>
<rss version=\"2.0\">
<channel>
<title>".$Settings['sitename']."</title>
<link>".$Settings['phpnewsurl'] . $filename ."</link>
<description>News über die Planet 3DNow!-Fotowettbewerbe</description>
<language>de-de</language>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<copyright>Maximilian Walter (aka Maxefix)</copyright>
<webMaster>info@karlheinz-w.de (Maxefix)</webMaster>
<pubDate>Wed, 01 Mar 2006 14:00:00 +0100</pubDate>
<items>";
/* Get information about the News Post */
$SQL_query = mysql_query('SELECT n.id,n.posterid,n.postername,n.time,n.subject,n.titletext,n.maintext,p.username,p.email,p.avatar'
. ' FROM ' . $db_prefix . 'news AS n'
. ' LEFT JOIN ' . $db_prefix . 'posters AS p ON(n.posterid=p.id)'
. ' AND n.trusted = 1'
. ' ORDER by n.id DESC');
$dbQueries++;
while($news = mysql_fetch_assoc($SQL_query))
{
/* Set Variables */
$time = strftime($Settings['timeformat'], $news['time']);
$subject = $news['subject'];
$titletext = $news['titletext'];
$username = $news['username'];
if (!$username)
{
$username = $news['postername'];
}
/* Display link to show comments & news if enabled */
if ($news['maintext'] != '' && $Settings['showcominnews'] == 1 && $Settings['enablecomments'] == 1)
{
$maintext = $Settings['siteurl'] . '?action=fullnews&showcomments=1&id=' . $news['id'] . '';
}
else if ($news['maintext'] != '')
{
$maintext = $Settings['siteurl'] . '?action=fullnews&id=' . $news['id'] . '';
}
else
{
$maintext = $Settings['siteurl'];
}
// Strip tags and BBcode
$titletext = strip_tags($titletext);
$titletext = preg_replace('/\[(.+?)\](.+?)\[\/(.+?)\]/is', '\\2', $titletext);
// Creates the <item> construct for every news item
$items .= " <item>
<title>".str_replace('"', '"', $subject) ."</title>
<description><![CDATA[".$titletext."]]></description>
<link>".$maintext."</link>
<author>info@karlheinz-w.de (Maxefix)</author>
<pubDate>Thu, 13 Jul 2006 16:47:00 +0100</pubDate>
</item>\n";
}
// Adds the news items to the string
$rssfile .= $items;
// Closes table of contents
$rssfile .= " </channel>\n";
// Creates the footer of the RSS file
$rssfile .= "</rss>\n";
// Puts the string $rssfile in RSS file
if(!fputs($handler, $rssfile))
{
fatal_error($language['CONTENT_ERRORWRITETORSSFEED']);
}
fclose($handler);
// Only present this link, if parameter is createRSSFeed
if ($_GET['action'] == 'createRSSFeed') {
?>
<p>
<?php echo $language['CONTENT_RSSFEEDCREATED'],"\n";?><br />
<a href="index.php?action=advanced"><?php echo $language['CONTENT_BACK'];?></a>
</p>
<?php
}
checkForIE();
}
Schonmal Danke für eure Hilfe und Tipps
MFG Max
EDIT: Problem behoben, ein String war nicht geschloßen. Jetzt kommt das nächste Problem: Das Datum samt Uhrzeit richtig formatiert da reinbekommen
Zuletzt bearbeitet:
Phil S.
Vice Admiral Special
- Mitglied seit
- 26.12.2001
- Beiträge
- 802
- Renomée
- 5
- Standort
- Mittelfranken
- Mein Laptop
- Schwarzes Macbook
- Prozessor
- AMD XP-M 2600+
- Mainboard
- ABIT KV7
- Speicher
- 2x512 MB Corsair Pro RAM
- Grafikprozessor
- ATI Radeon 9800 pro
- Display
- 1x 19" Belinea 106080 und 1x17" Iiyama HM704UTc, beide auf 1152x864
- HDD
- WD1600BB
- Optisches Laufwerk
- LG Brenner und AOpen DVD-Rom
- Soundkarte
- Creative Live 1024
- Gehäuse
- LianLi (das mit dem Aquarium Seitenteil)
- Betriebssystem
- Gentoo
- Webbrowser
- Firefox
- Verschiedenes
- ...und dann war da noch der quietische iMac G3. :-)
Nabend,
sorry, ich glaub ich muss da erstmal wiedersprechen, bevor ich mir das Script im genauen ansehe. In diesem Fall musst du ein paar Dinge beachten:
RSS 1.0 ist eigentlich kein Nachfolger von RSS < 1.0. RSS 1.0 basiert auf RDF und hat damit leider nicht viel mit dem "normalen" RSS zu tun. Der wirkliche Nachfolger vonn RSS 0.92 ist RSS 2. RSS 1.0 ist wie gesagt eine ganz andere Geschichte auf RDF Basis. Mit RDF kannst du alle möglichen XML Datenarten (Namespaces) in deinen Feed einbauen. Wenn du z.B. das pubdate Element vermisst, nehme einfach die Elemente des Dublin Cores Namespaces mit rein und verwende dann <dc:date>.
Allerdings ist es wohl besser, wenn du auf wirkliches RSS migrierst, wenn du mit Feeds noch nicht soviel Erfahrung hast, dass RSS deutlich einfacher zu verstehen ist, als RDF.
Wenn ich heute Abend etwas Zeit habe kann ich mir zu Hause das Script mal ansehen.
Ciao
Phil
sorry, ich glaub ich muss da erstmal wiedersprechen, bevor ich mir das Script im genauen ansehe. In diesem Fall musst du ein paar Dinge beachten:
RSS 1.0 ist eigentlich kein Nachfolger von RSS < 1.0. RSS 1.0 basiert auf RDF und hat damit leider nicht viel mit dem "normalen" RSS zu tun. Der wirkliche Nachfolger vonn RSS 0.92 ist RSS 2. RSS 1.0 ist wie gesagt eine ganz andere Geschichte auf RDF Basis. Mit RDF kannst du alle möglichen XML Datenarten (Namespaces) in deinen Feed einbauen. Wenn du z.B. das pubdate Element vermisst, nehme einfach die Elemente des Dublin Cores Namespaces mit rein und verwende dann <dc:date>.
Allerdings ist es wohl besser, wenn du auf wirkliches RSS migrierst, wenn du mit Feeds noch nicht soviel Erfahrung hast, dass RSS deutlich einfacher zu verstehen ist, als RDF.
Wenn ich heute Abend etwas Zeit habe kann ich mir zu Hause das Script mal ansehen.
Ciao
Phil
Also mit RSS 2.0 habe ich ja schon Erfahrungen, deshalb würde ich halt gern den Standard (wieder) einsetzen. Vorallem dürfte der Unterschied ja nicht allzu groß sein, die Datei ist halt bissl anders aufgebaut.
Aber schonmal Danke das du dir das heut Abend mal anschaust
MFG Max
Aber schonmal Danke das du dir das heut Abend mal anschaust
MFG Max
Phil S.
Vice Admiral Special
- Mitglied seit
- 26.12.2001
- Beiträge
- 802
- Renomée
- 5
- Standort
- Mittelfranken
- Mein Laptop
- Schwarzes Macbook
- Prozessor
- AMD XP-M 2600+
- Mainboard
- ABIT KV7
- Speicher
- 2x512 MB Corsair Pro RAM
- Grafikprozessor
- ATI Radeon 9800 pro
- Display
- 1x 19" Belinea 106080 und 1x17" Iiyama HM704UTc, beide auf 1152x864
- HDD
- WD1600BB
- Optisches Laufwerk
- LG Brenner und AOpen DVD-Rom
- Soundkarte
- Creative Live 1024
- Gehäuse
- LianLi (das mit dem Aquarium Seitenteil)
- Betriebssystem
- Gentoo
- Webbrowser
- Firefox
- Verschiedenes
- ...und dann war da noch der quietische iMac G3. :-)
Nabend,
Allerdings wird $time vorher so erzeugt:
Was ist $Settings['timeformat'] steht, weiß ich nicht. Ich verwende dazu die date Funktion, die ist einfacher, finde ich, weil es den passenden Paramater schon gibt:
Nachteil daran: Die Einstellung $Settings['timeformat'] verläuft ins Leere. Wenn du das brauchst, müsste man die Format Codes mal rausschreiben, damit ein valides Datum nach RFC-2822 rauskommt. Da müsste (wenn ich jetzt keinen Fehler gemacht habe) man der Variable $Settings['timeformat'] folgenden Wert geben:
Ciao
Phil
Okay, wenn du nur noch die Uhrzeit reinkriegen willst, ist ja schonmal gut. Du vergisst die Uhrzeit auszugeben. Ändere also mal die Ausgabe in folgende Zeile:EDIT: Problem behoben, ein String war nicht geschloßen. Jetzt kommt das nächste Problem: Das Datum samt Uhrzeit richtig formatiert da reinbekommen
PHP:
// Creates the <item> construct for every news item
$items .= " <item>
<title>".str_replace('"', '"', $subject) ."</title>
<description><![CDATA[".$titletext."]]></description>
<link>".$maintext."</link>
<author>info@karlheinz-w.de (Maxefix)</author>
<pubDate>".$time."</pubDate>
</item>\n";
PHP:
$time = strftime($Settings['timeformat'], $news['time']);
PHP:
$time=date("r",$news["time"]);
PHP:
$Settings['timeformat']="%a, %d %b %Y %H:%I:%S %z";
Ciao
Phil
Erstmal Danke für deine Hilfe
Bei dem Skript kann man in den Einstellungen das Format fürs Datum einstellen, also ob man nur das Datum oder auch die Uhrzeit haben will. Ich denke das wird in dieser Variablen ($Settings['timeformat']) gespeichert. Aber da ich ja für den RSS-Feed nicht nur das Datum sondern eben auch Uhrzeit etc. brauch muss ich das eh ändern, also so wie du das auch gemacht hast.
Ich komm aber erst übermorgen...wobei, u.U. sogar erst am Donnerstag dazu das auszuprobieren weil ich in der nächsten Zeit nicht mehr an mein Rechner komm. Ich berichte dann obs geklappt hat
MFG Max
Bei dem Skript kann man in den Einstellungen das Format fürs Datum einstellen, also ob man nur das Datum oder auch die Uhrzeit haben will. Ich denke das wird in dieser Variablen ($Settings['timeformat']) gespeichert. Aber da ich ja für den RSS-Feed nicht nur das Datum sondern eben auch Uhrzeit etc. brauch muss ich das eh ändern, also so wie du das auch gemacht hast.
Ich komm aber erst übermorgen...wobei, u.U. sogar erst am Donnerstag dazu das auszuprobieren weil ich in der nächsten Zeit nicht mehr an mein Rechner komm. Ich berichte dann obs geklappt hat
MFG Max
Phil S.
Vice Admiral Special
- Mitglied seit
- 26.12.2001
- Beiträge
- 802
- Renomée
- 5
- Standort
- Mittelfranken
- Mein Laptop
- Schwarzes Macbook
- Prozessor
- AMD XP-M 2600+
- Mainboard
- ABIT KV7
- Speicher
- 2x512 MB Corsair Pro RAM
- Grafikprozessor
- ATI Radeon 9800 pro
- Display
- 1x 19" Belinea 106080 und 1x17" Iiyama HM704UTc, beide auf 1152x864
- HDD
- WD1600BB
- Optisches Laufwerk
- LG Brenner und AOpen DVD-Rom
- Soundkarte
- Creative Live 1024
- Gehäuse
- LianLi (das mit dem Aquarium Seitenteil)
- Betriebssystem
- Gentoo
- Webbrowser
- Firefox
- Verschiedenes
- ...und dann war da noch der quietische iMac G3. :-)
Wie, ist heute schon Donnerstag?
Freut mich geholfen zu haben. Als Gegenleistung wären ein paar Besuche auf meinem Blog passend. Nein, nur Spaß.
Ciao
Phil
Freut mich geholfen zu haben. Als Gegenleistung wären ein paar Besuche auf meinem Blog passend. Nein, nur Spaß.
Ciao
Phil
Hab heut doch noch Zeit gefunden, die Helden von Sat1 ham gemeint das sie heut mal NavyCIS ausfallen lassen könnenWie, ist heute schon Donnerstag?
Mach ich doch gerneFreut mich geholfen zu haben. Als Gegenleistung wären ein paar Besuche auf meinem Blog passend. Nein, nur Spaß.
MFG Max
Ähnliche Themen
- Antworten
- 0
- Aufrufe
- 634
- Antworten
- 4
- Aufrufe
- 2K
- Antworten
- 0
- Aufrufe
- 1K