RSS Feed Generator

Mario_m
Beiträge: 90
Registriert: Sa 24. Okt 2009, 22:57
Kontaktdaten:

Re: RSS Feed Generator

Beitrag von Mario_m » Fr 30. Okt 2009, 23:43

Hallo,

kann es sein, dass der Generator mit der 4.8.12 nicht läuft? Folgende Ausgabe bekomme ich über wget
<?xml version="1.0" encoding="iso-8859-1" ?>\n<rss version="2.0">\n <channel>\n <title>Testfeed</title>\n <copyright>? 2009 </copyright>\n <link>http://127.0.0.1/contenido/cms/test/fro ... 3</link>\n <description>test</description>\n <language>de</language>\n <lastBuildDate>Fri, 30 Oct 2009 23:28:21 CET</lastBuildDate>\n <pubDate>Fri, 30 Oct 2009 23:28:21 CET</pubDate>\n <generator>Contenido CMS</generator>\n <managingEditor></managingEditor>\n <webMaster></webMaster>\n <ttl></ttl>\n </channel>\n</rss>\n

Hier wird also was ausgegeben. Leider nicht der Inhalt der Kategorie News die ich im Generator konfiguriert habe. Wichtig ist auch noch zu erwähnen, dass ich das Ganze in einem zweiten Mandanten teste, also nicht im Haupt/Standardmandanten. Kann es vielleicht sein, dass die idcat im Modul nicht richtig gezogen wird?

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: RSS Feed Generator

Beitrag von Spider IT » Sa 31. Okt 2009, 09:15

Hallo Mario_m,

das Modul läuft in die 4.8.12 einwandfrei.
Es ist vieleicht eine überflüssige Frage, aber: hast du alle Angaben in der Konfiguration gemacht?
Ich sehe in der (schlecht dargestellten) Ausgabe von dir viele leere Felder (managingEditor, webMaster, ttl).
Gibt es eine Möglichkeit für mich mir das mal an zu sehen?

Gruß
René

Mario_m
Beiträge: 90
Registriert: Sa 24. Okt 2009, 22:57
Kontaktdaten:

Re: RSS Feed Generator

Beitrag von Mario_m » Sa 31. Okt 2009, 17:57

Hallo,

die Felder in der Konfig habe ich gefüllt, leider keine Änderung.

Code: Alles auswählen

<?xml version="1.0" encoding="iso-8859-1" ?>\n<rss version="2.0">\n    
<channel>\n        
<title>Testfeed</title>\n       
 <copyright>? 2009 teset</copyright>\n        
 <link>http://127.0.0.1/contenido/cms/test/front_content.php?idcat=51&idart=52&lang=3</link>\n        
 <description>test</description>\n        
 <language>de</language>\n       
 <lastBuildDate>Sat, 31 Oct 2009 17:53:11 CET</lastBuildDate>\n        
 <pubDate>Sat, 31 Oct 2009 17:53:11 CET</pubDate>\n        
 <generator>Contenido CMS</generator>\n        
 <managingEditor>max@moritz.de</managingEditor>\n        
 <webMaster>max@moritz.de</webMaster>\n       
 <ttl>1</ttl>\n    
 </channel>\n
 </rss>\n
Ansehen geht leider nicht, das Ganze läuft bei mir lokal und online stellen kann ich es derzeit nicht. Irgendwie scheint ja das Einlesen der Kategorie nicht zu funktionieren. Das ja garnichts angzeigt wird. Gibt es noch irgendeine Einstellung (Kategorie im Artikel, bestimmte Konfig des Artikels, etc,) die noch eine Rolle spielen könnte?
Zuletzt geändert von Oldperl am Di 3. Nov 2009, 10:26, insgesamt 1-mal geändert.
Grund: Moderation: Quelltext in code-Tags gesetzt.

milez
Beiträge: 29
Registriert: Fr 8. Dez 2006, 13:35
Kontaktdaten:

Re: RSS Feed Generator

Beitrag von milez » Fr 6. Nov 2009, 15:06

Hi,

ich hatte in meinem Text folgendes Zeichen:
Dieses wurde ansch. in ein HTML Char konvertiert, was den RSS Feed invalid werden ließ.

Ich konnte das nicht beheben. Generell validiert der Feed aber auch nciht: http://validator.w3.org/feed/check.cgi

Grüße
Jan

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: RSS Feed Generator

