Welcome, Guest. Please login or register.
Did you miss your activation email?
May 26, 2012, 11:46:03 PM

Login with username, password and session length
Search:     Advanced search
Interested in joining the WebsiteBaker team?
For more Information read here or on our new website.
155556 Posts in 21715 Topics by 7737 Members
Latest Member: gx-world
* Home Help Search Login Register
Pages: [1]   Go Down
Print
Author Topic: News Modul mit validem RSS-Feed möglich?  (Read 705 times)
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« on: December 03, 2011, 06:28:50 PM »

Hallo,

hat sich jemand schon die rss.php vom News-Modul vorgenommen um einen Feed zu erzeugen der z.b. bei http://feedvalidator.org durchkommt und zusätzlich noch Datum anzeigt?

Für die 2.8.1 und 2.8.2 pre SP2 konnte ich mir das noch selbst zurechtbasteln.

Denkanstöße wären prima.

dbs
« Last Edit: December 04, 2011, 04:24:09 PM by dbs » Logged

einteik

Offline Offline

Posts: 37


« Reply #1 on: December 04, 2011, 12:13:43 AM »

Die GUID müsste lesbar sein bei aktuellem News-Modul, Zeile 90, rss.php lautet hier ja
Code:
<guid><?php echo WB_URL.PAGES_DIRECTORY.$item["link"].PAGE_EXTENSION?></guid>

Für das pubDate ändere Zeile 89 der rss.php von

Code:
<pubDate><?PHP echo date("D, d M Y", $item["published_when"]); ?></pubDate>

nach

Code:
<pubDate><?php echo date("D, d M o G:i:s T"$item["published_when"]); ?></pubDate>

Edit:
Wie ich gerade sehe, wird bei <pubDate> der PHP Code mit "<?PHP" eingeleitet, sonst wird wie üblich mit "<?php" eingeleitet. Bei case-sensitive OSes kann dies u.U. Problematisch werden. Klein ist empfohlen.
« Last Edit: December 04, 2011, 12:19:05 AM by einteik » Logged
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #2 on: December 04, 2011, 08:58:33 AM »

Durch deine Änderung wird im Firefox der Feed schon mal mit Datum und Uhrzeit mit angezeigt. Das hat also was gebracht.

