Einen bestimmten Forum Post auf einer externen Seite anzeige

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
shadow25990
Mitglied
Beiträge: 6
Registriert: 09.07.2012 11:28

Einen bestimmten Forum Post auf einer externen Seite anzeige

Beitrag von shadow25990 »

Hi,

wie schon der Betreff sagt, versuche ich, auf meiner homepage einen bestimmten Forumpost von meinem phpBB3 3.1.2 Forum anzeigen zu lassen.

Ich bin auch schon Soweit, das ich den Forumpost sehe, aber halt ohne BB codes.

Mit dem code: http://pastebin.com/kN4WmTNx sehen ich folgendes:

Code: Alles auswählen

Test

Dies ist ein Formatierungstest

[b:3vrmuh3t]fett[/b:3vrmuh3t]

[color=#804000:3vrmuh3t]andere Farbe [/color:3vrmuh3t][phpBB Debug] PHP Notice: in file /var/customers/webs/nastrandir/nachtraid/druide_eule.php on line 35: Undefined variable: bbcode_bitfield
[phpBB Debug] PHP Notice: in file [ROOT]/includes/bbcode.php on line 136: Undefined index: bbcode_bitfield
[phpBB Debug] PHP Notice: in file [ROOT]/phpbb/template/twig/twig.php on line 152: Undefined index: style_path
[phpBB Debug] PHP Notice: in file [ROOT]/phpbb/template/twig/twig.php on line 155: Undefined index: style_parent_id
das erste echo zeigt mir also noch den Post vom Forum an.
Das sollte es normalerweise durch den BB Code gehen und es dann mit BBcodes ( in Farbe etc ) angezeigt werden.
Aber soweit kommt er nicht.

Hab mir die wiki dazu angeschaut und auch schon einiges probiert.
Aber ich komm einfach zu keiner Lösung.

Wäre sehr dankbar, wenn ihr mir das so umschreiben könntet, das es auch funktioniert :)

MFG Shadow
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: Einen bestimmten Forum Post auf einer externen Seite anz

Beitrag von HabNurNeFrage »

Hi,

Du hast es schon fast geschafft

Die Zeile include($phpbb_root_path . 'includes/bbcode.' . $phpEx); ist nicht nötig.
In functions_content.php die Funktion generate_text_for_display() näher anschauen und den Text damit ausgeben.
Bei der Ausgabe des Textes durch diese Funktion werden die bbCodes umgewandelt.
Deinen Text aus der Datenbank einfach als Argument (sagt man das so?) übergeben.

LG
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
Benutzeravatar
Elsensee
Ehemaliges Teammitglied
Beiträge: 832
Registriert: 19.05.2010 15:14
Wohnort: Hamburg
Kontaktdaten:

Re: Einen bestimmten Forum Post auf einer externen Seite anz

Beitrag von Elsensee »

Hey, :wink:

im phpBB Development Wiki gibt es eine schöne Vorlage zum Einbinden von Seiten in die Homepage: Vorlage für in phpBB3 eingebundene Seiten
Die war zwar noch für phpBB 3.0.x gedacht, stimmt aber zu großen Teilen so noch überein. :)

Der Anfang war also schon mal ganz gut:

Code: Alles auswählen

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : 'forum/phpBB3/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx); 
In der Regel benötigt man aber auch noch das User-Management, was direkt danach kommt:

Code: Alles auswählen

$user->session_begin();
$auth->acl($user->data);
$user->setup(); 
Ein $db-Objekt musst du nicht extra erstellen - durch die Einbindung der common.php steht dir bereits eines zur Verfügung. :wink:
Ich liebe dieses Objekt. :D

Jetzt musst du natürlich den ganzen Mist aus der Datenbank holen. Aber du musst nicht mehr holen, als nötig. ;)

Code: Alles auswählen

$sql = 'SELECT post_text, bbcode_uid, bbcode_bitfield, enable_bbcode, enable_smilies, enable_magic_url
    FROM ' . POSTS_TABLE . '
    WHERE post_id = 1';
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

if (!$row)
{
    // Beitrag konnte nicht gefunden werden - tu was du willst ;)
} 
Die Flags müssen nun noch zusammengebaut werden:

Code: Alles auswählen

$flags = (($row['enable_bbcode']) ? OPTION_FLAG_BBCODE : 0) + (($row['enable_smilies']) ? OPTION_FLAG_SMILIES : 0) + (($row['enable_magic_url']) ? OPTION_FLAG_LINKS : 0); 
Und nun gibt es in der includes/functions_content.php eine nette Funktion namens generate_text_for_display(); die das Parsen für dich komplett erledigt. :grin:

Code: Alles auswählen

$text = generate_text_for_display($row['post_text'], $row['bbcode_uid'], $row['bbcode_bitfield'], $flags); 
Und dann solltest du in der Variable $text schön geparsten Text mit HTML-Code und so bekommen.

EDIT:
@HabNurNeFrage: Ich war gründlicher :P :D
Posts mostly powered by GitHub and phpBB.de Cross-Reference

2015-03-20 - Never forget 8)
shadow25990
Mitglied
Beiträge: 6
Registriert: 09.07.2012 11:28

Re: Einen bestimmten Forum Post auf einer externen Seite anz

Beitrag von shadow25990 »

Ein einen riesen dank an euch beide.
Endlich klappt es:)

danke danke danke:)
shadow25990
Mitglied
Beiträge: 6
Registriert: 09.07.2012 11:28

Re: Einen bestimmten Forum Post auf einer externen Seite anz

Beitrag von shadow25990 »

Hey,

