[nicht erledigt] rdf.php - die folge der postings umkehren?

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
vulpes
Mitglied
Beiträge: 17
Registriert: 11.02.2004 08:41
Wohnort: Fuchsbau

[nicht erledigt] rdf.php - die folge der postings umkehren?

Beitrag von vulpes »

hallo,

ich habe die rdf.php von http://www.phpbb.de/rss.php
in mein forum eingebaut und es funzt auch alles soweit
gut aber ich habe das problem das er die postings so
anzeigt das neue postings immer ganz unten in der liste
stehen. ich würde aber gerne das letzte posting immer
oben und an erster stelle angezeigt haben. was muss
ich in der rdf.php ändern das er die reihenfolge so an-
zeigt das die neusten immer an erster stelle sind.
auslesen lasse ich die datei mit "rdf.php?count=xx"
xx=(anzahl der postings die angezeigt werden sollen).

das beispiel ist gut zu sehen wenn man mit firefox die
rdf.php ausliest. wäre schön wenn jemand ne lösung hat.

//edit:
ich habe nur den titel verändert, da es [erledigt] ist :D
//edit2:
leider doch [nicht erledigt], da muss noch ein fehler drin sein :-?
Zuletzt geändert von vulpes am 04.10.2005 04:13, insgesamt 2-mal geändert.
Benutzeravatar
vulpes
Mitglied
Beiträge: 17
Registriert: 11.02.2004 08:41
Wohnort: Fuchsbau

Beitrag von vulpes »

moin,

vielleicht hilft es ja wenn der quellcode da ist. wäre
echt schön wenn jemand eine passende lösung hat :D

Code: Alles auswählen

<?php
/***************************************************************************
*                                  rdf.php
*                            -------------------
*   begin                : Saturday, Mar 2, 2002
*   copyright            : (C) 2002 Matthijs van de Water
*                                   Sascha Carlin
*   email                : matthijs@beryllium.net
*                          sc@itst.org
*
*   $Id: rdf.php,v 1.2 2002/04/15 13:15:01 mvdwater Exp $
*
*
***************************************************************************/

/***************************************************************************
*
*   This program is free software; you can redistribute it and/or modify
*   it under the terms of the GNU General Public License as published by
*   the Free Software Foundation; either version 2 of the License, or
*   (at your option) any later version.
*
***************************************************************************/

/***************************************************************************
*
*   PHPBB 2.0 RDF CONTENT SYNDICATOR
*   Shows last active topics RDF XML form
*
***************************************************************************
*
*   Put this file in your phpBB2 directory.
*   You can call this script without parameters, what will
*   result in an RDF with the 10 latest posts from all your forums.
*   You can specify the number of posts via the url parameter count:
*
*   http://www.domain.com/phpBB2/rdf.php?count=50
*
*   This will result in an RDF file with the latest 50 posts from
*   all your forums.
*
*   You can also specify to look only at a specified forum using the
*   fid parameter:
*
*   http://www.domain.com/phpBB2/rdf.php?fid=9
*
*   This will result in an RDF file with the latest 10 posts from
*   your forum with the id 9.
*
*   You can also mix the paramters:
*
*   http://www.domain.com/phpBB2/rdf.php?fid=5&count=3
*
*   will show you the latest 3 posts from forum 5.
*
*   THIS SCRIPT WILL ONLY SHOW POSTS FROM PUBLIC FORUMS
*
***************************************************************************/

