Smarty + 3 Spalten Layout

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Smarty + 3 Spalten Layout

    Hi,
    also ich arbeite mich z.Z. in Smarty ein und komme auch gut voran. Nun habe ich ein kleines Problem mit einem 3 Spalten Layout.

    index.php

    PHP-Code:
    $page "home.php";
           
    if ( isset(
    $_GET['page']) )
    {
      if ( 
    file_exists$_GET['page'] . ".php" ) )
      {
        
    $page $_GET['page'] . ".php";
      }
      else
      {
        
    $page "error/404.php";
      }
    }
           
    $smarty->assign"Index_Page""" $page );
           
    $smarty->display"index.tpl" ); 
    index.tpl

    PHP-Code:
    <p><center>{include file="navigation.tpl"}</center></p>
    <
    center>{include file="../$Index_Page"}</center
    Wie mache ich nun weiter? Ich bräuchte ja nun noch ein Template für die anderen Seiten( Paramter 'page' ), aber da müsste ich dann mit {php}...{/php} arbeiten, dass finde ich nicht so schön. Wie mache ich das nun richtig?

    Danke

    Gruß

  • #2
    was genau willst du erreichen? dass du einen teil dynamisch einbinden kannst?

    Kommentar


    • #3
      Hi,
      also ich würde gerne das gleiche wie hier machen:
      http://tut.php-q.net/frames.html

      Eben nur mit Templates. In den eingebundenen Datein kann natürlich wieder PHP Code vorkommen. Oder gibt es für sowas inzwischen bessere Ansätze?

      Danke

      Gruß

      Kommentar


      • #4
        Dazu musst du doch aber nicht drei templates in ein anderes Template includen.
        Du kannst doch auch ohne Probleme 2 Templates in eine php file include und also den header und die Navigation (die kann sogar eins werden) und dann einfach das dritte Template durch nen switch ne neue php file includen und da dann imemr das dritte template je nachdem was du brauchst includen.
        Wer mit den Katzen spielt, muss ihr Kratzen vertragen.

        Kommentar


        • #5
          Hi danke für deine Erklärung.
          Hab diese allerdings nicht so ganz verstanden, könntest du das ganze vielleicht nochmal für mich mit einem Beispiel verdeutlichen?
          In meiner Seite gibts übrigens nur 2 Spalten(Content und Navigation).

          Gruß

          Kommentar


          • #6
            In meiner Seite gibts übrigens nur 2 Spalten(Content und Navigation).
            Dann solltest du das auch so schreiben...

            ist aber egal. das prinzip ist das selbe.

            befrei dich mal von spalten. die existieren nur im html/css. brauchst du für die navi überhaupt ein extra template?

            Kommentar


            • #7
              Hi,
              eigentlich brauche ich für die Navigation natürlich kein extra Template, aber ich dachte so wirds übersichtlicher. Trotzdem stehe ich halt noch vor dem Oben genannten Problem. index.php?page=contact

              Nun müsste ich die Datei contact.php inkludieren und ich schätze das sollte ich irgendwie im Template machen, allerdings muss ja auch PHP noch funktionieren usw... Steige gerade nicht mehr so durch

              Gruß

              Kommentar


              • #8
                Hallo


                Also ma von vornherein. Smarty ist stark. Alle Möglichkeiten kenn ich eh nicht. Aber ich würde nie ne GET- Variable von einem Template ausgeben lassen. Die ist in ner php file viel Nützlicher.

                Nun zum 2 Spaltenlayout.

                Du hast eine index.php da drin steht im Prinzip nicht mehr als ein
                PHP-Code:
                $t->display('header.tpl'); 
                also die Navigation die du includest und ein
                PHP-Code:
                switch($pid){
                case 
                "1": include("news.php"); break;
                default: include(
                "news.php"); break;

                Das erste logisch includet das Template. Das zweite verbirgt im Prinzip die Originaldateinamen und erstellt eine url nach dem Muster www.deinedomain.de/index.php?pid=1
                Im Prinzip includet es die news.php

                Dort wird dein zweites Template designed.

                Jetzt musst du das Template nur noch intelligent trennen.

                Erstell ein Template als gesamt. So als würde es nur eine html datei werden sollen. Sprich fang mit html an und hör mit /html auf.

                Wenn du nur ein Zwei-Spalten-Layout hast wirst du höchstwahrscheinlich eine Tabelle erstellen. Da kannst du dann trennen.

                PHP-Code:
                <table>
                <
                tr><td><!--Navigation--></td>
                ###Trennung des Templates###
                <td><!--Hauptteil--></td>
                </
                tr></table
                Den oberen Teil kommt in die 1. Templatedatei die in der index.php desingt wird. Die zweite Templatedatei kommt in die news.php

                Zwei Anmerkungen noch. Du benötigst immer den footer der die Tabelle und die html datei abschliesst. Sprich du darfst dann nur Änderungen im Teil <!--Hauptteil--> vornehmen ansonsten funktioniert es nicht richtig.
                Zweite Anmerkung. Bevor du dich an Smarty wagst solltest du besser mit normalen html Dateien als Templates arbeiten, du nimmst zwar auch eine Trennung von php und html vor aber nicht so strikt bzw. nicht so komplex wie mit html

                So das wars Guten Morgen noch
                Wer mit den Katzen spielt, muss ihr Kratzen vertragen.

                Kommentar


                • #9
                  Nun müsste ich die Datei contact.php inkludieren und ich schätze das sollte ich irgendwie im Template machen, allerdings muss ja auch PHP noch funktionieren usw... Steige gerade nicht mehr so durch
                  machs im PHP. Was meinst du wie das Template-Engines machen, die kein PHP können.

                  Kommentar


                  • #10
                    Hi danke für eure Antworten. Ist es denn nötig das so komisch zu trennen? Wenn ich jetzt an jede Datei das Ende dran hängen müsste ist das ja auch nicht so schön, finde ich.

                    Habs nun so:

                    index.php
                    PHP-Code:
                    <?php   
                            
                    include( "configs/config.inc.php" );
                            
                            require( 
                    $SmartyDir "libs/Smarty.class.php" );
                            
                            
                    $smarty = new Smarty();
                            
                            
                    $smarty->template_dir     =     $SmartyTemplateDir;
                        
                    $smarty->config_dir     =     $SmartyConfigDir;
                        
                    $smarty->cache_dir     =     $SmartyCacheDir;
                        
                    $smarty->compile_dir     =     $SmartyCompileDir;
                            
                        
                    $smarty->assign"Index_Title"$PageTitle );
                        
                    $smarty->assign"Index_Header"$PageHeader );
                        
                            
                            
                    $smarty->display"header.tpl" );

                        if ( isset ( 
                    $_GET['pid'] ) )
                        {

                            switch( 
                    $_GET['pid'] )
                            {
                                case 
                    1:     include( "home.php" );         break;
                                case 
                    2:        include( "help.php" );         break;
                                case 
                    3:     include( "register.php" );     break;
                                default:     include( 
                    "404.php" );         break;
                            }

                        }
                        else
                        {
                            include( 
                    "home.php" );
                        }
                    ?>
                    header.tpl
                    PHP-Code:
                    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                    <
                    html>
                      <
                    head>
                        <
                    title>{$Index_Title}</title>
                        <
                    meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
                      </
                    head>
                      <
                    body>
                        <
                    p></p><h2><center>{$Index_Header}</center></h2></p>
                        <
                    hr color="#0006" size="1" width="80%">
                        <
                    p>
                        <
                    center>
                          <
                    a href="index.php?pid=1">Startseite</a>&nbsp;|
                          <
                    a href="index.php?pid=2">Hilfe</a>&nbsp;|
                          <
                    a href="index.php?pid=3">Registrieren</a>&nbsp;
                        </
                    center>
                        </
                    p>
                        <
                    hr color="#0006" size="1" width="80%"
                    Wie man ja jetzt sieht ist es nach unten noch offen, wenn ich aber jetzt an jede Datei das Ende dran hängen müsste wäre das doch sicher auch nicht das tollste oder gibts da noch einen Trick?

                    Gruß

                    EDIT: HAT SICH ERLEDIGT!!!
                    Zuletzt geändert von cooldie; 05.01.2007, 02:46.

                    Kommentar

                    Lädt...
                    X