Sorry das ich noch einmal eine frage dazu habe, aber wenn ich jetzt statt einem, 7 Posts abfragen möchte, sagen wir , post_id 1, 4, 5, 7,8,9, 10 brauch man bestimmt keine 7 sql abfragen um das zu bewerkstelligen.

Hier noch einmal die fertige Syntax dank euch :) :

Code: Alles auswählen

$sql = 'SELECT post_text, bbcode_uid, bbcode_bitfield, enable_bbcode, enable_smilies, enable_magic_url
    FROM ' . POSTS_TABLE . '
    WHERE post_id = 1';
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

if (!$row)
{
    // Beitrag konnte nicht gefunden werden - tu was du willst ;)
} 

$flags = (($row['enable_bbcode']) ? OPTION_FLAG_BBCODE : 0) + (($row['enable_smilies']) ? OPTION_FLAG_SMILIES : 0) + (($row['enable_magic_url']) ? OPTION_FLAG_LINKS : 0); 
           
$allgemein = generate_text_for_display($row['post_text'], $row['bbcode_uid'], $row['bbcode_bitfield'], $flags); 
mit :

Code: Alles auswählen

SELECT post_text, bbcode_uid, bbcode_bitfield, enable_bbcode, enable_smilies, enable_magic_url FROM `phpbb_posts` WHERE post_id=1 OR post_id=2 OR post_id=3 OR post_id=4 OR post_id=5 OR post_id=6 OR post_id=7
kommt schon mal das richtige ergebnis raus laut mysql.
damit wäre dann $result ein array mit 7 Dimensionen hieß das glaube ich oder ?^^..

also wäre dann

Code: Alles auswählen

$flags = (($row['enable_bbcode']) ? OPTION_FLAG_BBCODE : 0) + (($row['enable_smilies']) ? OPTION_FLAG_SMILIES : 0) + (($row['enable_magic_url']) ? OPTION_FLAG_LINKS : 0); 
dann mit der ersten id so:

Code: Alles auswählen

$flags[0] = (($row[0]['enable_bbcode']) ? OPTION_FLAG_BBCODE : 0) + (($row[0]['enable_smilies']) ? OPTION_FLAG_SMILIES : 0) + (($row[0]['enable_magic_url']) ? OPTION_FLAG_LINKS : 0); 
Und die 0 müsste hochzählen bis 6 :O

damit wäre $flags automatisch ein array

somit sieht es dann folgender maßen aus:

Code: Alles auswählen

$allgemein = generate_text_for_display($row[0]['post_text'], $row[0]['bbcode_uid'], $row[0]['bbcode_bitfield'], $flags[0]);
$zweigemein = generate_text_for_display($row[1]['post_text'], $row[1]['bbcode_uid'], $row[1]['bbcode_bitfield'], $flags[1]); 
usw.

Ich hoffe ich liege annähernd richtig und ihr wisst was ich meine ;D
Könnt ihr mir noch mal zeigen wie es in dem fall aussehen muss?^^


danke schonmal :)
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Re: Einen bestimmten Forum Post auf einer externen Seite anz

Beitrag von D@ve »

Ganz habe ich nicht verstanden, was Du möchtest... Aber sql_fetchrow() gibt eigentlich immer nur einen Datensatz des Querys aus.
Daher musst Du das nochmal in eine Schleife setzen...

Code: Alles auswählen

$result = $db->sql_query($sql)

while ($row = $db->sql_fetchrow($result));
{
  //hier kannst Du mit dem $row Array arbeiten...
} 
There are only 10 types of people in the world: Those who understand binary, and those who don't
Benutzeravatar
Elsensee
Ehemaliges Teammitglied
Beiträge: 832
Registriert: 19.05.2010 15:14
Wohnort: Hamburg
Kontaktdaten:

Re: Einen bestimmten Forum Post auf einer externen Seite anz

Beitrag von Elsensee »

Genau. Alles ab den Flags muss dan quasi in die while-Schleife rein und dann läuft das. :)
Posts mostly powered by GitHub and phpBB.de Cross-Reference

2015-03-20 - Never forget 8)
shadow25990
Mitglied
Beiträge: 6
Registriert: 09.07.2012 11:28

Re: Einen bestimmten Forum Post auf einer externen Seite anz

Beitrag von shadow25990 »

Habt ihr eine Ahnung warum das jetzt auf meiner externen Seite angezeigt wird ?

Code: Alles auswählen

[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 1068: Cannot modify header information - headers already sent by (output started at /var/customers/webs/nastrandir/nachtraid/index.php:444)
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 1068: Cannot modify header information - headers already sent by (output started at /var/customers/webs/nastrandir/nachtraid/index.php:444)
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 1068: Cannot modify header information - headers already sent by (output started at /var/customers/webs/nastrandir/nachtraid/index.php:444)
in meiner index.php Zeile 444 ruf ich die datei auf, welche auf das phpbb3 forum / datenbank zugreift.
Wird denke ich mal an dem hier liegen: $user->session_begin();

Aber ohne dieser Zeile funktioniert der code nicht mehr :O .
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Re: Einen bestimmten Forum Post auf einer externen Seite anz

Beitrag von D@ve »

Normalerweise taucht das nur auf, wenn schon Daten an den Browser gesendet wurden. Das sollte beim Aufruf von session_begin() eigentlich nicht der Fall sein.

Müsstest mal schauen, ob Du in Deiner Datei irgendwo noch leerzeichen vor <?php bzw. nach ?> hast.
Eventuell ist es auch einfach eine PHP-Fehlermeldung die an den Browser gesendet wird und diese Warning auslöst.

Gruß, Dave
There are only 10 types of people in the world: Those who understand binary, and those who don't
Antworten

Zurück zu „Extension Bastelstube“