// XML and nocaching headers
header ('Cache-Control: private, pre-check=0, post-check=0, max-age=0');
header ('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
header ('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header ('Content-Type: text/xml');

// Includes of phpBB scripts
define ('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

// If not set, set the output count to 10
$count = ( !isset($HTTP_GET_VARS['count']) ) ? 10 : intval($HTTP_GET_VARS['count']);
$count = ( $count == 0 ) ? 10 : $count;

// Zeichen
$chars = ( isset($HTTP_GET_VARS['chars']) ) ? intval($HTTP_GET_VARS['chars']) : 200;
if($chars<0 || $chars>500) $chars=500; //Maximum
$type = ( isset($HTTP_GET_VARS['type']) ) ? $HTTP_GET_VARS['type'] : 'latest';
$news = ( $type == 'news' );

// Create main board url (some code borrowed from functions_post.php)
$script_name = preg_replace('/^\/?(.*?)\/?$/', '\1', trim($board_config['script_path']));
$viewtopic = ( $script_name != '' ) ? $script_name . '/viewtopic.' . $phpEx : 'viewtopic.'. $phpEx;
$index = ( $script_name != '' ) ? $script_name . '/index.' . $phpEx : 'index.'. $phpEx;
$server_name = trim($board_config['server_name']);
$server_protocol = ( $board_config['cookie_secure'] ) ? 'https://' : 'http://';
$server_port = ( $board_config['server_port'] <> 80 ) ? ':' . trim($board_config['server_port']) . '/' : '/';

$index_url = $server_protocol . $server_name . $server_port . $index;
$viewtopic_url = $server_protocol . $server_name . $server_port . $viewtopic;

$rdf = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>
<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns=\"http://my.netscape.com/rdf/simple/0.9/\">

<channel>
    <title>" . $board_config['sitename'] . " Forum</title>
    <link>" . $index_url . "</link>
    <description>" . $board_config['site_desc'] . "</description>
</channel>
";

$fid = ( isset($HTTP_GET_VARS['fid']) ) ? $HTTP_GET_VARS['fid'] : array();
if(!is_array($fid)) $fid = array($fid);

$fid_new = array();
for($i=0; $i<sizeof($fid); $i++)
{
    if(intval($fid[$i]) > 0)
    {
        if(!in_array($fid[$i], $fid_new))
        {
            $fid_new[] = $fid[$i];
        }
    }
}
$fid = $fid_new;
$sql_where = ( sizeof($fid)>0 ) ? " AND f.forum_id IN (" . implode($fid, ", ") . ")" : " ";

$sql_orderby = $news ? 't.topic_time DESC' : 'p.post_time DESC';
$sql_post_id_field = $news ? 't.topic_first_post_id' : 't.topic_last_post_id';

// SQL statement to fetch active topics of public forums
$sql = "SELECT t.topic_id, t.topic_title, p.post_id, p.post_time, pt.post_text, pt.bbcode_uid, f.forum_name
    FROM " . TOPICS_TABLE . " AS t, " . POSTS_TABLE . " AS p, " . POSTS_TEXT_TABLE . " AS pt, " . FORUMS_TABLE . " AS f
    WHERE
        f.forum_id = t.forum_id
            AND f.auth_view = " . AUTH_ALL . "
            AND p.topic_id = t.topic_id
            AND p.post_id = $sql_post_id_field
            AND pt.post_id = p.post_id
            $sql_where
    ORDER BY $sql_orderby LIMIT $count";
$topics_query = $db->sql_query($sql);
//die($sql);
if ( !$topics_query )
{
    die("Failed obtaining list of active topics");
}
else
{
    $topics = $db->sql_fetchrowset($topics_query);
}

if ( count($topics) == 0 )
{
    die("No topics found");
}
else
{
    // $topics contains all interesting data
    for ($i = 0; $i < count($topics); $i++)
    {
        if(isset($HTTP_GET_VARS['titlepattern']))
        {
            $title = $HTTP_GET_VARS['titlepattern'];
            $title = str_replace('__DATE__', date("d.m.Y H:i", $topics[$i]['post_time']), $title);
            $title = str_replace('__TITLE__', $topics[$i]['topic_title'], $title);
            $title = str_replace('__FORUM__', $topics[$i]['forum_name'], $title);
        }
        else
        {
            $title = $topics[$i]['topic_title'];
        }
        //$title = "[" . date("d.m.Y H:i", $topics[$i]['post_time']) . "|" . $topics[$i]['forum_name'] . "] " . $topics[$i]['topic_title'];
        $url = ($news) ? $viewtopic_url . "?" . POST_TOPIC_URL . "=" . $topics[$i]['topic_id'] : $viewtopic_url . "?" . POST_POST_URL . "=" . $topics[$i]['post_id'] . "#" . $topics[$i]['post_id'];

        $message = $topics[$i]['post_text'];
        $bbcode_uid = $topics[$i]['bbcode_uid'];
        $message = strip_tags($message);
        $message = preg_replace("/\[.*?:$bbcode_uid:?.*?\]/si", '', $message);
        $message = preg_replace('/\[url\]|\[\/url\]/si', '', $message);
        if($chars > 0) {
                $message = ( strlen($message) > $chars ) ? substr($message, 0, ($chars - 4)) . ' ...' : $message;
        }

        $rdf .= "
<item>
    <title>" . $title . "</title>
    <link>" . $url . "</link>";
//    <pubDate>" . date('r', $topics[$i]['post_time']) . "</pubDate>";

if($chars != 0 && strlen($message)>0) $rdf .= "
    <description>" . htmlspecialchars($message) . "</description>";

$rdf.="
</item>
";
    }
}

// Create RDF footer
$rdf .= "
</rdf:RDF>";

// Output the RDF
echo $rdf;

?>
Benutzeravatar
Markus67
Ehrenadmin
Beiträge: 28346
Registriert: 12.01.2004 16:02
Wohnort: Neuss
Kontaktdaten:

Beitrag von Markus67 »

Hi ...

Code: Alles auswählen

$sql_orderby = $news ? 't.topic_time DESC' : 'p.post_time DESC'; 
ersetze DESC mit ASC :wink:

Markus
Benutzeravatar
vulpes
Mitglied
Beiträge: 17
Registriert: 11.02.2004 08:41
Wohnort: Fuchsbau

Beitrag von vulpes »

hi markus67,

das ist ja spitze, herzlichen dank :D
genau so wollte ich das haben.
da wäre nie drauf gekommen :oops:

[erledigt] :grin:
Benutzeravatar
vulpes
Mitglied
Beiträge: 17
Registriert: 11.02.2004 08:41
Wohnort: Fuchsbau

Beitrag von vulpes »

hi markus67,

alles schön und gut die sache, aber da muss noch
irgendwo ein fehler drin sein. sortieren tut er so wie
ich es haben wollte aber wenn man z.b. "?count=20"
angibt, zeigt er nur die ersten 20 topics an. er zeigt
die letzten gar nicht an, auch wenn da noch zig
geschrieben wurden. das war mir am anfang nicht
gleich aufgefallen weil ich weniger als 50 topics habe.
ich habe auch mit DESC und ASC experimentiert,
hatte aber nicht den gewünschten erfolg gehabt!
muss da evtl. noch was anderes abgeändert werden?
Benutzeravatar
Markus67
Ehrenadmin
Beiträge: 28346
Registriert: 12.01.2004 16:02
Wohnort: Neuss
Kontaktdaten:

Beitrag von Markus67 »

Hi ...

und wenn du das ganze auf DESC zurückänderst wird auch die 2. Seite wieder angezeigt?

Markus
Benutzeravatar
vulpes
Mitglied
Beiträge: 17
Registriert: 11.02.2004 08:41
Wohnort: Fuchsbau

Beitrag von vulpes »

hallo,

danke das du dich noch mal um mein problem kümmerst :D
mit DESC funktioniert das alles, egal ob ich "?count=5" 10
oder 50 eintrage. dann zeigt er auch genau so viele news
an, nur eben halt in verkehrter reinfolge. das neuste ist
dann ganz unten und das erste posting ganz oben. man
muss dann anfangen zu scrollen damit man den letzten
beitrag lesen kann. nun verstehe ich gerade nicht was du
mit 2. seite meinst :oops:
Benutzeravatar
Pabbels
Mitglied
Beiträge: 72
Registriert: 15.12.2004 14:14
Wohnort: Schöppenstedt

Beitrag von Pabbels »

Hallo, hat es hierfür inzwischen eine Lösung gegeben?
Es wäre schön zu erfahren, wie ich die neuesten Beiträge als erstes (oben) angezeigt bekommen!
Für einen entsprechenden Hinweis im voraus vielen Dank!
php.BB 3.3.10
Antworten

Zurück zu „phpBB 2.0: Mod Support“