Seite 1 von 1

PHP Variabeln in Templates

Verfasst: 02.08.2005 16:01
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...
    }

Verfasst: 02.08.2005 16:42
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

Re: PHP Variabeln in Templates

Verfasst: 02.08.2005 17:26
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.

Verfasst: 02.08.2005 17:35
von Agares
Tausenddank, es geht! Und mit den Blöcken gleich noch etwas gutes dazu gelernt.

DANKE Agares