MyBB.de Forum

Normale Version: Letzte Beiträge per RSS-Feed
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo,

inspiriert durch diesen Thread: https://www.mybb.de/forum/thread-1310.html
habe ich mich mal rangesetzt und das ganze etwas verfeinert und optimiert.

Da ich es vorziehe MyBB-interne Funktionen zu nutzen, habe ich als Vorlage die syndication.php von MyBB 1.4.8 genommen.

Wie sich herausgestellt hat, Bedarf es nur einer Änderung einer Datenbankabfrage (und weglöschen eines Codeblockes), damit die letzten Beiträge (und nicht nur Themen) per RSS-Feed augegeben werden.

Kurz die Vorteile dieser Lösung:
  • Benutzt direkt eine MyBB-eigene Datei als Vorlage und keinen neu geschrieben Code
  • Somit funktionieren alle MyBB-Funktionen auch mit dem Newsfeed (Limits setzen, Ausgabe entweder als RSS 2.0 oder Atom 1.0, SEO-Support für die Links, ...)

Eine Demo könnt ihr euch hier anschauen:

http://pharmaboard.de/syndication2.php
(Standardansicht, Ausgabe als RSS 2.0, 20 Einträge)

http://pharmaboard.de/syndication2.php?t...0&limit=15
(Ausgabe als Atom 1.0, 15 Einträge)

http://pharmaboard.de/syndication2.php?f...0&limit=50
(Ausgabe als Atom 1.0, 50 Einträge, Nur Anzeige aus ausgewählten Foren)

Wie man sieht, ist die Syntax genau die gleiche, wie die vom normalen RSS-Feed für Themen (ist ja kein Wunder Wink ).

Viel Spaß damit!

P.S.: Wer die letzten Beiträge in der Adresszeile bzw. in der Symbolleiste haben will (Firefox, Opera, Internet Explorer) muss einfach in das header-Templates folgende Zeilen schreiben:

PHP-Code:
<link rel="alternate" type="application/rss+xml" title="Letzte Beiträge (RSS 2.0)" href="{$mybb->settings['bburl']}/syndication2.php" />
<
link rel="alternate" type="application/atom+xml" title="Letzte Beiträge (Atom 1.0)" href="{$mybb->settings['bburl']}/syndication2.php?type=atom1.0" /> 
Diese Funktion fehlt im Standard MyBB wirklich noch. Michael hatte es damals auch gecoded, von dem hab ichs mir zum ersten mal runtergeladen. Ich glaube das dürfte auf MyBBoard.net noch irgenwo rumfahren^^

Gute Arbeit trotzdem, wie gesagt sollte Standardmäßig drinne sein.
Ich kenne den Code von Michael (rss2.php). War auch sehr gute Arbeit, aber ich finde es ist zu starr aufgebaut. Die syndication2.php nutzt ja wirklich genau die gleichen Funktionen wie die normale syndication.php von MyBB (kann ja jeder direkt vergleichen) und ist daher auch was Sicherheit und Bugfreiheit anbelangt auf MyBB 1.4.8 Niveau.
Joaa da hast du natürlich recht ;D
(07.07.2009, 11:50)querschlaeger schrieb: [ -> ]Ich kenne den Code von Michael (rss2.php). War auch sehr gute Arbeit, aber ich finde es ist zu starr aufgebaut.
Der Code stammt auch noch aus der Zeit von MyBB 1.2.x, da gab es die Klasse zum Erstellen eines Feeds noch gar nicht. Wink

Super Arbeit!
(07.07.2009, 13:47)Michael schrieb: [ -> ]Der Code stammt auch noch aus der Zeit von MyBB 1.2.x, da gab es die Klasse zum Erstellen eines Feeds noch gar nicht. Wink

Super Arbeit!

Danke! Aber ich habe ja eigentlich nicht viel gemacht... Evtl. kannst du die rss2.php (der Name kann ja frei gewählt werden) hier ja damit ersetzen - dadurch würden auch Umbrüche, Zitate, Code-Blocke etc. korrekt angezeigt werden. Wink
Hallo,

ich benutze noch myBB 1.2.9. Bevor ich den riesen Aufwand auf mich nehme, das zu updaten, muss ich rausfinden, ob das Forum noch genug Interesse erfährt. Dazu möchte ich unter anderem einstellen, dass im RSS Feed die letzten Beiträge angezeigt werden anstelle der Threads. Die Frage hier: Kann ich die hier angebotene Datei dazu benutzen? Die syndication.php existiert ja bei mir schon. Und wenn ja - wie? Ich verstehe nicht ganz, was der nächste Schritt sein soll. Wenn ich die Datei heir herunterlade und einbaue wird angezeigt:
Zitat:MySQL error: 1146
Table 'db212730502.forums' doesn't exist
Query: SELECT name, fid, allowhtml, allowmycode, allowsmilies, allowimgcode FROM forums WHERE 1=1
Viele Grüße
Die Datei ist für MyBB 1.4.x.

Für MyBB 1.2.x müsstest du die zwei Querys "simple_select" ändern:
PHP-Code:
$query $db->simple_select(TABLE_PREFIX."forums"... 
und
PHP-Code:
$query $db->simple_select(TABLE_PREFIX."posts"... 
...dann sollte es funktionieren (ungetestet!).
Zitat:Fatal error: Call to undefined function: get_post_link() in [...]/syndication2.php on line 117
Du kannst ergänzend noch einmal folgendes versuchen:

öffne die Datei ".../inc/functions.php" (MyBB 1.2.9) und suche nach
PHP-Code:
/**
 * Build the forum link.
 *
 * @param int The forum id of the forum.
 * @param int (Optional) The page number of the forum.
 * @return string The url to the forum.
 */

function get_forum_link($fid$page=0)
{
    if(
$page 0)
    {
        
$forum_link str_replace("{fid}"$fidFORUM_URL_PAGED);
        return 
str_replace("{page}"$page$forum_link);
    }
    else
    {
        return 
str_replace("{fid}"$fidFORUM_URL);
    }


Füge darunter ein
PHP-Code:
/**
 * Build the post link (for 'syndication2.php').
 *
 * @param int The post ID of the post
 * @param int The thread id of the post.
 */

function get_post_link_s($pid$tid=0)
{
    if(
$tid 0)
    {
        
$link str_replace("{pid}"$pid$link);
        return 
htmlspecialchars_uni($link);
    }
    else
    {
        
$link str_replace("{pid}"$pidPOST_URL);
        return 
htmlspecialchars_uni($link);
    }


Ersetze in der Datei "syndication2.php" die Zeile
PHP-Code:
            "link" => $channel['link'].get_post_link($post['pid'], $post['tid'])."#pid".$post['pid'], 
durch
PHP-Code:
            "link" => $channel['link'].get_post_link_s($post['pid'], $post['tid'])."#pid".$post['pid'], 
Seiten: 1 2 3