Page 1 of 3

Änderung der RSS Feeds ab CMSms 1.5

Posted: Wed Dec 10, 2008 2:58 pm
by Andiministrator
Mit CMSms 1.5 hat sich ja die RSS Funktionalität von CMSms geändert. Ab sofort läuft alles über das Modul CGFeedMaker. Andere Funktionen wurden entfernt, so funktionieren z.B. die RSS Feeds des News-Modul nicht mehr, wodurch auch die bisherigen RSS Feed URLs ungültig werden.

Vielleicht setzen ja noch andere außer mir RSS Feeds ein. Ich erkläre einfach mal, wie ich bei meinem Blog (http://andiministrator.de) vorgegangen bin. Dort habe ich das News Modul als Blog im Einsatz, bisher mit aktivierten RSS. Die RSS Feed URL hatte ich einmal im Header als Meta-Tag eingebunden und einmal neben jeder Haupt-Überschrift als RSS-Button.

Zuallererst musste ich die entsprechenden (aktuellen) Module "CGExtensions" und "CGFeedMaker" installieren/updaten. Gleich danach habe ich im Modul "CGFeedMaker" im Admin-Backend einen Feed hinzugefügt mit dem Namen "Blog". Das vorgefertigte Template habe ich zunächst so gelassen, da es als Beispiel für Feeds des Moduls "News" dient, was ja bei mir zum Einsatz kommt.

Im zweiten Schritt habe ich im Seiten-Template meinen alten RSS-Metatag ersetzt durch den Smarty-Platzhalter:

Code: Select all

{CGFeedMaker action='autodiscovery' feed='Blog'}
Dieser erzeugt den entsprechenden Meta-Tag dann automatisch.
Meine alte RSS-Feed-URL lautete http://andiministrator.de/News/rss, die neue lautet nun http://andiministrator.de/feeds/Blog. Entsprechend habe ich noch den Link meines RSS-Buttons geändert.

Im dritten und letzten Schritt habe ich schließlich in meine .htaccess eine Umleitung eingebaut, damit die bisherigen RSS-Feed-Abonnenten auch mit der alten URL noch meine RSS-Feeds bekommen. Die entsprechende Zeile lautet:

Code: Select all

# Rewrite Rule for Redirection of the old RSS Feed
RewriteRule ^News/rss$ feeds/Blog/ [NC,L]
Thats it - nun sollte alles wieder wie gewohnt funktionieren...

Re: Änderung der RSS Feeds ab CMSms 1.5

Posted: Wed Dec 10, 2008 9:05 pm
by nhaack
Ich glaube ich muss mich mal echt mehr mit CG Modulen auseinander setzen - da geht glaube ich 'ne verdammte Menge mit. Allerdings befindet sich in meiner Anwendungs-Philosophie fast jeglicher Content in Content-Seiten. Das geht sogar soweit, dass ich z.T. Konfigurationen und insb. AJAX Funktionen sowie dynamische JS Generierung über Content-Pages (z.T. mit extra Blöcken) realisiere. Da die Seiten i.d.R. auf recht performanten Servern liegen und selten größer als 100-200 Seiten sind konnte cih noch keine wirklichen Nachteile entdecken.

Jedenfalls setze ich RSS ebenfalls sehr intensiv ein, wobei ich diese immer durch den content_dump erstellen lasse (so wie auch z.B. Blogs). Kann ich mit CGFeedMaker eigentlich auch Feeds auf Basis von regulären Content-Strängen umsetzen? Hörte sich irgendwie so an.

Da ich fast 3 Jahre intensiv mit Day Comminque gearbeit habe und dort quasi nur Knoten-basiert gearbeitet wird, habe ich mir diese Art des Handlings angeeignet und finde sie auch für Kunden mit wenig Anwender-Know-How sehr praktisch da kein extra Modul-Handling erlernt werden muss.

Aber jetzt drifte ich so langsam ins Off-Topic ab ;).

Also danke für die Erläuterung. Ich denke für ein nächstes Projekt werde ich es mal ausprobieren. Die Einbindung las sich ja ganz easy.

Beste Grüße
Nils

Re: Änderung der RSS Feeds ab CMSms 1.5

Posted: Thu Dec 11, 2008 10:55 am
by Andiministrator
Ich bin leider auch kein Experte in den CG-Modulen. Ich möchte mir sie aber auch mal näher anschauen, genau wie Dein Content-Dump-Modul. Habe meinen Umzugsstreß fast überstanden und hoffe, dass ich Anfang Januar mal dazu komme.

Re: Änderung der RSS Feeds ab CMSms 1.5

Posted: Tue Dec 16, 2008 9:30 am
by cyberman
nhaack wrote: Kann ich mit CGFeedMaker eigentlich auch Feeds auf Basis von regulären Content-Strängen umsetzen?
Yep. Das ist der Grund für dieses (übrigens gesponsorte) Modul gewesen. Damit kannst du quasi alles zum Feed machen, Content, News, Cataloger ...

