einsiedler: smarty templates

Habe mal eine Frage, ich weiß jetzt nicht ob es sich so nennt. Jedenfalls möchte ich ein template (genannt: section-card.html) in meine index.php direkt einfügen.

Mein template (section-card.html):


`
<section>
  <h4 class="header-tabelle">{headline}</h4>
  <h5 class="header-tabelle">{subheadline}</h5>
    <p>
      {title}
    </p>
    <p>{title}{subtext}</p>
    <p>{text}</p>
</section>
`

Die Platzhalter die ersetzt werden sollen stehen hier in der userdata.json :

$_UserData = [
    [
        '{headline}' => '<span>MÜLLKunsthalleMünster,</span><span>ASI-Speicher II, Münster</span>',
        '{subheadline}' => 'BLUPPBLUPP, 2012',
        '{title}' => 'Perfor&shy;mance',
        '{subtext}' => '<span>MÜLLKunsthalleMünster,</span><span>ASI-Speicher II, Münster</span>',
        '{text}' => 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.'
    ]
];

Nun meine Frage, da ja sowiso meine index eine .php ist kann ich es doch direkt mein template einfügen.

Zum Beispiel an der Stelle der section class="text"

Ein Ausschnitt meiner index.php:

[ ... ]
<body>
   <main id="main" tabindex="-1">
        <article class="bildstrecke">
          <h3>Abbildungen</h3>
          <section>
            <h4>Meine h4</h4>
            <p>Irgendwie ein Sub-Text...</p>
                <section class="text">
                       <?php
                                $_UserCardsHml = file_get_contents( TEMPLATE_FOLDER_PATH . 'section-card.html' );
                                $jFileContent = file_get_contents('userdata.json');
                                $jObject = json_decode($jFileContent);
                                
                                include_once "make_section.php";

                       ?>
                </section>
          </section>
        </article>
   </main>
</body>
</html>

So sieht meine make_section.php dann aus:

<?php
const TEMPLATE_FOLDER_PATH = './template/';

$_UserCards = array_map(
        function ( $user ) use ( $_UserCardsHml ) {
            $_card = $_UserCardsHml;
            foreach ( $user as $key=>$data )
                $_card = str_replace( '{' . $key . '}', $data, $_card );
            return $_card;
        }
        , $_UserData
    );
?>

Aber da bin ich mir nicht sicher ob alles richtig ist.

Mit der Bitte um Korrektur.

es geht mir darum das Prinzip ersteinmal grundsätzlich zu verstehen.

Gruß der einsiedelnde

