Verständnisfragen Template-System

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verständnisfragen Template-System

    Hallo,
    ich arbeite mich grade durch das Quake-Net Tutorial und habe da ein paar Verständnis-Fragen zum Template-Aabschnitt (obwohl es eigentlich eher was mit der Syntax zu tun hat).
    Zunächst einmal der Rückgabe doppel/dreifach Array im Beispiel-NewsScript:

    Quellcode

    1. <?php
    2. $a = array();
    3. $a['filename'] = 'news.tpl';
    4. $a['data'] = array();
    5. // Newsdaten irgendwie aus einer Datenbank holen
    6. if (false) {
    7. // Falls ein Datenbankfehler auftrat, kann hier nur simuliert werden, deswegen if (false)
    8. return "Es trat ein Fehler in der Datenbank auf: ...";
    9. }
    10. $news = array();
    11. // Array mit Newsbeiträgen füllen (normalerweise aus der Datenbank)
    12. $newsbeitrag = array();
    13. $newsbeitrag['Titel'] = 'Neue Homepage';
    14. $newsbeitrag['Datum'] = '2008-01-01 00:00:00';
    15. $newsbeitrag['Inhalt'] = 'Pünktlich zum Neujahr starten wir mit einer neuen Homepage.';
    16. $news[] = $newsbeitrag;
    17. $a['data'][b]['news'][/b] = $news;
    18. return $a; // nicht Vergessen, sonst enthält $ret nur den Wert int(1)
    19. ?>
    Alles anzeigen

    Warum dort das der zweite Array-Name? Das ganze würde doch auch funktionieren mit "$a['data']=$news;"
    Klar, man müsste dann im Template auch den Namen ändern, aber auch "foreach ($data as $beitrag) {" müsste doch eigentlich funktionieren.
    Ist das nur wegen der Ästhetik gemacht worden? Oder gibt es einen technischen Zusammenhang?

    Dann hätt ich noch eine Frage zum Template selbst:

    Quellcode

    1. <?php
    2. /*
    3. * Daten:
    4. * 'news' -- Array mit Newsbeiträgen mit folgendem Aufbau
    5. * Array(
    6. * 'Titel', -- Der Titel der News
    7. * 'Datum', -- Erstelldatum
    8. * 'Inhalt' -- Inhalt der News
    9. * )
    10. */
    11. [b]?>[/b]
    12. [b]<?php[/b] if (count($data['news'])) { [b]?>[/b]
    13. [b]<?php[/b] foreach ($data['news'] as $beitrag) { ?>
    14. <h2><?php echo htmlspecialchars($beitrag['Titel']); ?></h2>
    15. <p class="beitrag">
    16. <span>Geschrieben am <?php echo htmlspecialchars($beitrag['Datum']); ?></span>:
    17. <?php echo htmlspecialchars($beitrag['Inhalt']); ?>
    18. </p>
    19. <?php } [b]?>[/b]
    20. [b]<?php[/b] } else { ?>
    21. <p class="info">
    22. Es sind keine News vorhanden
    23. </p>
    24. <?php } ?>
    Alles anzeigen

    Dort wird in jeder Zeile in der sich PHP-Code befindet erst ein PHP-Tag geöffnet "<?php" und dann am Ende der Zeile wieder geschlossen "?>", sofern dazwischen HTML-Code steht, kann ich das ja nachvollziehen, aber manchmal folgt einfach auf einen schleißenden PHP-Tag in der nächsten Zeile wieder ein öffnender. Hat das einen besonderen Grund? Oder könnte man die hier markierten Tags auch einfach weg lassen?

    Hoffe die Fragen sind nicht zu dämlich :)

    Edit: Hm, das mit dem Markieren im Quelltext will iwie nicht so wie ich... die [b ] [/ b] Tags dazwischen sollten eigentlich einzelne Bereiche hervorheben und gehören nicht zum Code...
  • Ok, danke!
    Ich hab übrigens durch ein paar Experimente raus gefunden, dass es doch einen Grund für $a['data']['news'] gibt. So lange man nur die News-Beiträge überträgt, ist das unnötig. Sinnvoll wird es, wenn man noch weitere Daten übergeben möchte. Zum Beispiel $a['data']['text'] = 'foo bar!';.

    Danke für die Aufklärung! Dann auf zum nächsten Kapitel.

    Ich komme wieder! (Drohung ;) )