Hinig: Problem bei HTML/Sprachentrennung

Tagchen

ich trenne PHP Code vom HTML Quelltext und ausserdem speicher ich alle Texte in einer extra Datei ab, da die Seite mal mehrsprachi und leicht übersetzbar werden soll.
Jetzt habe ich allerdings das Problem, dass in einigen Texten Links vorkommen, oder Textpassagen fett geschrieben werden sollen. Das müsste aber dann in den Text rein, womit da wieder HTML Tags drin wären und somit das Design nicht rein in den HTML Dateien bearbeitet werden kann.
Wie würdet ihr das am besten lösen?

Gruß, Hinig

  1. Tagchen Hinig,

    leider läßt sich das nicht vermeiden. Letztlich habe ich auch mal wieder CMS mit PHP für einen Kunden, deren Leute so rein gar keinen Schimmer von HTML hatten, geschrieben. Mittels PHP habe ich dann Textmarken vordefiniert, die zur laufzeit in Links konvertiert wurden (ähnlich dem Link-Konzept hier im Forum).

    Vermeiden liese sich dies nur sehr umständlich über eine entsprechende Indizierung des Textes in einer (seperaten wenn es denn reiner Text in einer Datei sein soll) Datei durch ein array. Ich für meinen Teil habe diesen abstrusen Gedanken nicht weiter verfolgt und dem Kunden eine Liste von HTML-<~> Als Hilfe an die Textfelder gesetzt.

    Eine weitere Möglichkeit stellt noch JS dar, wenn es wie beim Bsp. darum gehen sollte, jemanden Textformatierung ohne HTML-Kenntnisse zu ermöglichen.
    Wenn es aber nur um die schlichte Trennung von Text in Datei geht, ist das natürlich hinfällig.

    Warum muß der Text denn so strikt getrennt sein?

    Gruß aus Berlin!
    eddi

    1. Im Prinzip wäre es ja nicht extrem schlimm, wenn da mal ein bisschen HTML drin wäre, nur muss man dann eben auch hier das HTML jedes Mal anpassen. Das Layout sollte aber rein durch die HTML Templates erstellt werden können. Würde ich den Text jetzt in die Templates schreiben, bräuchte ich für jede Sprache eine Kopie von allen Templatedateien. Das wäre unsinniger Platzverbrauch und Arbeitsaufwand, wenn man bedenkt, dass da vielleicht 4-5 unterschiedliche Templates zum Einsatz kommen werden. Deshalb ist es die einfachste Lösung den ganzen Text in eine Extradatei zu verbannen, die dann pro Sprache nur einmal existieren muss, so braucht man auch nur ein Template pro Sprache.

      1. Re:

        Welche Textauszeichner kämen den in Frage?
        <b> <i> <u>

        oder darüber hinaus auch
        <table> <ul> <ol> <p> <blockquote>

        Gruß aus Berlin!
        eddi

        1. Also eigentlich nur b i u a, wenn ich so nachdenke.
          Aber ich habe bereits eine Funktion geschrieben, die mir Code dieser Art ([b] [u]) entsprechend ersetzt, nur kann ich das hier nicht wirklich anwenden. Denn so kann zb. der Link nicht individuell durch CSS formatiert werden, und das darf eben nicht sein. Der User muss das Aussehen zu fast 100% selbst verändern können. Ein paar Rahmenvorgaben gibt es natürlich, aber im großen und ganzen muss alles per Templates frei gestaltbar sein. Ein ziemlich nervenaufreibendes Ziel, wie ich mittlerweile bemerkt habe :|

          1. Re:

            Aha da liegt der Hund begraben. Da gibt es aber eine nette Möglichkeit zum erstellen:

            Seite 1

            <p>Verweise bitte in der Form " [LINK:VERZEICHNIS/DATEI/LINKNAME " notieren!</p>
            <form action="Seite 2" method="post">
             <textarea name="text"><?php readfile("text.txt")?></textarea>
            </form>

            Seite 2

            <?php
            $h=fopen("text.txt",w);
            fputs($h,$_POST["text"]);
            fclose($h);

            $linkerkenner="[LINK:";
            $t=explode($linkerkenner,$_POST["text"]);

            echo $t[0];
            for($i=1;$i<count($t);$i++)
               {
               $v=explode(" ",$t[$i]);
               $w=explode("/",$v[0]);
               echo "<a href='Seite 3?$i' target='_blank'>$w[2]</a>";
               for($j=1;j<count($v);$j++) {echo $v[$j];}
               }
            ?>

            Seite 3

            <?php if(empty($_POST){?>
            <form action="Seite 3" method="post">
               <input name="attribut_1">
               ~
               <input name="attribut_n">
               <input type="hidden" name="c" value="<?php echo $_SERVER[QUERY_STRING] ?>">
            </form>
            <?php }else{
            $h=fopen("text.txt",r);
            $t=fread($h,filesize("text.txt"));
            fclose($h);

            $linkerkenner="[LINK:";
            $t=explode($linkerkenner,$_POST["text"]);

            $h=fopen("text.txt",w);
            fputs($h,$t[0]);
            for($i=1;$i<count($t);$i++)
               {
               if($_POST["c"]==$i)
                  {
                  $v=explode(" ",$t[$i]);
                  fputs($h,$v[0]."attributengenerierung");
                  for($j=1;j<count($v);$j++) {fputs($h,$v[$j]);}
                  }
               else fputs($h,$t[$i])
               }
            }?>

            Dieser Code dient nur zur Veranschaulichung und ist von mir grade zusammengezimmert worden, bitte durch Vollzug der Gedanken ein funktionierendes Script erstellen.
            Desweiteren muß nach Logik der "attributengenerierung" auch eine Logik für die Ausgabe an Clients erstellt werden.

            Gruß aus Berlin!
            eddi

            1. Danke, ich werds mal probieren.