Folgende Beiträge verweisen auf diesen Beitrag:

  1. @@einsiedler

    <section>
      <h4 class="header-tabelle">{headline}</h4>
      <h5 class="header-tabelle">{subheadline}</h5>
    

    Falsch!

    Wozu gibt man dir eigentlich Hinweise, wenn du die doch bloß ignorierst und beim nächsten Mal wieder mit demselben fehlerhaften Markup ankommst?

    LLAP 🖖

    --
    „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
    1. Gut, meinetwegen:

      <header>
      		<h3>{headline}</h3>
      		<span>{subheadline}</span>
      </header>
      

      Aber es geht mir um das php gescribbel!

      Gruß T

  2. @einsiedler

    In Deiner userdata.json ist kein json, sondern ein PHP-Array!

    1. Aaaah ...

      meine müsste so aussehen:

      [
          "headline": "<span>MÜLLKunsthalleMünster,</span><span>ASI-Speicher II, Münster</span>",
          "subheadline": "BLUPPBLUPP, 2012",
          "title": "Perfor&shy;mance",
          "subtext": "<span>MÜLLKunsthalleMünster,</span><span>ASI-Speicher II, Münster</span>",
          "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
      ]
      

      Und wie lese ich diese Infos ein?

      Gruß der einsiedelnde

      1. Das machst Du schon oben richtig.

        $jFileContent = file_get_contents('userdata.json');
        $jObject = json_decode($jFileContent);

        Wobei $jObject als Name missverständlich sein kann. Und der Dateipfad hier nur beispielhaft ist.

        1. Hallo djr, hallo Tassilo,

          nein, das macht ihr nicht richtig. Das JSON Format kennt keine Key-Value Arrays, wie PHP. Man muss das als Objekt notieren. Die JSON-Datei muss (für die unten genannte Möglichkeit 2) so aussehen:

          {
              "headline": "<span>MÜLLKunsthalleMünster,</span><span>ASI-Speicher II, Münster</span>",
              "subheadline": "BLUPPBLUPP, 2012",
              "title": "Perfor&shy;mance",
              "subtext": "<span>MÜLLKunsthalleMünster,</span><span>ASI-Speicher II, Münster</span>",
              "text": "Lorem ipsum"
          }
          

          Man kann darüber diskutieren, ob die userdata.json tatsächlich HTML Fragmente enthalten sollte oder ob man noch eine Abstraktionsschicht einziehen sollte. Das ist aber nicht ganz so trivial und hat einige Konsequenzen, darum lasse ich das lieber beiseite.

          Die json Datei verarbeitet man mit

          $userDataFile = file_get_contents('userdata.json');
          $userData = json_decode($userDataFile, true);
          

          Das true als 2. Parameter von json_decode ist wichtig, damit kein PHP-Objekt, sondern eine assoziatives Array entsteht. Der Unterschied im Ergebnis besteht darin, dass man auf die Einträge eines Objekts mit $userdata->headline zugreift, auf ein Array aber mit $userdata["headline"]. Des weiteren kann man die Eigenschaften eines Objekts nicht direkt mit array_map ablaufen, man muss es vorher in ein Array casten. Das kannst Du Dir sparen, wenn Du den JSON-String direkt als Array produzieren lässt.

          Ob man das oben stehende JSON Fragment verwendet, oder die von Tassilo verwendete Folgeidee mit Seite1, Seite2, etc als zusätzliche Schlüsselebene einsetzt, das hängt davon ab, wo die userdata.json steht.

          Möglichkeit 1: die userdata.json steht im Mediaordner. Die arbeit01, arbeit02, ... Ordner sind „Geschwister“ dieser Datei. In diesem Fall sollten die Ordnernamen als zusätzliche Schlüsselebene verwendet werden, und das PHP Script, das die Medien zu ArbeitXX anzeigt, könnte - wie von djr erwähnt - seinen eigenen Namen als Schlüssel verwenden. Das geht aber eigentlich besser, dazu unten mehr. Das JSON schreibt man dann aber nicht so, wie Tassilo es am 20.06.2019 um 00:36 gezeigt hat, sondern so:

          {
             "arbeit01": {
                "headline": "<span>Arbeit 01</span><span>Foo-Location, Dingenskirchen<span>",
                "subheadline": "...",
                "title": "...",
                "subtext": "...",
                "text": "Lorem ipsum"
             },
             "arbeit02": {
                "headline": "<span>Arbeit 01</span><span>Foo-Location, Dingenskirchen<span>",
                "subheadline": "...",
                "title": "...",
                "subtext": "...",
                "text": "Lorem ipsum"
             }
          }
          

          Möglichkeit 2: die userdata.json steht im ArbeitXX Ordner. In diesem Fall würde die zusätzliche Schlüsselebene entfallen und die JSON-Datei so aussehen wie in dem Beispiel zu Beginn dieses Threads. Das arbeitxx.php Script liest die userdata.json dann aus dem gleichen Ordner wie auch die Bilder.

          Welche von beiden Möglichkeiten du wählst, ist deine Entscheidung. Hast Du lieber alle Beschreibungen beieinander in einer Datei (Nachteil: der Ordnername steckt als magischer String im JSON Dokument), oder möchtest Du die Beschreibungen bei den Medien haben (Vorteil: die Zuordnung Medien zu Beschreibung ergibt sich automatisch über den Platz an dem die JSON Datei steht; Nachteil: mehrere JSON Dateien). Ich persönlich würde Möglichkeit 2 für sauberer halten.

          Die eigentliche Galerieanzeige sollte sich dann mit Hilfe des Mediareaders und der userdata.json vollautomatisiert durch eine einzige galerie.php Datei erledigen lassen; die geplanten arbeit01.php, arbeit02.php würden nämlich alle den gleichen Inhalt haben. An galerie.php übergibst Du den Namen der Galerie als Parameter, rufst also bspw. galerie.php?id=1 auf. In dieser PHP Datei setzt du die ID so in den Ordnernamen um:

          if (!isset($_GET['id'])) {
             // keine ID übergeben, Fehler. Beispielhafte Lösung: zurück zur Startpage
             header("Location: /");
             exit;
          }
          $galleryFolder = sprintf("arbeit%02d/", intval($_GET['id']));
          

          Mit diesem Ordner kannst Du den MediaReader initialisieren (new MediaReader("./mediaordner/".$galleryFolder)) und auch die userdata.json einlesen - von wo genau, hängt davon ab, ob Du Möglichkeit 1 oder 2 umsetzt. Für Möglichkeit 1 kannst Du den Wert in $galleryFolder als Schlüssel für die erste Schlüsselstufe verwenden.

          Du bist auf mein Posting von letzter Woche nicht eingegangen: Du hast "smarty templates" als Thread-Titel gewählt. Verwendest Du Smarty? In dem Fall brauchst Du Dir die Mühe mit der händischen Aufbereitung nicht machen, Smarty ist dafür viel besser geeignet.

          Rolf


          sumpsi - posui - clusi

  3. @einsiedler

    smarty templates

    Habe mal eine Frage, ich weiß jetzt nicht ob es sich so nennt.

    Wenn es Dir um die Template-Engine "Smarty" geht:
    die Doku findest Du unter https://www.smarty.net/documentation.

    Wenn es Dir aber, und so scheint es, um eine Eigenentwicklung geht:

    Nun meine Frage, da ja sowiso meine index eine .php ist kann ich es doch direkt mein template einfügen.

    Ja. Aber nicht so, wie von Dir gezeigt.
    Deine Idee geht in die richtige Richtung, nur ist der Code so fehlerhaft, dass er nicht mehr als eine Skizze ist.
    Verfolge die Idee weiter und arbeite die Skizze weiter aus.
    Bei neuen Fragen hilft Dir das Forum hier sicher gerne weiter.

    1. Wie geht es, ich lern am besten durch Beispiele.

      1. Mir ist nicht klar, was Du im Detail vor hast. Davon ist z.B. abhängig was in der make_section.php richtig oder auch falsch ist.

        Was möchtest Du mit dem Code in der make_section.php erreichen?

        1. Also, wenn es wenig Quellcode wäre, könnte es ja auch direkt in der index.php an seinem Platz stehen. Es geht mir eigentlich nur darum, ein template mit individuellen Infos (aus der .json) dort in die index.php einzufügen.

          Ich habe mehrere identische Bildergalerien .html Seiten bei der aus einem Ordner die Fotos ausgelesen werden und in eine section class="images" ausgegeben werden. Darunter befindet sich eine weitere section class="textabout" in der thematisch beschrieben wird worum es bei den Fotos geht. Ich möchte diese Infos in zwei sections unterteilen, das hat nacher auch einen gestalterischen Grund. Deshalb überlege ich ob ich nicht wenn ich also mehrere Bildergalerien habe die "Erläuterungstexte" nicht auch ID abhängig mache und so in der .json alle "Erläuterungstexte" stehen.

          [
          ID="Seite1" [
              "headline": "<span>MÜLLKunsthalleMünster,</span><span>ASI-Speicher II, Münster</span>",
              "subheadline": "BLUPPBLUPP, 2012",
              "title": "Perfor&shy;mance",
              "subtext": "<span>MÜLLKunsthalleMünster,</span><span>ASI-Speicher II, Münster</span>",
              "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
          ],
          ID="Seite2" [
              "headline": "<span>MÜLLKunsthalleMünster,</span><span>ASI-Speicher II, Münster</span>",
              "subheadline": "BLUPPBLUPP, 2012",
              "title": "Perfor&shy;mance",
              "subtext": "<span>MÜLLKunsthalleMünster,</span><span>ASI-Speicher II, Münster</span>",
              "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
          ],
          ID="Seite3" [
              "headline": "<span>MÜLLKunsthalleMünster,</span><span>ASI-Speicher II, Münster</span>",
              "subheadline": "BLUPPBLUPP, 2012",
              "title": "Perfor&shy;mance",
              "subtext": "<span>MÜLLKunsthalleMünster,</span><span>ASI-Speicher II, Münster</span>",
              "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
          ]
          ]
          

          u.s.w.

          Würde das Sinn machen.

          Gruß der misanthrop

          1. FYI: Da es um mehrere Punkte geht, scheibe ich pro Punkt einen eigenen Post.

          2. Zu json:

            Der Einfachheit halber bleibe doch in PHP.

            Tipp: Statt in der userdata.conf.php (so nenne ich sie mal) eine Variable zu definieren $_UserData = […], ist folgender Weg üblicher:

            Die userdate.conf.php returned das Array:

            return [
              'x' => 'Lorem'
            ];
            

            Wodurch das Array an beliebiger Stelle einer belibigen Variable zugewiesen werden kann. Beispiel index.php:

            $data = include 'userdate.conf.php';
            // …
            $data_2 = include 'userdate.conf.php';
            
            1. @@djr

              Zu json:

              Der Einfachheit halber bleibe doch in PHP.

              Nein. Als Datenformat ist JSON durchaus angebracht. Das in PHP zu einem Array zu machen, ist einfach: ein Einzeiler – wie in anderen Sprachen auch.

              Und hier sind wir beim Punkt: Möglicherweise braucht man die Daten auch mal anderswo – in einer anderen Sprache, bspw. JavaScript. Dann ist es gut, wenn man sie in einem allgemein lesbaren Format hat – eben JSON.

              Im JSON sollten allerdings die reinen Daten stehen, kein HTML. Also nicht sowas wie <span> und </span>; auch nicht &shy;.

              LLAP 🖖

              --
              „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
          3. Weiß Dein index.php welche Seite sie bauen soll? Woher? (Stichpunkt routing)

            Folgende Beiträge verweisen auf diesen Beitrag:

          4. Speicherort der "Erläuterungstexte" (bzw. Galerie-Meta-Daten):

            Deshalb überlege ich ob ich nicht wenn ich also mehrere Bildergalerien habe die "Erläuterungstexte" nicht auch ID abhängig mache und so in der .json alle "Erläuterungstexte" stehen.

            Das kannst Du so machen.

            Alternative Überlegung:
            Wenn ich Dich richtig verstehe, dann hast Du pro Galerie ein Verzeichnis für die Bilder. Um die Bilder und die dazugehörigen Meta-Daten beieinander zu haben, könntest Du auch in jedem Verzeichnis eine gallery-data.json (oder gallery-data.conf.php) hinterlegen. Der Verzeichnisname (bzw. der Pfad des Verzeichnisses) ist dann die ID der Galerie.

            $galleryMetaData = include GALLERIES_DIR . '/' . $galleryID . '/gallery-data.conf.php';
            
            1. Genauso habe ich es vor. Pass mal auf: Hier mein html-Schnipsel als Überblick:

              Meine index.php:

              `
              <?php
              	  session_start();
              	  if(!isset($_SESSION['userid'])) {
              		   die('Bitte zuerst <a href="login.php">einloggen</a>');
              	  } 
              	  //Abfrage der Nutzer ID vom Login
              	  $userid = $_SESSION['userid'];
               
              	
                  require_once "make-gallery-4.php";
              ?>
              <!DOCTYPE html>
              <html lang="de">
              <head>
              	<meta charset="utf-8">
              	<title>Mein toller Titel</title>
              	<meta name="description" content="Meine tollen Description Tags">
              	<meta name="viewport" content="width=device-width, initial-scale=1.0">
              	<!--[if lt IE 9]>
              		<script src="http://html5shiv-printshiv.googlecode.com/svn/trunk/html5shiv-printshiv.js"></script>
              	<![endif]-->
              	<link href="./css/style_demo1.css" rel="stylesheet">
              	<style>
              	</style>
              </head>
              <body>
                 <main id="main" tabindex="-1">
              		<article id="arbeit01" class="abbildungsstrecke">
              		  <h3>Abbildungen</h3>
              		  <section class="mediasection">
              			<h4>Meine tolle h4</h4>
              			<p>Eine beliebige Unterzeile...</p>
              				  <section class="mediaoutput">		<!-- Erinnerung: vormals abbildungen -->
              					  <?php
              						  $theMediaReader = new MediaReader("./mediaordner/arbeit02/");
              						  $medias = $theMediaReader->readImagesData();
              						  foreach ($medias as $medium) {
              							  echo $medium->makehtml();
              						  }
              					  ?>
              				  </section>
              		  </section>
              		  <section class="textinfosection">
              			<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p>
              			<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p> 	  
              			<h3>Bildqualität</h3>
              			<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p>
              			<h4>Keine Bildergalerie</h4>
              			<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p>
              			<h4>Technische Informationen</h4>
              		  <	p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p>
              		  </section>
              		</article>		  
                 </main>
              </body>
              </html>`
              

              Du siehst dort : article id="arbeit01", das ist mein ID

              Dieser ID könnte man den Pfad der für > section class="mediaoutput" < wichtig ist also "./mediaordner/arbeit02/" auch in dieser (neuen) .json zuordnen und entsprechend einfügen.

              Wichtiger ist mir allerdings die > class="textinfosection" < der text dort ist je nach arbeit01, arbeit02 ... anders.

              Und sollte je nach dem entsprechend eingefügt werden.

              Wie mache ich das nun? Wie fange ich da an?

              Gruß der misanthrop

              1. Wichtiger ist mir allerdings die > class="textinfosection" < der text dort ist je nach arbeit01, arbeit02 ... anders.

                Und sollte je nach dem entsprechend eingefügt werden.

                Wie mache ich das nun? Wie fange ich da an?

                Den Anfang hast Du doch schon.
                Um weiterzukommen verfolge meine Fragen hier und hier.

                1. O.K., so sieht (z.B.) meine arbeit01.php aus, dann erkennt man mehr (ist ein jpg!).

                  https://tassilosturm.de/mediaordner/sonstige/website_screens/arbeit02.php.jpg

                  Dem article dort gebe ich meine id mit. Die Seite arbeit01.php bekommt somit article id="arbeit01" , arbeit02.php bekommt somit article id="arbeit02" u.s.w.

                  a) In Zeile 35 soll je nach ID der Pfad zur Bildergalerie eingefügt werden.

                  b) Das template "section" mit der Klasse "textinfosection" soll in dem Bereich eingefügt werden und die Platzhalter mit den daten aus der .json eingefügt werden.

                  Meine .json sieht so aus (ein .jpg):

                  https://tassilosturm.de/mediaordner/sonstige/website_screens/json-datei.jpg

                  Meine Frage nun: wie erkenne ich die aktive ID und wie gleicht man das mit den .json Daten ab.

                  ordnerpath wird wie gesagt in Zeile 35 eingefügt.

                  Wie geht das?

                  Gruß der misanthrop

                  1. Ach so, Du arbeitest nicht mit einer index.php die die angeforderte Seite baut, sondern jede Seite ist eine reale PHP-Datei.

                    Also wenn das so ist, dann ist der basename der Datei die von Dir gesuchte "aktive ID". Oder der Dateiname inkl. (Teil-)Pfad. Je nachdem was eindeutig genug ist.

                    Ich nehme an der Basename, also das arbeit01.php von /pfad/zur-datei/arbeit01.php reicht. Auf das .php kann in der ID auch verzichtet werden.
                    Somit brauchst Du die Magische Kontante __FILE__ und die Funktion basename().

                    Auf die ID im HTML-Artikel brauchst Du dich nicht beziehen. Vielmehr kannst Du diese ID mit PHP erzeugen.

                    Wie Du aus dem json ein PHP-Array machst, weißt Du. Die ermittelte "aktive ID" ist dann der key zu den Daten $currentDataArray = allDataArray[$currentID];.

                    1. <?php
                      const LAYOUT_HTML_FILE_PATH = './arbeit01.php';
                      const WIDGETS_FOLDER_PATH = './widgets/';
                      
                      $PHPFilesCtrl = new PHPController( './PHPFiles/' );
                      $aPHPData = $Ordner->ReadImagesData()->KeySort()->Get();
                      $_LayoutHtml = file_get_contents( LAYOUT_HTML_FILE_PATH );
                      $_FiguresHml = file_get_contents( WIDGETS_FOLDER_PATH . 'section.html' );
                      $jFileContent = file_get_contents( 'datei.JSON' );
                      $jObject = json_decode( $jFileContent );
                      $_SectionRendered = array_map(
                      		function ( $DATEIimOrdner ) use ( $_SectionHml ) {
                      			return strtr(
                      					$_SectionHml
                      					, [
                      						'{headline}' => $basename -> headline,
                                  '{subheadline}' => $basename -> subheadline,
                      						'{titel}' => $basename -> titel,
                      						'{subtext}' => $basename -> subtext,
                                  '{text}' => $basename -> text
                      					]
                      				);
                      		}
                      		, $aPHPData
                      	);
                      echo str_replace( '{Section}', implode($_SectionRendered), $_LayoutHtml );
                      ?>
                      

                      O.K. wenn ich das hier jeweils am Kopf meiner arbeit0x.php setzen (würde) , setzt es doch meine Daten (an dem Platzhalter {Section}) ein?

                      Klar da sind noch viele Fehler drin, bitte helf mir mal aktiv , nicht nur mit Links, indem Du es korrigierst.

                      Der Pfad in Zeile 35 ist allerdings der Link zur Bildergalerie, der ist allerdings auch an meine basename (ID) gebunden.

                      Ich verstehe (glaub ich), ich pack die Unterseiten der Mediagalerien in einen Ordner und nutze eine Schleife wieviele php-Dateien in diesem Ordner sind.

                      Bitte zeige mir dies, in einem Beispiel, kein Link.

                      Gruß der misanthrop

                    2. Anmerkung :

                      ich sehe gerade ich habe für meine make-gallery-4.php folgende Daten:

                      Eine "public function": Mit folgenden Infos die villeicht nun auch wichtig sind:

                      global $imgTpl, $jObject;
                              $this->thePath = $path;
                              $this->thePathInfo = pathinfo($path);
                              $this->mediaInfo = $jObject;
                              $this->basename = $this->thePathInfo['basename'];
                              $this->theTemplate = $imgTpl;
                              $this->imgsize = $this->calculateSizes(getimagesize($path));
                      

                      Da könnte doch $path bzw. $thepath interessant sein, oder?

                      Gute n8 der misanthrop

                    3. Bitte zeige es mir genau, das ich es besser verstehe!

                      Gruß der misanthrop

          5. Jetzt zur make_section.php deines Anfangsposts.

            Welche Daten liegen Deines erachtens nach in $_UserCards?

            Aktuell werden diese Daten (aus der $_UserCards) nicht ausgegeben.
            Wie würdest Du das tun?


            Anmerkung: Die Definition der Konstante sollte an eine andere Stelle. Erstens weil man sie in dieser Datei nicht vermutet. Und zweitens Du den make-section-Code sonst nicht noch mal includen kannst ohne einen Error zu bekommen, der sagt, dass die Konstante schon existiert.

            Folgende Beiträge verweisen auf diesen Beitrag:

  4. Hallo einsiedler,

    wenn du schon Smarty Syntax im Template nutzt, dann bereite den Kram doch auch mit Smarty auf.

    Wenn Du in deiner JSON Datei die geschweiften Klammern aus den Schlüsseln entfernst, und die JSON Datei so decodierst, dass ein assoziatives Array dabei rauskommt (ist eine Option von decode), kannst du das Smarty direkt als Input geben. Und dann nimmst du die display Methode von Smarty um es sofort auszugeben, oder fetch, um das Ergebnis erstmal in einen String zu holen.

    Bin das lange Wochenende weg und kann dir darum kein Beispiel machen...

    Rolf

    --
    sumpsi - posui - clusi
  5. Dieser thread läuft wieder einmal ziemlich zäh!

    1. Hi,

      Dieser thread läuft wieder einmal ziemlich zäh!

      Dann verlang doch Dein Geld zurück!

      cu,
      Andreas a/k/a MudGuard

      1. HAHA sehr witzig! -1

  6. es geht mir darum das Prinzip ersteinmal grundsätzlich zu verstehen.

    Vielleicht ist es besser ersteinmal die Idee von Templates zu verstehen.

    Nun meine Frage, da ja sowiso meine index eine .php ist kann ich es doch direkt mein template einfügen.

    Und das ist eben nicht im Sinne dieser Idee. MFG