PHP Variabeln in Templates

Alles zu Styles, Templates, Icons und Smilies für phpBB 2.0, sowie allgemeine Designfragen zur Integration von phpBB in bestehende Websites.
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
Agares
Mitglied
Beiträge: 3
Registriert: 14.05.2005 09:58

PHP Variabeln in Templates

Beitrag von Agares »

Hallo,

also, ich habe meine Homepage um das PHPbb Forum "herum" in die Templates geschrieben und alle PHP Bestandteile in die "page_header.php" ausgelagert. Dabei handelt es sich lediglich um eine Abfrage, ob man eingeloggt ist, die entweder den Loginnamen oder die Loginfelder zeigen soll.

Mein Problem ist nun, dass ich die Variabeln $userdata['username'] und $userdata['user_id'] nicht in den Code der Abfrage bekomme. Das direkte reinschreiben der beiden auf PHPbasis, geht absolut nicht. Also habe ich sie über Zuweisungen implementieren wollen.

Das klappt aber auch nur, wenn {username} und {userid} schon in der Template stehen. Nicht aber, wenn sie erst über die page_header.php mitgebracht werden.

Ich habe hier den Quelltextauszug, aus der PHPDatei, welchen ich am Ende dieser geschrieben habe (vor $template->pparse('overall_header');).

Weiß einer wie ich diese Variabeln nun irgendwie "rüber" bekomme?
Mein PHP Latein ist leider nicht allzu groß...
Danke für jegliche Hilfe!

Grüße Agares

Code: Alles auswählen

Inhalt page_header.php
// Zuweisung für Overall_header.tpl

$template->assign_vars(array( 
'username' => $userdata['username'], 
'userid' => $userdata['user_id']
));

// Abfrage Eingeloggt/Ausgeloggt

if ( $userdata['session_logged_in'] )
  {
  $template->assign_var('login', '
    <table border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td><img src="../images/sideline02.jpg" width=1 height=125></td>
        <td><p class="Login">Du bist eingeloggt als 
            <a href="profile.php?mode=viewprofile&u={userid}">{username}</a></p></td>
      </tr>
    </table>');
    }
  else
    {
    ...Loginfelder...
    }
Benutzeravatar
SD582
Mitglied
Beiträge: 307
Registriert: 08.07.2005 13:15
Wohnort: Salzburg
Kontaktdaten:

Beitrag von SD582 »

Hi

Code: Alles auswählen

<a href="profile.php?mode=viewprofile&u={userid}">{username}</a></p></td>
hmmmm, ich kanns momentan nicht ausprobieren, aber ich bin mir ziemlich sicher, daß du hier einfach {....} durch die entsprechende PHP-Variable ersetzen solltest. Hier bist du ja im PHP und damit müssten auch die PHP Variablen richtig aufgelöst und deren Inhalt in den String geschrieben werden.
Nötigenfalls müsstest du den String mit sprintf() oder mittels Stringverkettung (Punkt) aufbauen.

Gruß
Franz
Wer einen Rechtschreibfehler findet, darf ihn ruhig behalten. Ich habe noch genug davon auf Lager.
--- Sendet mir bitte KEINE PMs - Ich bevorzuge richtige email!
mristau2k5
Mitglied
Beiträge: 140
Registriert: 10.05.2005 02:35
Wohnort: Filderstadt

Re: PHP Variabeln in Templates

Beitrag von mristau2k5 »

Agares hat geschrieben:

Code: Alles auswählen

Inhalt page_header.php
// Zuweisung für Overall_header.tpl

$template->assign_vars(array( 
'username' => $userdata['username'], 
'userid' => $userdata['user_id']
));

// Abfrage Eingeloggt/Ausgeloggt

if ( $userdata['session_logged_in'] )
  {
  $template->assign_var('login', '
    <table border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td><img src="../images/sideline02.jpg" width=1 height=125></td>
        <td><p class="Login">Du bist eingeloggt als 
            <a href="profile.php?mode=viewprofile&u={userid}">{username}</a></p></td>
      </tr>
    </table>');
    }
  else
    {
    ...Loginfelder...
    }
Also der Code ist so etwas falsch, das müsste so aussehen

Code: Alles auswählen

Inhalt page_header.php

// Abfrage Eingeloggt/Ausgeloggt

if ( $userdata['session_logged_in'] )
  {
    // Zuweisung für Overall_header.tpl

    $template->assign_vars(array( 
      'username' => $userdata['username'], 
      'userid' => $userdata['user_id']
    ));

    $template->assign_block_vars('switch_show_logged_in', array());
  }
  else
    {
      $template->assign_block_vars('switch_show_login_fields', array());
    }
da die Variablen wohl sowieso nur gesetzt sind, wenn man eingeloggt ist, kann man die direkt in der Abfrage übergeben.

in der template datei sollte dann an geeigneter Stelle dieses stehen.

Code: Alles auswählen

<!-- BEGIN switch_show_login_fields -->
// hier die Loginfelder
<!-- END switch_show_login_fields -->
<!-- BEGIN switch_show_logged_in -->
   <table border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td><img src="../images/sideline02.jpg" width=1 height=125></td>
        <td><p class="Login">Du bist eingeloggt als 
            <a href="profile.php?mode=viewprofile&u={userid}">{username}</a></p></td>
      </tr>
    </table>
<!-- END switch_show_logged_in -->
zur Erklärung, die Blöcke <!-- BEGIN .. --> ... <! END .. --> sind Codeblöcke, die nur angezeigt werden, wenn die entsprechenden Templatevariablen einen Wert haben. also die loginfelder werden nur gezeigt, wenn man ausgeloggt ist.
Agares
Mitglied
Beiträge: 3
Registriert: 14.05.2005 09:58

Beitrag von Agares »

Tausenddank, es geht! Und mit den Blöcken gleich noch etwas gutes dazu gelernt.

DANKE Agares
Antworten

Zurück zu „phpBB 2.0: Styles, Templates und Grafiken“