Rolf B: PHP in HTML

Beitrag lesen

Hallo borisbaer,

was steht denn in /common/strings/bestiarium/questbezug.html drin? Nur das Wort "Questbezug"? Und was passiert, wenn Du den Inhalt von questbezug.html änderst in "Vorkommen in Abenteuer" oder sowas? Die Datei heißt dann immer noch "Questbezug.html" und irgendwann kommst Du durcheinander.

Eine solche Textauslagerung ergibt Sinn, wenn Du z.B. Mehrsprachigkeit anstrebst. Tust Du das?

Für Mehrsprachigkeit geht man eigentlich so vor, dass man sich mit define eine Menge von Symbolen erstellt, die für Begriffe auf der Seit stehen.

define("L_QUESTREF", "QUESTREF");

Und es gibt einige Include-Dateien, die diesen Symbolen Texte zuordnen, und zwar über ein assoziatives Array:

$language = ARRAY(
   L_QUESTREF => "Questbezug"
);

Auf der eigentlichen Seite steht dann

<?php
// hier $lang festlegen, z.B. durch Userpräferenz

require "languages.inc";
require "language_$lang.inc";
?>

<h1><?= $language[L_QUESTREF] ?>

Das ist jetzt eine primitive Möglichkeit und denkt lange nicht alle Eventualitäten ab.

Wenn es Dir darum NICHT geht, solltest Du eher auf Templates umstellen. Du möchtest für viele Spielobjekte eine Beschreibung und einen Questbezug anzeigen? Dann baue eine entsprechende Variable auf und include den Baustein, der das anzeigt. Man kann sowas eigentlich sehr schön objektorientiert machen, aber da weiß ich nicht wie weit Dich das überfordert.

$TDATA = ARRAY(
   "TITEL" => "Weberin Ulfaduug",
   "BESCHREIBUNG" => "Weberin Ulfaduug ist eine " 
          . "<a href='/foo/bar/spinnendaedra.php'>Spinnendeadra</a>, "
          . "die sich im " 
          . "<a href='/baz/muh/spiralstrang.php'>Spiralstrang</a> "
          . "- einem Teil von...",
   "QUESTREF" => ARRAY(
      ARRAY("HREF"=>"/foo/bar/darkveilphp",
            "NAME"=>"Durch einen dunklen Schleier")
   )
);
include "person_description.php";

In person_description.php setzt Du die Existenz von $TDATA (für Template Data) voraus und baust das HTML dafür auf. Eine ordentliche Strukturierung von TDATA ist Voraussetzung, dass das funktioniert, das setzt etwas Nachdenken voraus und eine einheitliche Struktur der Seiten.

Wenn Du dann das Wort "Questbezug" ändern willst, änderst Du nur das Template.

Es gibt auch fertige Template-Systeme.

Rolf

--
sumpsi - posui - obstruxi