Beitrag von Spider IT » Fr 6. Nov 2009, 17:22

Danke für den hinweis, ich schaue mir das nächste Woche mal an.

Gruß
René

milez
Beiträge: 29
Registriert: Fr 8. Dez 2006, 13:35
Kontaktdaten:

Re: RSS Feed Generator

Beitrag von milez » Sa 21. Nov 2009, 10:20

Hi,

ist es möglich, dass das Modul auch Artikel aus Unterkategorien mit ausgibt?

Im Moment geht es nur für eine Kategorie, ich würde aber gerne den RSS Feed einer ganzen Domain abbilden.

Viele Grüße
Jan

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: RSS Feed Generator

Beitrag von Spider IT » Sa 21. Nov 2009, 11:27

Hmmm, die Ausgabe für eine gesamte Domain halte ich zwar für unsinnig, aber du wirst sicherlich deine Gründe haben.
Ich werde mal sehen was sich machen lässt, vieleicht mit einem Häkchen "Unterkategorien einbeziehen".

Gruß
René

milez
Beiträge: 29
Registriert: Fr 8. Dez 2006, 13:35
Kontaktdaten:

Re: RSS Feed Generator

Beitrag von milez » Sa 21. Nov 2009, 18:25

Das wäre toll!

Bei einem Weblog habe ich doch z.B. auch einen Feed über alle Kategorien. Eig doch bei jeder News-Site, z.B. Spiegel oder so. Es geht ja um die letzten 30 Artikel oder so ...

VG
Jan

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: RSS Feed Generator

Beitrag von Spider IT » Do 3. Dez 2009, 11:29

Die neue Version ist fertig!
Diese behebt ein Problem mit "ungültige" Zeichen in der Beschreibung (<description>) durch Verpacken des Inhalts in CDATA.
Zusätzlich wurde der von Jan geäußerte Wunsch nach einer Inkludierung von Unterkategorien umgesetzt.

Gruß
René

milez
Beiträge: 29
Registriert: Fr 8. Dez 2006, 13:35
Kontaktdaten:

Re: RSS Feed Generator

Beitrag von milez » So 6. Dez 2009, 14:29

Sauber!

Ich habe noch 2 Fehler gefunden:

Code: Alles auswählen

$pub_date = $tmp_article->getField("created");
Da sollte "published" rein.

Wenn ein Titel das Zeichen "&" enthält, wird der Feed invalide. Ich habe das erstmal in der prepareString Funktion ersetzt, da müßte aber eine generelle Lösung für solche Zeiche her, denke ich.

Der Validator sagt:

Code: Alles auswählen

XML parsing error: <unknown>:101:60: not well-formed (invalid token) [help]

                <title>Gesundheitsreform: Versicherungspflicht & Einheitsbeitrag ...
Viele Grüße
Jan

Mario_m
Beiträge: 90
Registriert: Sa 24. Okt 2009, 22:57
Kontaktdaten:

Re: RSS Feed Generator

Beitrag von Mario_m » Mo 4. Jan 2010, 21:58

Die neue Version funktioniert bei mir utner 4.8.12. Mit einer Einschränkung.
Das Einbeziehen der Unterkategorien führt bei mir dazu, dass der Link auf die Artikel mit der idcat der konfigurierten Hauptkategorie verknüpft ist (ohne AMR). Kann das jemand bestätigen?

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: RSS Feed Generator

Beitrag von derSteffen » Di 12. Jan 2010, 11:48

@Marioa_m

Als Hinweis: mit AMR bei einer 4.8.12 funktioniert es.

Das mit dem & macht bei mir auch keine Probleme zumindest nicht in der Description. Im titel wird tatsächlich ein Fehler erzeugt (somit kann der IE7 das Feed nicht verarbeiten).

MfG

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: RSS Feed Generator

Beitrag von Spider IT » Di 12. Jan 2010, 14:26

Danke an alle für das Feedback, die Fehler/Probleme wrden z.Z. korrigiert/behoben.

Gruß
René

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: RSS Feed Generator

Beitrag von derSteffen » Di 12. Jan 2010, 14:49

Hallo,

ich habe mich auch mal rangesetzt und das Modul überarbeitet. Der Validator meckert jetzt nicht mehr:

