Ankündigung

Einklappen
Keine Ankündigung bisher.

Smarty verschachtelt

Einklappen

Neue Werbung 2019

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

  • Smarty verschachtelt

    Weil mir im offiziellen Smarty Forum wohl niemand helfen will, poste ich mein Problem hier einfach noch mal:

    hallo, momentan bin ich dabei eine website zu programmieren die mit smarty arbeitet. die website ansich läuft ohne probleme mit den bisher erstellten templates. nun habe ich aber vor eine galleryscript zu schreiben das auch auf smarty templates basieren soll und wenn es fertig ist soll es in die website mit eingebunden werden. ist das überhaupt möglich?
    ich meine jetzt das dann später ein template im template angezeigt wird. ich frage mich schon die ganze zeit ob das überhaut geht das die scripte dann noch fehlerfrei arbeiten.
    wie macht ihr das wenn ihr modulorientiert mit smarty programmiert? momentan ist das noch ein rätsel für mich...
    ein anderes stichwort in diesem bereich ist glaub ich auch "verschachtelte templates". ich hoffe man kann verstehen was ich vor habe.

    mfg snatch

  • #2
    Hi..

    also das was du vorhast praktiziere ich schon. Also es ist auf jeden Fall möglich Smarty-Templates zu schachteln.

    Dafür gibt es auch eine ganz einfache Anweisung:

    Code:
    {include file=pfad/aus/template_dir/template/teil.tpl}
    Somit kannst du dir dann die Templates zusammenbauen.
    http://www.fun2stay.de

    Kommentar


    • #3
      ok, wir haben 2 templates. t1 und t2. t2 soll in t1 eigebunden werden. wenn das erfolgreich passiert ist wird t2 in t1 angezeigt. aber was ist wenn ich in t2 dann auf einen link klicke? dann wird dieser link geladen und dargestellt. aber nicht an der stelle an der t2 in t1 dargestellt wurde sondern im ganzen browser. wie kann ich das verhinden?

      wenn z.b. das t1 template die navigation war und t2 (das eingebundenen) der content. wie machst du das dann das die navigation am ende immer noch angezeigt wird?

      wie ist das eigentlich mit dem befehl:
      Code:
      {include file=pfad/aus/template_dir/template/teil.tpl}
      der bindet doch nur das template ein. woher weis smarty dann welche php zu diesem template gehört?

      Kommentar


      • #4
        Würdest du die Frage mal bitte verständlicher formulieren?
        Diese Erweiterung ist EXPERIMENTELL.
        [...]
        Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..

        Kommentar


        • #5
          Zitat von andy
          Würdest du die Frage mal bitte verständlicher formulieren?
          hab die frage editiert. ich hoffe es ist jetzt verständlich...

          Kommentar


          • #6
            Ha viel besser,
            also die Smarty-Include-Funktion akzeptiert auch Variablen, d.h. wenn du in deiner PHP-Datei t1 den PHP-Code für t2 einbindest kannst du dort dynamisch die Datei setzen welche t1 includen soll.
            Diese Erweiterung ist EXPERIMENTELL.
            [...]
            Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..

            Kommentar


            • #7
              und wie is das wenn ich die templates include. das template weis doch nicht zu welcher php datei es gehört. dann kann ich ja nur die template datei öffnen und kann mit aber keine daten weiter verarbeiten, oder liege ich da falsch?

              Kommentar


              • #8
                Also wenn ich dich jetzt richtig verstanden habe, hast du eine PHP-Datei die das Template t1 läd, nun möchstest du dortrein den Content laden?

                Also du musst nur die PHP-Datei für den Content einbinden, in der setzt du dann die Variablen für T2 und setzt die Variable, die den Pfad zum Template t2 enthalten soll.
                Diese Erweiterung ist EXPERIMENTELL.
                [...]
                Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..

                Kommentar


                • #9
                  genau, dass hast du richtig verstanden. genau genommen wird mit t1 die navigation oder besser gesagt das grundgerüst der seite geladen. ich poste hier einfach mal das t1:

                  Code:
                  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
                  <html>
                  	<head>
                  		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                  		<meta name="language" content="de">
                  		<title></title>
                  		<link rel="stylesheet" type="text/css" href="style.css">
                  	</head>
                  	<body>
                  		<div id="navi_all">
                  			<dl id="navi">
                  			<dt>
                  				<table class="navi_table">
                  				{foreach from=$navigation item=navigation}
                  					<tr class="navi_table_tr">
                  						<td class="navi">{$navigation.name}</td>
                  					</tr>
                  				{/foreach}
                  				</table>
                  				</dt>
                  			</dl>
                  			<div id="content_all">
                  				<dl id="content">
                  					<dt id="content_dt">
                  						{$content_head}
                  						<dd id="content_dl_middle">
                  						{$content}
                  						</dd>
                  					</dt>
                  				</dl>
                  			</div>
                  		</div>
                  	</body>
                  </html>
                  an der stelle wo die variable {$content } steht soll dann t2 geladen werden.
                  oder würdest du das alles komplett anders machen?

                  ich will es halt am ende ganz einfach so haben das die z.b. die navigation (t1) auf jeder seite sichtbar und nutzbar ist, auch wenn die navigation nicht von hand in jedes einzelne script rein geschrieben wurde.

                  Kommentar


                  • #10
                    du kannst die ausgabe von smarty auch in einer variable speichern, d.h.
                    PHP-Code:
                    <?php
                    $content 
                    $Smarty->fetch("datei.tpl");
                    //statt
                    $Smarty->display("datei.tpl");
                    ?>
                    Und die Ausgabe dann als Variable einer anderen .tpl datei verwenden
                    PHP-Code:
                    <?php
                    $content 
                    $Smarty->fetch("datei1.tpl");
                    $Smarty->clear_all_assign();
                    $Smarty->assign("inhalt",$content);
                    $Smarty->display("datei2.tpl");
                    ?>

                    Kommentar


                    • #11
                      So, meine index.tpl:
                      Code:
                      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                      <html>
                          <head>
                              <title>Titel</title>
                      {include file="meta.tpl"}
                              <link href="style.css" rel="stylesheet" type="text/css" />
                          </head>
                          <body>
                              <div id="inhalt">
                                  <div id="navigation">
                      {include file="navigation.tpl"}
                                  </div>
                      {include file=$seite}
                              </div>
                              <div id="footer">
                      {include file="footer.tpl"}
                              </div>
                          </body>
                      </html>
                      In der index.php wird die entsprechende Datei includet, die Daten für die Navi aufbereitet und die die index.tpl per display() ausgegeben.

                      Prinzip verstanden?
                      Diese Erweiterung ist EXPERIMENTELL.
                      [...]
                      Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..

                      Kommentar


                      • #12
                        Zitat von andy
                        Prinzip verstanden?
                        ja, an sich habe ich das prinzip versatnden.
                        nur ein paar fragen habe ich noch.
                        füllst du die variable $seite mit der fetch function von smarty?
                        wie sagst du der index.php welches script sie includen muss?

                        und dann habe ich noch eine frage an buhmann.
                        wenn ich datei1.tpl mit fetch in eine variable speicher und dann in datei2.tpl ausgebe. kann ich dann die variablen aus datei1.tpl immer noch benutzen?

                        Kommentar


                        • #13
                          Re: Smarty verschachtelt

                          Zitat von snatch-ic
                          Weil mir im offiziellen Smarty Forum wohl niemand helfen will, poste ich mein Problem hier einfach noch mal:
                          Und Du meinst wirklich, es läge nicht an der Formulierung Deiner Frage sondern nur an denen, die Dir antworten?

                          [blubber gelöscht]

                          wie macht ihr das wenn ihr modulorientiert mit smarty programmiert?
                          Das ist die Frage. Ein Teil macht es richtig, ein Teil verkneift sich smarty und der Rest stellt solche Fragen.

                          momentan ist das noch ein rätsel für mich...
                          Jau! Rätsel will man in jedem Altenheim lesen. "inneres Organ mit 4 Buchstaben" ...

                          ein anderes stichwort in diesem bereich ist glaub ich auch "verschachtelte templates". ich hoffe man kann verstehen was ich vor habe.
                          a. wer kennt und wen interessieren Deine Stichworte?
                          b. darüber, wer das versteht, könntest Du auch per Volksentscheid eine Abstimmung veranstalten.

                          Lustig. Echt lustig!

                          Was, von dem, was Du nicht weißt, willst Du von wem wissen, der weiß, was Du nicht weißt?

                          Kommentar


                          • #14
                            Zitat von snatch-ic
                            füllst du die variable $seite mit der fetch function von smarty?
                            Nein, mit einem Pfad.
                            Zitat von snatch-ic
                            wie sagst du der index.php welches script sie includen muss?
                            In der index.php ist ein Switch, je nachdem was per $_GET rüberkam wird das entsprechende includet.
                            Diese Erweiterung ist EXPERIMENTELL.
                            [...]
                            Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..

                            Kommentar


                            • #15
                              Zitat von ignatz
                              Lustig. Echt lustig!
                              komisch, hat hier irgendjemand die null gewählt oder gerufen "bitte ignatz komm und zeig mir deine braune seite"
                              ich komm irgendwie nicht dahinter was dein beitrag soll...

                              ja, ok. es war vielleicht ein wenig unverständlich formuliert, aber ich war auch schon den ganzen tag am programmieren und da spielen die synapsen nicht unbedingt noch mit wenn man gegen abend oder nacht versucht eine "komplizierte fragstellung" in einem forum zu posten. entschuldige bitte für die menschlichen eigenschaften.
                              trotzdem ist das alles kein grund gleich so auszuticken... ...ich bin auch kein nobody in sachen php nur habe ich momentan noch ein paar schwierigkeiten mit smarty. wie es bei dir war weis ich ja nicht, du konntest das alles wahrscheinlich von heute auf morgen, hmm noch mals entschuldigung... anscheinend bist du ja in sachen smarty von allen hier im board der überprofi. was sich moralisch aber leider nicht wiederspiegelt. naja ich denke du weist selber wo deine fehler sind

                              ps: was der sinn eines forums ist weist du hoffentlich. wenn nicht schreibe ich dir nochmal eine kurze erklärung hier hin: eine forum ist eine platform die menschen die möglichkeit bietet sich auszutauschen oder fragen zu stellen. so viel zu dem. wenn du willst schreibe ich die fragestellung für dich noch mal neu.

                              pps: flas du dich darbüber aufgeregt hast das ich geschrieben habe das im smarty forum keiner antwortet, musst du bedenken das zu der zeit als hier hier im phpforum gepostet habe noch keiner im smarty forum geantwortet hat.
                              also dann, ich hoffe ich habe mit diesem beitrag jetzt keinen streit angezettelt.

                              mir fällt ja gerade erst auf das du erst seit heute dabei bist, ich finds schon krass sich dann so hier aufzuführen. aber naja...

                              @andy: danke. endlich habe ich es verstanden. natürlich gibt es dafür auch noch andere lösungen als die case möglichkeit, nu weis ich wie ich es machen kann. thx für deine zeit und hilfe.

                              snatch

                              Kommentar

                              Lädt...
                              X