Re: Änderung der RSS Feeds ab CMSms 1.5

Posted: Fri Dec 19, 2008 8:23 am
by cyberman
Andiministrator wrote: Ab sofort läuft alles über das Modul CGFeedMaker.
Die Übersetzung ist auch fertig

http://s3.amazonaws.com/cmsms/downloads ... r1.0.2.zip

Re: Änderung der RSS Feeds ab CMSms 1.5

Posted: Sat Dec 20, 2008 8:40 am
by derAuge
Hi Andiministrator 


danke für deinen Hinweiß

Leider funktionieret es auf deiner Seite nicht. Bekomme immer
Dieser Feed kann nicht angezeigt werden.

  Dieser Feed enthält Fehler.
    Wechseln Sie zur vorherigen Seite.



Gruß

derAuge

Re: Änderung der RSS Feeds ab CMSms 1.5

Posted: Sat Dec 20, 2008 1:08 pm
by Andiministrator
Hm, bei mir funktioniert es ohne Probleme. Welchen Feed-Reader verwendest Du?

Re: Änderung der RSS Feeds ab CMSms 1.5

Posted: Sun Dec 21, 2008 1:26 am
by nhaack
Bei mir läuft der Feed auch problemlos mit Feedreader 3. Allerdings hat er es nicht durch den Validator (feedvalidator.org) geschafft. Sieht so aus als wenn bei den Einträgen aus März irgendwas mit dem Encoding nicht funktioniert hat. Die RSS Funktion vom IE mag sowas z.B. nicht und zeigt den Feed garnicht an, FF und Feedreader hatten damit kein Problem...

Quasi als wenn das "ä" aus "Mär" ANSI kodiert im UTF8 kodierten Feed steht... irgendwie sowas... (ich hasse Encoding-Gedöns) ???

Beste Grüße
Nils

Re: Änderung der RSS Feeds ab CMSms 1.5

Posted: Mon Dec 22, 2008 3:33 pm
by Andiministrator
Danke Euch für die Hinweise. Ich habe mir das jetzt einmal angeschaut, konnte aber erstmal nur eine Notlösung basteln.
Das Problem liegt bei der Datumsausgabe. Datums- und Zeitangaben werden bei mir standardmäßig in deutsch ausgegeben, so soll es ja auch sein. Im Fall CGFeedMaker macht das allerdings Probleme. Zum einen bemängelt der RSS Vaildator das deutsche Datumsformat für das Tag und zum anderen gibt es Probleme beim Encoding der Umlaute (Bsp. März).

Im RSS Template wird der Modifier "cms_date_format" verwendet:

Code: Select all

{$entry->postdate|cms_date_format:"%a, %d %b %Y %H:%M:%S %Z"}
Meine Notlösung bestand jetzt darin, mir einen zweiten Modifier namens "cms_date_format_en" anzulegen, der dann das englische Datums-Format ausgibt.

Es gelang mir bisher nicht, den Modifier "cms_date_format" zu überreden, für eine Ausgabe das Datum in einer anderen Sprache auszugeben. Habt Ihr eine Idee?

Re: Änderung der RSS Feeds ab CMSms 1.5

Posted: Mon Dec 22, 2008 3:36 pm
by Andiministrator
Für die, die sich für das Thema interessieren, hier noch 2 interessante Links.

Einmal hat hibr einen interessanten Thread im Forum zum Thema "CGFeedMaker: Feeds aus einer/mehreren Newskategorien erstellen" gestartet:
http://forum.cmsmadesimple.org/index.php/topic,28901.msg138647.html#msg138647

Zum anderen stellt Stephan Schmatz ein kostenloses EBook zum Thema RSS zur Verfügung:
http://www.schmatz.cc/weberfolg/index.php?option=com_content&view=article&id=296:mein-weihnachtsgeschenk-an-alle-kostenloses-e-book-zum-thema-rss&catid=35:rss&Itemid=42

Re: Änderung der RSS Feeds ab CMSms 1.5

Posted: Mon Dec 22, 2008 8:02 pm
by cyberman
Jedoch nur noch bis 31.12.2008, 24:00 kostenlos ...

Re: Änderung der RSS Feeds ab CMSms 1.5

Posted: Mon Dec 29, 2008 10:26 pm
by nforcer
Andiministrator wrote:
Im RSS Template wird der Modifier "cms_date_format" verwendet:

Code: Select all

{$entry->postdate|cms_date_format:"%a, %d %b %Y %H:%M:%S %Z"}
Meine Notlösung bestand jetzt darin, mir einen zweiten Modifier namens "cms_date_format_en" anzulegen, der dann das englische Datums-Format ausgibt.
Hi Andiministrator,