Was habe ich geändert:
  • Im Titel der Items habe ich ein CDATA rumgemacht - somit klappt es auch im IE
  • Ich habe mal Bildtitel und Link für Bild auskommentiert, weil der Validator sagt Link und Link auf das Bild, sowie Seitentitel und Titel vom Bild müssen identisch sein
  • managingEditor und webMaster brauchen zur Email auch noch einen Namen, dass kann man im Input angeben
  • Ich habe das PubDate und LastBuildDate geändert in das Format Tue, 12 Jan 2010 14:44:29 +0100
  • Der Autor vom Item muss ebenfalls eine Email haben, dass kann man jetzt im Input angeben (eine Art Allgemeine Email für alle Redakteure, z.B. geht an die Redaktion. Man will ja nicht immer seine Email veröffentlichen und könnte somit auch ne pseude-Email angeben)
  • Zusätzlich habe ich nch ein guid-Element in das item mit reingenommen (Beispiel: <guid isPermaLink="true">Link zum Artikel</guid)
  • Ich habe auch noch den Head angepasst mit einigen Daten (also was im <rss version="2.0" etc. folgt
  • und ich habe noch <atom:link href="DER LINK ZUM AKTUELLEN RSS" rel="self" type="application/rss+xml" /> reingenommen, weil es der Validitor sagte
Input:

Code: Alles auswählen

#Selected category
$selected = "CMS_VALUE[0]";

#Set default values
if ("CMS_VALUE[17]" == '') {
    $rss_include_sub_categories = '';
} else {
    $rss_include_sub_categories = ' checked="checked"';
}
if ("CMS_VALUE[1]" == '') {
    $rss_sortby = 'lastmodified';
} else {
    $rss_sortby = "CMS_VALUE[1]";
}
if ("CMS_VALUE[2]" == '') {
    $rss_sortorder = 'desc';
} else {
    $rss_sortorder = "CMS_VALUE[2]";
}
if ("CMS_VALUE[3]" == '') {
    $rss_include_start_article = '';
} else {
    $rss_include_start_article = ' checked="checked"';
}
$rss_title = "CMS_VALUE[4]";
if ("CMS_VALUE[5]" == '') {
    $rss_link = $cfgClient[$client]['path']['htmlpath'];
} else {
    $rss_link = "CMS_VALUE[5]";
}
$rss_description = "CMS_VALUE[6]";
if ("CMS_VALUE[7]" == '') {
    $rss_language = 'de';
} else {
    $rss_language = "CMS_VALUE[7]";
}
$rss_copyright = "CMS_VALUE[8]";
$rss_image_title = "CMS_VALUE[9]";
$rss_image_url = "CMS_VALUE[10]";
$rss_image_link = "CMS_VALUE[11]";
$rss_managingEditor = "CMS_VALUE[12]";
$rss_managingEditorName = "CMS_VALUE[121]";
$rss_webMaster = "CMS_VALUE[13]";
$rss_webMasterName = "CMS_VALUE[131]";
$rss_maxCount = "CMS_VALUE[14]";
$rss_ttl = "CMS_VALUE[15]";
$rss_description_length = "CMS_VALUE[16]";
$rss_authorRedaktionEmail = "CMS_VALUE[171]";
?>
<table cellspacing="0" cellpadding="10" border="0">
    <tr valign="top">
        <td>Kategorie w&auml;hlen:</td>
        <td>
            <select name="<?="CMS_VAR[0]"?>" style="width: 300px;">
                <option value="">---Keine---</option>
                <option value="0"<?=(("CMS_VALUE[0]" == "0") ? 'selected="selected"' : '')?>>---Alle---</option>
<?php
$query = 'SELECT
            A.idcat,
            A.level,
            C.name
          FROM
            ' . $cfg["tab"]["cat_tree"] . ' AS A,
            ' . $cfg["tab"]["cat"] . ' AS B,
            ' . $cfg["tab"]["cat_lang"] . ' AS C
          WHERE
            A.idcat = B.idcat AND
            B.idcat = C.idcat AND
            C.idlang = "' . $lang . '" AND
            B.idclient = "' . $client . '" AND
            C.visible = 1
          ORDER BY
            A.idtree';
$db->query($query);
while ($db->next_record()) {
    #Indent spacer
    #How many levels
    $levels = $db->f("level");
    $spaces = '';
    for ($i = 0; $i <= $levels; $i ++) {
        $spaces .= "|->";
    }

    if ($selected == $db->f("idcat")) {
        #Selected category
?>
                <option selected="selected" value="<?=$db->f("idcat")?>"><?=$spaces . $db->f("name")?></option>
<?php
    } else {
        #Category
?>
                <option value="<?=$db->f("idcat")?>"><?=$spaces . $db->f("name")?></option>
<?php
    }
}
?>
            </select>
        </td>
    </tr>
    <tr valign="top">
        <td>Unterkategorien einbeziehen:</td>
        <td><input type="checkbox" name="<?="CMS_VAR[17]"?>" value="1"<?=$rss_include_sub_categories?> /></td>
    </tr>
<?php
$arrSortBy['created'] = "Erstellungsdatum";
$arrSortBy['published'] = "Publizierungsungsdatum";
$arrSortBy['artsort'] = "Sortier-Reihenfolge";
$arrSortBy['lastmodified'] = "&Auml;nderungsdatum";
$arrSortBy['name'] = "Alphabetisch";
?>
    <tr valign="top">
        <td>Sortieren nach:</td>
        <td>
            <select name="<?="CMS_VAR[1]"?>" style="width: 300px;">
<?php
foreach ($arrSortBy as $key => $value) {
    if ($key == $rss_sortby) {
?>
                <option value="<?=$key?>" selected="selected"><?=$value?></option>
<?php
    } else {
?>
                <option value="<?=$key?>"><?=$value?></option>
<?php
    }
}
?>
            </select>
        </td>
    </tr>
<?php
$arrSortOrder['asc'] = "aufsteigend";
$arrSortOrder['desc'] = "absteigend";
?>
    <tr valign="top">
        <td>Sortier-Reihenfolge:</td>
        <td>
            <select name="<?="CMS_VAR[2]"?>" style="width: 300px;">
<?php
foreach ($arrSortOrder as $key => $value) {
    if ($key == $rss_sortorder) {
?>
                <option value="<?=$key?>" selected="selected"><?=$value?></option>
<?php
    } else {
?>
                <option value="<?=$key?>"><?=$value?></option>
<?php
    }
}
?>
            </select>
        </td>
    </tr>
    <tr valign="top">
        <td>Startartikel einbeziehen:</td>
        <td><input type="checkbox" name="<?="CMS_VAR[3]"?>" value="1"<?=$rss_include_start_article?> /></td>
    </tr>
    <tr valign="top">
        <td>Titel:</td>
        <td><input type="text" maxlength="200" style="width: 300px;" name="<?="CMS_VAR[4]"?>" value="<?=$rss_title?>" /></td>
    </tr>
    <tr valign="top">
        <td>Link:</td>
        <td><input type="text" maxlength="200" style="width: 300px;" name="<?="CMS_VAR[5]"?>" value="<?=$rss_link?>" /></td>
    </tr>
    <tr valign="top">
        <td>Beschreibung:</td>
        <td><input type="text" maxlength="200" style="width: 300px;" name="<?="CMS_VAR[6]"?>" value="<?=$rss_description?>" /></td>
    </tr>
<?php
$arrLanguages['de'] = "deutsch";
$arrLanguages['en'] = "englisch";
$arrLanguages['fr'] = "franz&ouml;sisch";
$arrLanguages['it'] = "italienisch";
$arrLanguages['es'] = "spanisch";
$arrLanguages['nl'] = "niederl&auml;ndisch";
$arrLanguages['el'] = "griechisch";
$arrLanguages['pt'] = "portugiesisch";
?>
    <tr valign="top">
        <td>Sprache:</td>
        <td>
            <select name="<?="CMS_VAR[7]"?>" style="width: 300px;">
<?php
foreach ($arrLanguages as $key => $value) {
    if ($key == $rss_language) {
?>
                <option value="<?=$key?>" selected="selected"><?=$value?></option>
<?php
    } else {
?>
                <option value="<?=$key?>"><?=$value?></option>
<?php
    }
}
?>
            </select>
        </td>
    </tr>
    <tr valign="top">
        <td>Copyright:</td>
        <td><input type="text" maxlength="200" style="width: 300px;" name="<?="CMS_VAR[8]"?>" value="<?=$rss_copyright?>" /></td>
    </tr>
    <!-- <tr valign="top">
        <td>Bildtitel:</td>
        <td><input type="text" maxlength="200" style="width: 300px;" name="<?="CMS_VAR[9]"?>" value="<?=$rss_image_title?>" /></td>
    </tr> -->
<?php
$sql = "SELECT * FROM ".$cfg['tab']['upl']." WHERE (filetype='jpg') OR (filetype='jpeg') OR (filetype='gif') OR (filetype='png') ORDER BY dirname,filename";
$db->query($sql);
?>
    <tr>
        <td>Bild:</td>
        <td>
            <select name="<?="CMS_VAR[10]"?>" size="1" style="width: 300px;">
                <option value="">Nichts ausgew&auml;hlt</option>
<?php
$selected = false;
$img_display = '';

while ($db->next_record()) {
    $path = $db->f("dirname").$db->f("filename");
    if ($db->f("idupl") == $rss_image_url) {
?>
                <option selected="selected" value="<?=$db->f("idupl")?>"><?=$path?></option>
<?php
        $img_display = $path;
        $selected = true;
    } else {
?>
                <option value="<?=$db->f("idupl")?>"><?=$path?></option>
<?php
    }
}
?>
            </select>
        </td>
    </tr>
    <!-- <tr valign="top">
        <td>Link (bei Klick auf das Bild):</td>
        <td><input type="text" maxlength="200" style="width: 300px;" name="<?="CMS_VAR[11]"?>" value="<?=$rss_image_link?>" /></td>
    </tr> -->
    <tr valign="top">
        <td>Name des Herausgeber:</td>
        <td><input type="text" maxlength="200" style="width: 300px;" name="<?="CMS_VAR[121]"?>" value="<?=$rss_managingEditorName?>" /></td>
    </tr>
    <tr valign="top">
        <td>EMail-Adresse Herausgeber:</td>
        <td><input type="text" maxlength="200" style="width: 300px;" name="<?="CMS_VAR[12]"?>" value="<?=$rss_managingEditor?>" /></td>
    </tr>
    <tr valign="top">
        <td>EMail-Adresse Webmaster:</td>
        <td><input type="text" maxlength="200" style="width: 300px;" name="<?="CMS_VAR[13]"?>" value="<?=$rss_webMaster?>" /></td>
    </tr>
    <tr valign="top">
        <td>Name des Webmaster:</td>
        <td><input type="text" maxlength="200" style="width: 300px;" name="<?="CMS_VAR[131]"?>" value="<?=$rss_webMasterName?>" /></td>
    </tr>
    <tr valign="top">
        <td>EMail-Adresse der Redaktion:<br>(Allg. Email f&uuml;r alle Autoren)</td>
        <td><input type="text" maxlength="200" style="width: 300px;" name="<?="CMS_VAR[171]"?>" value="<?=$rss_authorRedaktionEmail?>" /></td>
    </tr>
    <tr valign="top">
        <td>maximale Anzahl Artikel:</td>
        <td><input type="text" maxlength="200" style="width: 300px;" name="<?="CMS_VAR[14]"?>" value="<?=$rss_maxCount?>" /></td>
    </tr>
    <tr valign="top">
        <td>TTL (Minuten):</td>
        <td><input type="text" maxlength="200" style="width: 300px;" name="<?="CMS_VAR[15]"?>" value="<?=$rss_ttl?>" /></td>
    </tr>
    <tr valign="top">
        <td>max. L&auml;nge der Beschreibung:</td>
        <td><input type="text" maxlength="200" style="width: 300px;" name="<?="CMS_VAR[16]"?>" value="<?=$rss_description_length?>" /></td>
    </tr>
</table>
<?php
Output

Code: Alles auswählen

<?php
#Includes
cInclude('classes', 'class.article.php');
#cInclude('frontend', 'includes/class.articlerecursive.php');

#Get settings
$rss_cat = "CMS_VALUE[0]";
$rss_include_sub_dirs = ((strlen("CMS_VALUE[17]")) ? true : false);
$rss_sortby = "CMS_VALUE[1]";
$rss_sortorder = "CMS_VALUE[2]";
$rss_include_start_article = ((strlen("CMS_VALUE[3]")) ? true : false);
$rss_title = "CMS_VALUE[4]";
$rss_link = "CMS_VALUE[5]";
$rss_description = "CMS_VALUE[6]";
$rss_language = "CMS_VALUE[7]";
$rss_copyright = "CMS_VALUE[8]";
$rss_image_title = "CMS_VALUE[9]";
$rss_image_url = "CMS_VALUE[10]";
$rss_image_link = "CMS_VALUE[11]";
$rss_managingEditor = "CMS_VALUE[12]";
$rss_managingEditorName = "CMS_VALUE[121]";
$rss_webMaster = "CMS_VALUE[13]";
$rss_webMasterName = "CMS_VALUE[131]";
$rss_maxCount = "CMS_VALUE[14]";
$rss_ttl = "CMS_VALUE[15]";
$rss_description_length = "CMS_VALUE[16]";
$rss_authorRedaktionEmail = "CMS_VALUE[171]";

#Check settings
if ($rss_maxCount == '') {
    $rss_maxCount = 999;
}

if ($rss_description_length=='') {
    $rss_description_length = 200;
}

#Get feed image
if ($rss_image_link != '') {
    if (substr(strtolower($rss_image_link), 0, 7) != 'http://') {
        $rss_image_link = 'http://'.$rss_image_link;
    }
}

if ($rss_image_url != '') {
    $sql = "SELECT * FROM ".$cfg['tab']['upl']." WHERE idupl = ".$rss_image_url;
    $db->query($sql);
    if ($db->next_record()) {
        $rss_image_url = $cfgClient[$client]['path']['htmlpath'].$cfgClient[$client]['upl']['frontendpath'].$db->f("dirname").$db->f("filename");
        $rss_image_fs = $cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upl']['frontendpath'].$db->f("dirname").$db->f("filename");
    }
}

#Output feed header
header("Content-type: text/xml");
#Get the selected encoding
$sql = 'SELECT l.encoding
        FROM ' . $cfg['sql']['sqlprefix'] . '_clients_lang cl, ' . $cfg['sql']['sqlprefix'] . '_lang l
        WHERE ((cl.idclient=' . $client . ') AND (cl.idlang=' . $lang . '));';
//echo $sql;
$db->query($sql);
$db->next_record();
$encoding = $db->f('encoding');
echo '<?xml version="1.0" encoding="' . $encoding . '" ?>
';

?>
<rss version="2.0"
  xmlns:access="http://www.bloglines.com/about/specs/fac-1.0"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:ag="http://purl.org/rss/1.0/modules/aggregation/"
  xmlns:annotate="http://purl.org/rss/1.0/modules/annotate/"
  xmlns:app="http://www.w3.org/2007/app"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:audio="http://media.tangent.org/rss/1.0/"
  xmlns:blogChannel="http://backend.userland.com/blogChannelModule"
  xmlns:cc="http://web.resource.org/cc/"
  xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005"
  xmlns:company="http://purl.org/rss/1.0/modules/company"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:conversationsNetwork="http://conversationsnetwork.org/rssNamespace-1.0/"
  xmlns:cp="http://my.theinfo.org/changed/1.0/rss/"
  xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:dcterms="http://purl.org/dc/terms/"
  xmlns:email="http://purl.org/rss/1.0/modules/email/"
  xmlns:ev="http://purl.org/rss/1.0/modules/event/"
  xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"
  xmlns:fh="http://purl.org/syndication/history/1.0"
  xmlns:foaf="http://xmlns.com/foaf/0.1/"
  xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
  xmlns:georss="http://www.georss.org/georss"
  xmlns:geourl="http://geourl.org/rss/module/"
  xmlns:g="http://base.google.com/ns/1.0"
  xmlns:gml="http://www.opengis.net/gml"
  xmlns:icbm="http://postneo.com/icbm"
  xmlns:image="http://purl.org/rss/1.0/modules/image/"
  xmlns:indexing="urn:atom-extension:indexing"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:kml20="http://earth.google.com/kml/2.0"
  xmlns:kml21="http://earth.google.com/kml/2.1"
  xmlns:kml22="http://earth.google.com/kml/2.2"
  xmlns:l="http://purl.org/rss/1.0/modules/link/"
  xmlns:mathml="http://www.w3.org/1998/Math/MathML"
  xmlns:media="http://search.yahoo.com/mrss/"
  xmlns:openid="http://openid.net/xmlns/1.0"
  xmlns:opensearch10="http://a9.com/-/spec/opensearchrss/1.0/"
  xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"
  xmlns:opml="http://www.opml.org/spec2"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:ref="http://purl.org/rss/1.0/modules/reference/"
  xmlns:reqv="http://purl.org/rss/1.0/modules/richequiv/"
  xmlns:rss090="http://my.netscape.com/rdf/simple/0.9/"
  xmlns:rss091="http://purl.org/rss/1.0/modules/rss091#"
  xmlns:rss1="http://purl.org/rss/1.0/"
  xmlns:rss11="http://purl.org/net/rss1.1#"
  xmlns:search="http://purl.org/rss/1.0/modules/search/"
  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  xmlns:ss="http://purl.org/rss/1.0/modules/servicestatus/"
  xmlns:str="http://hacks.benhammersley.com/rss/streaming/"
  xmlns:sub="http://purl.org/rss/1.0/modules/subscription/"
  xmlns:svg="http://www.w3.org/2000/svg"
  xmlns:sx="http://feedsync.org/2007/feedsync"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
  xmlns:thr="http://purl.org/rss/1.0/modules/threading/"
  xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:wiki="http://purl.org/rss/1.0/modules/wiki/"
  xmlns:xhtml="http://www.w3.org/1999/xhtml"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xrd="xri://$xrd*($v*2.0)"
  xmlns:xrds="xri://$xrds">
    <channel>
        <title><?=prepareStringForOutput($rss_title, $encoding)?></title>
        <copyright>© <?=date('Y')?> <?=prepareStringForOutput($rss_copyright, $encoding)?></copyright>
        <link><?=prepareStringForOutput($rss_link, $encoding)?></link>
        <description><?=prepareStringForOutput($rss_description, $encoding)?></description>
        <language><?=prepareStringForOutput($rss_language, $encoding)?></language>
        <lastBuildDate><?=date('D, d M Y H:i:s O')?></lastBuildDate>
        <pubDate><?=date('D, d M Y H:i:s O')?></pubDate>
        <generator>WCMS Contenido</generator>
        <managingEditor><?=$rss_managingEditor?> (<?=$rss_managingEditorName?>)</managingEditor>
        <webMaster><?=$rss_webMaster?> (<?=$rss_webMasterName?>)</webMaster>
        <ttl><?=$rss_ttl?></ttl>
<?php
if (strlen($rss_image_fs)) {
?>
        <image>
            <title><?=prepareStringForOutput($rss_title, $encoding)?></title>
            
<?php
list ($width, $height, $type, $attr) = getimagesize($rss_image_fs);
?>
            <width><?=$width?></width>
            <height><?=$height?></height>
            <url><?=prepareStringForOutput($rss_image_url, $encoding)?></url>            
            <link><?=prepareStringForOutput($rss_link, $encoding)?></link>
        </image>
        <atom:link href="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; ?>" rel="self" type="application/rss+xml" />
<?php
}

#Output articles
if ($rss_cat != '') {
    $list = new getArticleCollection($rss_cat, $rss_include_sub_dirs, $rss_include_start_article, $rss_sortby, $rss_sortorder);
    $count = $list->count;

    if ($count > 0) {
        $aArticleList = array ();
        $aArticleList = $list->articles;
        $aTmpArticleList = array ();
        $index = 1;
        foreach ($aArticleList as $value) {
            if ($index <= $rss_maxCount) {
                $tmp_article = new Article($value, $client, $lang);
                $headline = '';
                $i = 1;
                while (($i<20) && (is_empty($headline))) {
                    $headline = strip_tags($tmp_article->getContent('CMS_HTMLHEAD', $i));
                    $i++;
                }
                    
                $i = 1;
                while (($i<20) && (is_empty($headline))) {
                    $headline = strip_tags($tmp_article->getContent('CMS_TEXT', $i));
                    $i++;
                }
                
                $description = '';
                $i = 1;
                while (($i<20) && (is_empty($description))) {
                    $description = strip_tags($tmp_article->getContent('CMS_HTML', $i));
                    $i++;
                }

                $description = capiStrTrimAfterWord($description, $rss_description_length);

                $pub_date = $tmp_article->getField("published");
                $pub_date = strtotime($pub_date);
                $pub_date = date('r', $pub_date);
                
                if ($headline != '') {
                    $aParams = array('idcat' => $rss_cat, 'idart' => $value, 'client' => $client, 'lang' => $lang);
                    $link = Contenido_Url::getInstance()->build($aParams, true);
?>
        <item>
            <title><![CDATA[<?=prepareStringForOutput($headline, $encoding)?>]]></title>
            <link><?=$link?></link>
            <description><![CDATA[<?=prepareStringForOutput($description, $encoding) . ']]> <a href="' . $link . '">' . mi18n("mehr") . '...</a>'?></description>
            <pubDate><?=$pub_date?></pubDate>
<?php
                    $t1 = $cfg["tab"]["art_lang"];
                    $t2 = $cfg["tab"]["phplib_auth_user_md5"];
                    $sql = "SELECT ".$t2.".realname FROM ".$t1." INNER JOIN ".$t2." ON ".$t1.".author = ".$t2.".username WHERE (".$t1.".idart=$value) AND (".$t1.".idlang=$lang)";
                    $db->query($sql);
                    
                    if ($db->next_record()) {
                        $author = prepareStringForOutput($db->f("realname"), $encoding);
                    } else {
                        $author = '';
                    }
?>
            <author><?=$rss_authorRedaktionEmail?>(Email der Redaktion, Autor:<?=$author?>)</author>
            <guid isPermaLink="true"><?=$link?></guid>
        </item>
<?php
                }
            }
            $index ++;
        }
    }
}
?>    
    </channel>
</rss>
<?php

function is_empty($in_str) {
    return (strlen(trim(str_replace('&nbsp;', '', str_replace(chr(13) . chr(10), '', strip_tags($in_str))))) == 0);
}
function prepareStringForOutput($sIn, $sCode = 'ISO-8859-1') {
    $sIn = str_replace('&nbsp;', ' ', $sIn);
    $sIn = str_replace('&nbsp;', ' ', $sIn);
    $sIn = str_replace('&bull;', '-', $sIn);
    $sIn = html_entity_decode($sIn, ENT_COMPAT, $sCode);
    return $sIn;
}
class getArticleCollection {
    var $count;
    var $cnt = 0;
    var $db;
    var $articles;
    
    function getArticleCollection($idcat_start, $inc_subdirs, $inc_startart, $order, $direction) {
        global $cfg, $lang, $client;
        
        $this->tab = $cfg['tab'];
        $this->db = new DB_Contenido;
        
        $sql = 'SELECT
                    A.idcat,
                    A.level,
                    C.name,
                    C.public
                FROM
                    ' . $cfg["tab"]["cat_tree"] . ' AS A,
                    ' . $cfg["tab"]["cat"] . ' AS B,
                    ' . $cfg["tab"]["cat_lang"] . ' AS C
                WHERE
                    A.idcat = B.idcat AND
                    B.idcat = C.idcat AND
                    C.idlang = "' . $lang . '" AND
                    B.idclient = "' . $client . '" AND
                    C.visible = 1
                ORDER BY
                    A.idtree';
        $this->db->query($sql);
        $level = -2;
        if ($idcat_start == "0") {
            $level = -1;
        }
        while ($this->db->next_record()) {
            if ($this->db->f('idcat') == $idcat_start) {
                $level = $this->db->f('level');
            }
            if ($this->db->f('public')) {
                if (($this->db->f('idcat') == $idcat_start) || (($this->db->f('level') > $level) && ($level > -2) && ($inc_subdirs))) {
                    $options = array('idcat' => $this->db->f('idcat'), 'start' => $inc_startart, 'order' => $order, 'direction' => $direction);
                    $list = new ArticleCollection($options);
                    if ($list->count) {
                        $aArticleList = array ();
                        $aArticleList = $list->articles;
                        foreach ($aArticleList as $value) {
                            $tmp_article = new Article($value, $client, $lang);
                            $articles[]['idart'] = $tmp_article->getField('idart');
                            $articles[(count($articles) - 1)][$order] = $tmp_article->getField($order);
                        }
                    }
                } elseif ($level > -2) {
                    break;
                }
            }
        }
        if (is_array($articles)) {
            foreach ($articles as $key => $row) {
                $sort[$key] = $row[$order];
            }
            if ($direction == 'asc') {
                array_multisort($sort, SORT_ASC, $articles);
            } else {
                array_multisort($sort, SORT_DESC, $articles);
            }
            for ($i = 0; $i < count($articles); $i ++) {
                $this->articles[] = $articles[$i]['idart'];
            }
        }
        $this->count = count($this->articles);
    }
}
?>
Zuletzt geändert von derSteffen am Do 14. Jan 2010, 15:23, insgesamt 1-mal geändert.

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: RSS Feed Generator

Beitrag von Spider IT » Di 12. Jan 2010, 16:18

Danke, schaue ich mir mal genauer an.

Gruß
René

Gesperrt