Template -> News, wie funzts?

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

  • Template -> News, wie funzts?

    Hi, ich hab mich ein wenig mit Template systemen angefreundet aber da ich keine lust auf Smarty o.ä. Templatesysteme habe, wollt ich mirn eigenes schreiben.

    Funzt bis bis jetzt wunderbar nur leider zerbrech ich mir scho ca. 4 tage lang den kopf drüber wie ich code von Design trenne, wenn ich z.b. eine news ausgeben will..

    Ich weiß bereits, das die news.php ihr eigenes template brauch, gut.. nun heng ich dabei.. wie kann ich z.b. in der news.html für die news.php den inhalt von beispielsweise $row['title'] ausgeben lassen?
    :O

  • #2
    kein wort verstanden.

    vermutlich möchtest du die komplette ausgabe einen php-scriptes einer templatevariablen zuweisen - ist dem so?

    Kommentar


    • #3
      lol *g* k umformulierung...

      Ich möchte eine news ausgeben

      dafür möchte ich eine news.html mit den tags {title} {text} etc. anlegen, how to make {title} to $row['title'] ?

      Kann ja nicht inem Template php reinhaun..

      nun verstanden? *g*

      Kommentar


      • #4
        Original geschrieben von Flyde
        nun verstanden? *g*
        nein.
        für mich hat eine templatesystem eine methode zum zuweisen, z.b.:
        $template->assign('title', $row['title']);

        darum kann ich dein problem nicht nachvollziehen.

        Kommentar


        • #5
          k versuchen wirs mal mit code beispiel...

          news.php
          PHP-Code:
          $template implode(""file("../template/news.html"));

          $template str_replace("{title}"$row['title'], $template);

          echo 
          $template
          news.html
          PHP-Code:
          <html>
          <
          head></head>
          <
          body>
          {
          title}
          </
          body>
          </
          html
          $row['title'] wäre der inhalt des Titels aus der Datenbank

          Wird niemals funktionieren, da ich in ein Template keine ersetzung durch einen Text aus eine Datenbank machen darf.

          Nun ist meine Frage, wie funktioniert das ganze jetzt?

          Nun klar?

          Kommentar


          • #6
            dafür möchte ich eine news.html mit den tags {title} {text} etc. anlegen, how to make {title} to $row['title'] ?
            PHP-Code:
            $string '<html>
            <head><title>{title}</title></head>
            <body>
            {text}
            </body>
            </html>'
            ;
            function 
            wertZuweisen($arr1,$arr2,$str){
                return 
            str_replace($arr1,$arr2,$str);
            }
            $search = array('{title}','{text}');
            $replace = array($row['title'],$row['text']);

            echo 
            wertZuweisen($search,$replace,$string); 
            Irgendwas in dieser Richtung vllt ?

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              aem wenn ich das richtig verstehe geht das doch so? o_O das kann doch garnicht funktionieren mit replace.. waahh *ausrast*

              K, ich übergehe meine logik mal und probiers aus... wenn es das ist dann.. mh.. lach ich mich aus


              (btw. wenn man die html datei als $string in der php schreibt ises doch keine template sache mehr?.. is ja eher only php un keine trennung von code un design? o_o

              Kommentar


              • #8
                Original geschrieben von Flyde
                Wird niemals funktionieren, da ich in ein Template keine ersetzung durch einen Text aus eine Datenbank machen darf.
                ist klar, vorher musst du schon die db abfragen.

                oder du erweiterst deine "template engine", wenn man einen str_replace() so nennen kann, das sie automatisch db-querys sendet.
                smarty hat soetwas, glaub ich.

                Kommentar


                • #9
                  omg ich schlag mich selber -.-' ne nich wirklich..
                  Aem nja... völlig unnötiger Thread, wobei! Er hat mich dazu gebracht es zu probieren anstatt drüber nachzudenken dases nicht geht.

                  Wie heißt es doch so schön "Probieren geht über Studieren"

                  Aber trozdem thx für die schnellen replys

                  Kommentar


                  • #10
                    achso, war es jahlives bsp. schon?

                    dann zeige ich dir mal die methode aus "meiner" template engine:

                    PHP-Code:
                      /**
                       * Assigns (appends, if multiple called) a replacement to a template variable
                       *
                       * If $var is an array, then using the keys as template variables and the
                       * values as replacements to assign.
                       *
                       * @param string $var - the template variable to replace
                       * @param mixed $value - the value to assign (append)
                       */
                      
                    public function assign($var$value='')
                       {
                        if(
                    is_array($var))
                         foreach(
                    $var as $key => $value)
                                            {
                                             if(!isset(
                    $this->vars[$key]))
                                                 
                    $this->vars[$key]='';
                           
                    $this->vars[$key].=(is_object($value)) ? $value->out() : $value;
                                            }
                        else
                                        {
                          if(!isset(
                    $this->vars[$var]))
                           
                    $this->vars[$var]='';
                          
                    $this->vars[$var].=(is_object($value)) ? $value->out() : $value;
                         }
                       } 
                    parameter können sein: strings, arrays oder andere template-objekte.
                    ps: habe jetzt keine lust, den quelltext einzurücken

                    Kommentar


                    • #11
                      öhm ja dann zeig ich mal meine bescheidene methode *husthust*
                      PHP-Code:
                      <?php
                      //DB
                      include('../class/class.db.php'); 
                      $db = new db();
                      $db->select_db(); 
                      $qry $db->sql("SELECT * FROM title");

                      $row mysql_fetch_array($qry);

                      //PATH'S
                      $template implode(""file("../template/news.html"));
                      $template str_replace("%IMAGE_CAT%""../images/news_cat/"$template);

                      //NEWS
                      $template str_replace("{title}"$row['title'], $template);

                      echo 
                      $template;

                      ?>
                      nja

                      Kommentar


                      • #12
                        dann kannst du ja nur eine "news" ausgeben.
                        musst das ganze schon in eine schleife packen und dann dem endtemplate zuweise.

                        Kommentar


                        • #13
                          stimmt ^^ war auch nur schnell eben für den test.
                          Trozdem ööhhm nja wenn nich noch weitere nützliche tipps vorhanden sind, sollten wa den Thread mal "gedanklich" schließen sonst wirds noch off topic wie wer sein template geschrieben hat .

                          Thx nochmal ^^

                          Kommentar

                          Lädt...
                          X