könntest du die Details deiner Notlösung posten? Also, wie ist der Code für dein eigenes Tag "cms_date_format_en"?

Vielen lieben Dank im Voraus,
André

Re: Änderung der RSS Feeds ab CMSms 1.5

Posted: Tue Dec 30, 2008 6:33 pm
by symmetrix_01
Uii, bei mir funktionierte nach dem Update erst mal nichts mehr in Punkto rss feed. Darauf hin habe ich cgfeedmaker auf Vers. 1.0.3 und cgextensions auf Vers. 1.14 aktualisiert. Hiernach habe ich mein Template wie nachfolgend angepasst:

Code: Select all

{* modified rss feed template *}
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" 
        xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

  <channel>
    <title>{$feed.title}</title>
    <atom:link href="{root_url}{$smarty.server.REQUEST_URI}" rel="self" type="application/rss+xml" />
    {if isset($feed.link) && !empty($feed.link)}<link>{$feed.link}</link>{/if}

    {if isset($feed.description) && !empty($feed.description)}<description>{$feed.description}</description>{/if}

    {if isset($feed.copyright) && !empty($feed.copyright)}<copyright>{$feed.copyright}</copyright>{/if}

    <generator>werauchimmer</generator>
    <language>de</language>
    <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
    {if isset($admin_email)}<dc:creator>{$admin_email} ({$admin_user->firstname} {$admin_user->lastname})</dc:creator>{/if}

    {news assign='pubs'}

    {foreach from=$items item='entry'}

   <item>
      <title>{$entry->title}</title>
      <link>{$entry->moreurl}</link>
      {if isset($admin_email)}<dc:creator>{$admin_email} ({$admin_user->firstname} {$admin_user->lastname})</dc:creator>{/if}

      <pubDate>{$entry->postdate|us_date_format:"%a, %d %b %Y %H:%M:%S"} +0200</pubDate>
      <guid isPermaLink="false">{$entry->moreurl}</guid>
      <description><![CDATA[<p>{if isset($entry->summary)}{$entry->summary|trim|strip_tags|summarize:40}{else}{$entry->content|strip_tags|summarize:40}{/if}</p>]]></description>
      <wfw:commentRss>{root_url}{$smarty.server.REQUEST_URI}</wfw:commentRss>      
    </item>

    {/foreach}

  </channel>
</rss>
Mit diesen Änderungen ist wieder alles im Lot und valide (Link zum feed). Auf Bilder habe ich hier verzichtet...
Vielleicht hilft es ja dem ein oder anderen.
Übrigens, die Zeile

Code: Select all

{news assign='pubs'}
ohne assign hat bei mir lustige Auswirkungen gehabt. Das Datumsproblem habe ich etwas eigenwillig erschlagen ;-)
Probiert es am Besten selbst aus.
Einen guten Rutsch euch allen!

Re: Änderung der RSS Feeds ab CMSms 1.5

Posted: Wed Dec 31, 2008 5:29 pm
by Andiministrator
Super symmetrix_01 - funktioniert gut, Dein Template. Habs bei mir gleich eingebaut und noch etwas angepasst:

Code: Select all

{* modified rss feed template *}
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" 
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

    <title>{$feed.title}</title>
    <atom:link href="{root_url}{$smarty.server.REQUEST_URI}" rel="self" type="application/rss+xml" />
    {if isset($feed.link) && !empty($feed.link)}<link>{$feed.link}</link>{/if}
    {if isset($feed.description) && !empty($feed.description)}<description>{$feed.description}</description>{/if}
    {if isset($feed.copyright) && !empty($feed.copyright)}<copyright>{$feed.copyright}</copyright>{/if}
    {if isset($generator)}<generator>{$generator}</generator>{/if}
    <language>de</language>
    <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
    {if isset($admin_email)}<dc:creator>{$admin_email} ({$admin_user->firstname} {$admin_user->lastname})</dc:creator>{/if}
	{if isset($feed.image) && !empty($feed.image)}
        <image>
	        {if isset($feed.description) && !empty($feed.description)}<description>{$feed.description}</description>{/if}
            {if isset($feed.link) && !empty($feed.link)}<link>{$feed.link}</link>{/if}
            <title>{$feed.title}</title>
            <url>{$file_location}/{$feed.image}</url>
        </image>
    {/if}

    {news assign='pubs'}

    {foreach from=$items item='entry'}
   <item>
      <title>{$entry->title}</title>
      <link>{$entry->moreurl}</link>
      {if isset($admin_email)}<dc:creator>{$admin_email} ({$admin_user->firstname} {$admin_user->lastname})</dc:creator>{/if}
      <pubDate>{$entry->postdate|us_date_format:"%a, %d %b %Y %H:%M:%S"} +0200</pubDate>
      <guid isPermaLink="true">{$entry->moreurl}</guid>
      <description><![CDATA[<p>{if isset($entry->summary)}{$entry->summary|trim|strip_tags|summarize:100}{else}{$entry->content|strip_tags|summarize:100}{/if}</p>]]></description>
      <wfw:commentRss>{root_url}{$smarty.server.REQUEST_URI}</wfw:commentRss>      
    </item>
    {/foreach}