Leider sagen die Feed-Validatoren (u.a. http://feed1.w3.org/) immer noch, dass es sich bei der Adresse (http://www.xyz.com/modules/news/rss.php?page_id=22) nicht um einen Feed sondern eine Webseite handelt.
Logged

einteik

Offline Offline

Posts: 37


« Reply #3 on: December 04, 2011, 12:09:58 PM »

Leider sagen die Feed-Validatoren (u.a. http://feed1.w3.org/) immer noch, dass es sich bei der Adresse (http://www.xyz.com/modules/news/rss.php?page_id=22) nicht um einen Feed sondern eine Webseite handelt.

Ja, das ist leider so.
Das Problem - nehme ich an, Begründung siehe unten - kann leider nicht mit einer rss.php verändert werden, sondern es muss eine dynamisch erzeugte rss.xml vorhanden sein.
Versuche vorerst das Problem damit zu umgehen, dass du den offiziellen Validator benutzt http://feed1.w3.org/ und dort den Quelltext des Feeds, der zwingend folgendes Format haben muss und mit nichts vorher - zum Beispiel <html> eingeleitet wird

Code:
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
..............
<item>
..............
</item>
</channel>
</rss>

Unter view-source:http://www.websitebaker2.org/modules/news/rss.php?page_id=159 sieht man dies relativ deutlich, im Vergleich hierzu die Validierung http://feed1.w3.org/check.cgi?url=www.websitebaker2.org%2Fmodules%2Fnews%2Frss.php%3Fpage_id%3D159

Gerade habe ich nicht die Zeit, mir die genaue Erstellung der News-RSS ansehen zu können. Ich vermute aber, dass irgendwo die ursprüngliche Newsseite zwischenfunkt. Wahrscheinlich ist es auf Dauer sinnvoller, den Wert des RSS in der rss.php zu erzeugen und diesen in eine rss.xml zu schreiben, die wie ein Cache dann als Feed benutzt wird.
Logged
einteik

Offline Offline

Posts: 37


« Reply #4 on: December 04, 2011, 02:26:30 PM »

So, es hat mir doch keine Ruhe gelassen.

Der RSS-Feed ist dann valide wenn ich Websitebaker 2.8.2 SP-unabhängig mit News-Modul 3.5.5 verwende.

Einzig die Zeile 47 der rss.php
Code:
<?php header("Content-type: text/xml; charset=$charset); ?>
ist unnötig und kann auskommentiert beziehungsweise gelöscht werden.

Da das PHP header() ein nicht immer genau definiertes Eigenleben führt, schadet es nicht, ganz darauf zu verzichten.
Logged
einteik

Offline Offline

Posts: 37


« Reply #5 on: December 04, 2011, 03:12:12 PM »

Nun, header() ist doch hilfreich hier.

Anbei eine modifizierte rss.php, die ohne Probleme überall validiert.

Changelog zu News v3.5.5
!
Von
Code:
header("Content-type: text/xml; charset=$charset" );

nach
Code:
header("Content-type: application/rss+xml; charset=$charset" );
!
Von
Code:
<rss version="2.0">

nach
Code:
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
!
Von
Code:

<managingEditor><?php echo SERVER_EMAIL?></managingEditor>
<webMaster><?php echo SERVER_EMAIL?></webMaster>

nach
Code:
<managingEditor><?php echo SERVER_EMAIL."("")";; ?></managingEditor>
<webMaster><?php echo SERVER_EMAIL."("")"?></webMaster>
---> Ich weiß nicht, wie die Konstante für Autoren lautet, daher frei.
+
Code:
<atom:link href="<?php echo WB_URL."/modules/news/rss.php?page_id=".PAGE_ID ?>" rel="self" type="application/rss+xml" />
!
Von
Code:
<pubDate><?PHP echo date("D, d M Y", $item["published_when"]); ?></pubDate>

nach
Code:
<pubDate><?php echo date("r"$item["published_when"]); ?></pubDate>

Anbei die PHP.
« Last Edit: December 04, 2011, 05:37:59 PM by einteik » Logged
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #6 on: December 04, 2011, 04:00:29 PM »

Hey Klasse, dass du dir die Zeit genommen und es valide hinbekommen hast.
Für die 2.8.2 SP2 geht es nun.

Besten Dank  smiley
Nur www.websitebaker-portable.com spielt noch nicht mit.
Logged

einteik

Offline Offline

Posts: 37


« Reply #7 on: December 04, 2011, 04:08:37 PM »


Nur www.websitebaker-portable.com spielt noch nicht mit.

Ist es denn die einzige mehrsprachige Seite wo du es versucht hast? Dann wäre eine Gemeinsamkeit vorhanden.
Logged
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #8 on: December 04, 2011, 04:10:03 PM »

yepp, ist die einzige.
Logged

einteik

Offline Offline

Posts: 37


« Reply #9 on: December 04, 2011, 05:31:51 PM »

Danke, ich kann den Fehler jetzt reproduzieren.

Wenn die Newsseite wo ich ein RSS-Feed möchte nicht der Standard-Sprache des CMS entspricht tritt der Fehler auf, dass Feedvalidatoren das RSS nicht durchgereicht bekommen.

Die jeweilige Newsseite auf derselben WB-Installation mit der Standard-Sprache wird validiert.


Änderung:
Fehler ist, wie sollte es auch anders sein, Zeile 61:
Code:
<language><?php echo strtolower(DEFAULT_LANGUAGE); ?></language>

Diese bitte nach
Code:
<language><?php echo strtolower(LANGUAGE); ?></language>

ändern.
 
Anbei die vorerst hoffentlich fehlerfreie rss.php - obiger Anhang gelöscht.

« Last Edit: December 04, 2011, 05:38:30 PM by einteik » Logged
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #10 on: December 04, 2011, 06:07:58 PM »

das bringt leider keine änderung, sicherheitshalber zig-mal probiert.
habe aber nur die eine seite zum testen, womöglich liegts an etwas anderem.
Logged

einteik

Offline Offline

Posts: 37


« Reply #11 on: December 04, 2011, 06:11:45 PM »

Du meinst bestimmt http://www.websitebaker-portable.com/CMS/en/announcements.php ?
Hier scheint eine Funktion vorhanden zu sein vom Newsmodul, die ich so nicht kenne.

Du verlinkst anscheinend von der jeweiligen Sprache mit einem DE, einem NL und einem EN Link auf die EN Seite.
Anscheinend kommt das Newsmodul damit durcheinander.
Ich sehe dies bei mir im Chrome-Browser - das Feed wird in DE und NL nicht angezeigt, im Quelltext ist es aber vorhanden.

Es wäre - sofern du den Aufwand machen willst - besser, für jede Sprache eine eigene News-Seite zu erstellen oder direkt auf die EN zu linken.
Logged
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #12 on: December 04, 2011, 08:23:29 PM »

die jeweilige sprache bzw. der menüpunkt holt sich per modul sectionpicker die englische section rüber.
werde mal testen ob es auch anders geht.

« Last Edit: December 04, 2011, 08:53:43 PM by dbs » Logged

dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #13 on: December 04, 2011, 08:55:03 PM »

also selbst mit menu-link statt sectionpicker geht es nicht.

ich müsste wohl noch erwähnen, dass die eingangsseite/introseite einen code zur ermittlung der browsersprache enthält und dann weiterleitet.
war das wichtig? *g*
deaktivieren der introseite brachte allerdings auch nichts.
Logged

einteik

Offline Offline

Posts: 37


« Reply #14 on: December 04, 2011, 09:31:54 PM »

Hmm...
Ich vermute dann eher, dass das Modul Multilanguage dazwischenfunkt. Da ich dieses Modul leider nirgends finde, kann ich mir dies auch nicht ansehen. Wenn es allerdings möglich ist bitte dies einmal deaktivieren.

Die rss.php des News-Moduls greift auch nirgendwo auf die Introseite zu. Ein solcher Switcher dürfte keine Auswirkungen haben, trotzdem ist es natürlich gut, dass du dies anmerkst.

Jedenfalls liegt irgendetwas in der Priorität höher als die eigentliche RSS.php, die nicht mehr tun kann als den Quelltext des Feeds darzustellen. Ich tippe hier eben auf das Modul, da es eventuell eine Mehrsprachigkeit überall erzwingen kann ohne eine application/xml+rss abzufangen.
Logged
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #15 on: December 04, 2011, 11:15:25 PM »

Die Struktur der Seite ist wie hier: http://www.websitebaker2.org/de/hilfe/designerhandbuch/mehrsprachige-webseiten.php?lang=DE
Die News-Seite ist ein Unterpunkt von EN.

Ich habe nun mal eine neue News-Seite erstellt im "Root" und siehe da der Validator mag die neue Page_ID.  smiley
Logged

jacobi22
Betatester
*
Offline Offline

Posts: 1376


WWW
« Reply #16 on: December 04, 2011, 11:26:19 PM »

Ich vermute dann eher, dass das Modul Multilanguage dazwischenfunkt. Da ich dieses Modul leider nirgends finde, kann ich mir dies auch nicht ansehen.

Schau mal hier, ganz am Ende des Threads
Logged

LG Uwe

Wer sagt, Reichtum ist alles, hat nie ein Kind lächeln gesehen.
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #17 on: December 05, 2011, 07:48:11 AM »

Da sollte ich wohl mal auf die letzte Version updaten, hab noch die 1.6.2.alpha.

Es ist zu beobachten, dass der Feed nur valide angezeigt wird, wenn Seitensprache der Newsseite auf deutsch steht. Bei englisch = invalid.
« Last Edit: December 05, 2011, 08:25:45 AM by dbs » Logged

einteik

Offline Offline

Posts: 37


« Reply #18 on: December 06, 2011, 10:49:52 PM »

Ja, leider kann ich letzteres auch nachvollziehen...

Auch das verbesserte RSS-Modul von tez http://www.websitebaker2.org/forum/index.php/topic,22935.0.html fängt dies nicht ab.
Ich werde mich schlau machen bis zum Wochenende, aber ich vermute die Probleme sitzen viel tiefer in Websitebaker, wohl im Frontend Framework.
Logged
einteik

Offline Offline

Posts: 37


« Reply #19 on: December 07, 2011, 09:21:31 PM »

Nun, den Übeltäter habe ich festgestellt.

Es ist das Wieder-Senden von PHP-Header und damit einer Weiterleitung in der class.frontend.php Zeile 139-146

Code:
<?php
if (
$this->page['language']!=LANGUAGE) {
   if(isset(
$_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '') { // check if there is an query-string
                
header('Location: '.$this->page_link($this->page['link']).'?'.$_SERVER['QUERY_STRING'].'&lang='.$this->page['language']);
   } else {
                
header('Location: '.$this->page_link($this->page['link']).'?lang='.$this->page['language']);
   }
exit();
}
?>

Dies ist mir aber eine zu heiße Nummer, eine solch elementare Funktion von Websitebaker anzupassen.
Wird sie deaktiviert passiert zwar nichts schlimmes, aber es gibt keine Mehrsprachigkeit mehr. Dann aber ist die rss in allen Sprachen valide. Ein Tod muss momentan hier gestorben werden.

Ein Programmierer der WB gut kennt kann bestimmt mehr sagen hierzu, ich sehe diesen Fehler zu beheben momentan als eine zu komplexe Lösung an für das Problem.
« Last Edit: December 07, 2011, 09:39:15 PM by einteik » Logged
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #20 on: December 07, 2011, 09:39:12 PM »

Nun dann schauen wir mal ob wir einen WB-Coder hier herlocken können bevor jemand/etwas sterben muss.
Mehrsprachige Webseiten sind ja keine Exoten.
Logged

Pages: [1]   Go Up
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!