PHPbb3 wohin mit php-Code

Sneasel

Lt. Junior Grade
Registriert
Juni 2007
Beiträge
455
Hallo,

gibt es eine Datei die egal wo man sich im Forum befindet immer einbezogen ist?
Bsp: Wenn ich einen Button habe auf der Seite Domain/News.php, der einen PHP-Code aktiviert, dann funktioniert dieser auch nur auf der /News-Seite, weil sich nur in der dem Template zugehörigen PHP-Datei der Code befindet.

Wenn ich jetzt so einen Button in den overall_header stecken will wohin sollte ich dann den Code packen, damit er immer abrufbereit ist.

(Bis jetzt hatte ich nur Buttons die auf 2-4 Seiten vorhanden waren. Dafür ahbe ich dann einfach immer den gesamten COde in die PHP-Dateien kopiert. Leider bräuchte ich jetzt einen Button der immer Funktioniert.)
---> Wohin gehört so ein Code bzw. gibt es eine PHP-Datei die immer eingebunden ist??

MfG Matthias

PS: Ich bin ein anfänger also bitte nicht wundern wenn ich komisches Zeug schreibe :D
 
wie du richtig vermutet hast, muss der code in die overall_header...
alternativ auch in die overall_footer - je nachdem wo er stehen soll.

wo genau, das hängt davon ab, wo du ihn haben willst.
aber selbstverständlich NACH dem body-Tag. ;)

Wichtig, wenn du PHP im Template verwenden willst:
unter "Allgemein -> Server-Konfiguration -> Sicherheit" muss der Punkt "Erlaube PHP in Templates" aktiviert sein.

Beachte dabei auch, dass dies ein erhöhtes Sicherheitsrisiko darstellt!
 
Das Template ist ne html-Datei. Geht das trotzdem wenn ich php erlaube?
Hab gedacht das jedem template in Html eine PHP-Datei zugeordnet wäre in die dann der Code müsste.

EDIT: Habs mal probiert funktioniert aber net? Müsste ich die Endung des Templates in .php ändern?
(Das geht leider net weil die ja an etlichen Stellen per Include einbezogen ist)
 
Zuletzt bearbeitet:
Du kannst php in einer html Datei verwenden.
Umbennen ist wie du schon erkannt hast eher schwer.
Aber mach doch einfach mal irgendwohin wo normal etwas steht folgendes rein:
Code:
<?php echo 'Testme'; ?>
Wichtig ist auch der anfang per <?php und das Ende mit ?> da du ja eigentlich eine HTML-Datei hast bei der der php-Tag noch nicht offen ist.
Dann guckste dir mal den Quelltext an (oder vielleicht ists gleich i-wo auf der Seite sichtbar, je nachdem wo du das halt hinsetzt)

Hab leider PHPbb noch nie benutzt, deshalb kenn ich mich damit nicht aus. Aber mit dem Code dürfte es auf jeden Fall gehen (vielleicht noch die angesprochene Funktion aktivieren?!)
 
Die Option hab ich aktiviert.
Diesen Code hab ich in ne Php-Datei geschrieben und danach diese Datei per <!-- INCLUDE menu.php -->

PHP:
<?php
// Benötigte Dateien und Variablen von phpBB 
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);


// Da wir weiter unten noch einen Avatar anzeigen lassen wollen,
// benötigen wir noch die dazu passende Funktion 
// die in der Datein includes/functions_display.php vorhanden ist.
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Session auslesen und Benutzer-Informationen laden
$user->session_begin();  // Session auslesen
$auth->acl($user->data); // Benutzer-Informationen laden
$user->setup('mods/meine_sprach_datei'); // Sprachvariablen aus eigener Sprach Datei laden

//FAV1URL
$sql = 'SELECT fav_url1 FROM ' . USERS_TABLE . " WHERE user_id = '" . $user->data['user_id'] . "';";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('fav1url', array(
        'FAV_URL1'    => $row['fav_url1'],
    ));
}
$db->sql_freeresult($result);