</channel>

</rss>
Den Modifier "us_date_format" gibts bei mir nicht, daher habe ich wieder den von mir abgeänderten im Template eingesetzt. Hier der Quelltext von meinem Modifier:

Code: Select all

<?php

function smarty_cms_modifier_cms_date_format_en($string, $format = '', $default_date = '') {

setlocale (LC_ALL, 'en_US');

if( $format == '' ) {
    $format = get_site_preference('defaultdateformat');
    if( $format == '' ) { $format = '%b %e, %Y'; }
    $uid = get_userid(false);
    if( $uid ) {
	    $tmp = get_preference($uid,'date_format_string');
	    if( $tmp != '' ) { $format = $tmp; }
	}
}

global $gCms;
$smarty =& $gCms->GetSmarty();
$config =& $gCms->GetConfig();
$fn = cms_join_path($config['root_path'],'lib','smarty','plugins','modifier.date_format.php');
if( !file_exists($fn) ) die();
require_once( $fn );

$ausgabe = smarty_modifier_date_format($string,$format,$default_date);
setlocale (LC_ALL, 'de_DE');
return $ausgabe;

}
// EOF
Das ganze muss als "modifier.cms_date_format_en.php" im Verzeichnis plugins abgelegt werden, dann sollte das obige RSS-Template gehen.

Re: Änderung der RSS Feeds ab CMSms 1.5

Posted: Sun Jan 11, 2009 8:26 pm
by hibr
Bei mir (CMSms 1.5.1) hat CGFeedMaker 1.0.3 nach dem Update von 1.0.2 überhaupt nicht mehr funktioniert. 1.0.2 hatte leider out-of-the-box kein validen Feed produziert, darum hatte ich auf 1.0.3 geupdatet.

Trotz aller angewandten Tricks hier im Thread  habe ich es nicht geschafft einen funktionierenden Newsfeed mit CGFM 1.0.3 hinzukriegen. Bei mir werden trotz obiger Tipps keine Einträge im Feed angezeigt.

Ich habe aber eine andere Lösung gefunden, die zumindest mich zufriedenstellt und ein validen Newsfeed mit CGFeedMaker 1.0.2 zustande bringt:

1.) Downgrade auf CGFeedMaker 1.0.2
2.) Ggf. auf CGExtensions 1.14.1 updaten
3.) Das News-Feed-Template auf Voreinstellungen zurücksetzen.
4.) Zeile

Code: Select all

<pubDate>{$entry->postdate|date_format:"%a, %d %b %Y %H:%M:%S %Z"}</pubDate>
durch

Code: Select all

<pubDate>{$entry->postdate|rfc_date}</pubDate>
ersetzen. (Damit hat man das "Datumsproblem" für einen validen Feed gelöst)

5) Ersetze

Code: Select all

{if isset($admin_email)}<webMaster>{$admin_email}</webMaster>{/if}
mit

Code: Select all

{if isset($admin_email)}<webMaster>{$admin_email} (Webmaster)</webMaster>
Damit vermeidet man, dass der Validator einen fehlenden Realnamen bemerkt. BTW: Wenn ihr im CGFeedMaker-Reiter "Details" das Feld "Feed-Bearbeiter" ausfüllt, dann immer in der Form:

Code: Select all

email@adresse.tld (Realname oder Synonym)
6) Jetzt hat man einen validen und va. funktionierenden News-Feed, der mit den meisten Feedreadern funktionieren sollte.

Feed Validation Service "empfiehlt" aber noch einen Atom-Link im -Bereich einzufügen, um mit fast allen Feedreadern kompatibel zu sein.

Wenn man aber die Zeile:

Code: Select all

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
vor dem -Bereich und

Code: Select all

<atom:link href="{root_url}{$smarty.server.REQUEST_URI}" rel="self" type="application/rss+xml" />
im -Bereich einfügt (siehe auch Template von symmetrix_01/Adiministrator), muss man Pretty-URLs verwenden, also "assume_mod_rewrite" und "use_hierarchy" in der config.php  auf "true" setzen, sonst hagelt es eine Fehlermeldung! Ggf. den Cache leeren nicht vergessen ;) Wer keine Pretty-URLs verwenden will/kann, muss ohne Atom auskommen, oder auf ein (voll funktionierendes) CGFM Upgrade warten.

Gruß Hani

PS: Ich habe mein(e) Template(s) hier angehängt.