//FAV2URL
$sql = 'SELECT fav_url2 FROM ' . USERS_TABLE . " WHERE user_id = '" . $user->data['user_id'] . "';";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('fav2url', array(
        'FAV_URL2'    => $row['fav_url2'],
    ));
}
$db->sql_freeresult($result);

//FAV3URL
$sql = 'SELECT fav_url3 FROM ' . USERS_TABLE . " WHERE user_id = '" . $user->data['user_id'] . "';";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('fav3url', array(
        'FAV_URL3'    => $row['fav_url3'],
    ));
}
$db->sql_freeresult($result);

//FAV4URL
$sql = 'SELECT fav_url4 FROM ' . USERS_TABLE . " WHERE user_id = '" . $user->data['user_id'] . "';";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('fav4url', array(
        'FAV_URL4'    => $row['fav_url4'],
    ));
}
$db->sql_freeresult($result);

//FAV5URL
$sql = 'SELECT fav_url5 FROM ' . USERS_TABLE . " WHERE user_id = '" . $user->data['user_id'] . "';";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('fav5url', array(
        'FAV_URL5'    => $row['fav_url5'],
    ));
}
$db->sql_freeresult($result);

//FAV6URL
$sql = 'SELECT fav_url6 FROM ' . USERS_TABLE . " WHERE user_id = '" . $user->data['user_id'] . "';";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('fav6url', array(
        'FAV_URL6'    => $row['fav_url6'],
    ));
}
$db->sql_freeresult($result);

//FAV1ID
$sql = 'SELECT fav_id1 FROM ' . USERS_TABLE . " WHERE user_id = '" . $user->data['user_id'] . "';";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('forumname1', array(
        'FORUMNAME1'    => $row['fav_id1'],
    ));
}
$db->sql_freeresult($result);

//FAV2ID
$sql = 'SELECT fav_id2 FROM ' . USERS_TABLE . " WHERE user_id = '" . $user->data['user_id'] . "';";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('forumname2', array(
        'FORUMNAME2'    => $row['fav_id2'],
    ));
}
$db->sql_freeresult($result);

//FAV3ID
$sql = 'SELECT fav_id3 FROM ' . USERS_TABLE . " WHERE user_id = '" . $user->data['user_id'] . "';";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('forumname3', array(
        'FORUMNAME3'    => $row['fav_id3'],
    ));
}
$db->sql_freeresult($result);

//FAV4ID
$sql = 'SELECT fav_id4 FROM ' . USERS_TABLE . " WHERE user_id = '" . $user->data['user_id'] . "';";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('forumname4', array(
        'FORUMNAME4'    => $row['fav_id4'],
    ));
}
$db->sql_freeresult($result);

//FAV5ID
$sql = 'SELECT fav_id5 FROM ' . USERS_TABLE . " WHERE user_id = '" . $user->data['user_id'] . "';";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('forumname5', array(
        'FORUMNAME5'    => $row['fav_id5'],
    ));
}
$db->sql_freeresult($result);

//FAV6ID
$sql = 'SELECT fav_id6 FROM ' . USERS_TABLE . " WHERE user_id = '" . $user->data['user_id'] . "';";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('forumname6', array(
        'FORUMNAME6'    => $row['fav_id6'],
    ));
}
$db->sql_freeresult($result);
?>
 
Ach das sind wieder deine 6 Favoriten aus dem anderen Thread :D
Hatte dir ja schon geschrieben wie du die 6 Favoriten per for-Schleife zusammenfassen kannst (Aber so gehts natürlich auch...)

Und läuft das jetzt oder nicht?! (Hast ja nur geschrieben dass dus includet hast)

Wenn du tatsächlich das aber mit <!-- INCLUDE menu.php --> machst, dann dürfte das nicht gehen^^
Mit <!-- und --> macht man einen Kommentar. D.h. das ganze wird nicht ausgeführt sondern steht einfach nur so rum.

<?php vorne und ?> hinten und das sollte gehen (vorausgesetzt dein PHP-Skript stimmt)

Alternative zu meiner for-Schleife bzw. deiner Copy&Paste-Variante wäre auch noch das ganze mit nur einer Datenbankabfrage zu lösen:
PHP:
<?php
$sql = 'SELECT fav_url1,fav_url2,fav_url3,fav_url4,fav_url5,fav_url6 FROM ' . USERS_TABLE . " WHERE user_id = '" . $user->data['user_id'] . "'; 
//Strichpunkt hinten kann man sich auch sparen.
//Da fällt mir auf: bist du dir sicher, dass die Syntax deines Statements stimmt?? Deine Hochkommata sind doch mal total falsch?! Hier nochmal mit richtigen Hochkommata, so würd ich es halt schreiben:
$sql = 'SELECT fav_url1,fav_url2,fav_url3,fav_url4,fav_url5,fav_url6 FROM '.USERS_TABLE.' WHERE user_id ='.$user->data['user_id'];
//Die doppelten Hochkommata um $user->data['user_id'] brauchts nicht, weil das sowieso nur ne Zahl ist und kein Text.
?>

Sag mal hast du keinen PHP-Editor mit Syntax-highlightning?? Da dürfte das sofort ins Auge stechen.

edit: Wie du siehst stimmt oben die Farbe meiner Syntax auch nicht, weil ich gleich oben dein Statement gepostet habe.
Hier nochmal nur mein Teil, damit du das gescheid siehst:
PHP:
$sql = 'SELECT fav_url1,fav_url2,fav_url3,fav_url4,fav_url5,fav_url6 FROM '.USERS_TABLE.' WHERE user_id ='.$user->data['user_id'];
 
Also die Buttons funktinieren wunderbar und ich werd die nie wieder anrühren :D

<!-- INCLUDE bla.php --> ist nicht unbedingt nur ein Kommentar (Habs ma bei google nachgelesen finde es jetzt aber net)
(In phpbb3 werden ja auch die Dateien overall_header / footer mit diesem Befehl Includet)
Habs aber auch schon einfach in die Datei kopiert.

<?php und ?> hatte ich auch
das php script habe ich aus meinen anderen Dateien kopiert (da hat es funktiniert ^^)

Wärs nicht möglich dem overall_header einfach eine php-Datei zuzuweisen, in die ich dann den Code pappe?
 
Zuletzt bearbeitet:
Ach lol jetzt weiß ich warum deine Syntax funktioniert^^
Das ist in etwa so gemacht:
PHP:
<?php
$test= 'Text in einfachen Hochkommata' . "Text in doppelten" . "und nochmal";
?>
Sah nur falsch aus, aber geht schon.

Hm mit "<!--" findet man leider bei google nix, weil man so ja auch suchmerkmale rausnimmt usw.
Ich kenns nur als Kommentar.

Also ich weiß nicht ob ich das hier jetzt verstehe: Dein Zeug funktioniert soweit und du möchtest halt deinen eigenen Code noch auslagern?
Dazu schreibste einfach an die enstprechende Stelle in der Datei das include("eigener_Code.php");
Falls an dieser Stelle allerdings eben kein PHP-Tag offen ist musste den noch aufmachen. Kannst ja mal die 10 Zeilen davor und danach posten dann kann ich dir sagen wie du deinen Code auslagern kannst (also einfach den Teil wo dein Code aktuell steht + 10 Zeilen vorher und danach).

War die Syntax wirklich genau so: "<!-- INCLUDE menu.php -->"?? Weil bei nem include gehören auch Klammern rum weil das eine PHP-Funktion ist. Deshalb glaub ich wirklich eher, dass das nur nen Kommentar war...
 
Zurück
Oben