Templatezuordnung

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

  • Templatezuordnung

    Hallo Leute,

    ich möchte mich gerne etwas mehr mit ->Templates<- beschäftigen
    und habe nur eine kurze Frage.

    Ich möchte gerne der Variabel {rightnav} eine Templatedatei zuordnen
    und habe es wie folgt ausprobiert :
    PHP-Code:
    58 $rightnav->set_file("rightnav""mainlayout/right_navigation.tpl.html");
    59 $tpl->Insert("{rightnav}"$rightnav); 
    Hier sollte eigentlich der Variabel {rightnav} die Templatedatei
    -> right_navigation.tpl.html <- zugeordnet werden, jedoch scheint
    es nicht zu klappen denn ich bekomme folgende Fehlermeldung :
    Fatal error: Call to a member function on a non-object in /index.php on line 58
    Was habe ich falsch gemacht ?

    Gruss und Danke Ela

  • #2
    Re: Templatezuordnung

    Original geschrieben von manuelakersten

    Was habe ich falsch gemacht ?
    du hast die Fehlermeldung nicht gelesen, bevor du hier postet

    Kommentar


    • #3
      Klar habe ich SIe gelesen aber nicht verstanden - Sorry.
      Ich dachte zuerst das der Pfad nicht stimmt und er die Datei
      nicht findet, aber er findet Sie.

      Kommentar


      • #4
        die Fehlermeldung besagt, dass du Methodenfuntion von nicht existierenden Objekt anwendest. D.h. im Klartext: du hast das Objekt noch garnicht instanziiert.

        Kommentar


        • #5
          Ahhhh, verstehe ich nicht !
          Wie gesagt mein erster Versuch, kannst Du mir da nicht ein bisschen helfen,
          habe auch schon das Forum durchsucht und nicht wirklich was gefunden.

          Und im PHP-Handbuch habe ich unter set_file() nicht gefunden,
          jedenfalls nichts was mit Template zu tun hat.

          Kommentar


          • #6
            aber dann benutzt Du jetzt eine fremde Klasse oder wie?
            Weil PHP hat von hausaus keine Templatefunktionen oder Klassen...

            wie kommst Du auf:

            PHP-Code:
            58 $rightnav->set_file("rightnav""mainlayout/right_navigation.tpl.html");
            59 $tpl->Insert("{rightnav}"$rightnav); 
            das hast Du Dir ja nicht aus der Nase gesogen, weil dann wüßtest Du was zu tun ist.
            Also wo hast Du es kopiert?

            Dann könnte man eher herrausfinden wo das ganze herkommt und welche Klasse es ist. Aufjedenfall fehlt Sie bei Dir im Script
            [Test] MySQL cli Emulator

            Kommentar


            • #7
              Ich habe mir ein CMS-Script gekauft was auf Templates aufgebaut ist,
              jedoch gibt es bei diesem nur ein Template das wie folgt aufgebaut ist.

              template.htm :

              Head, Linke Navigation, Content, Rechte Navigation, Food

              Es wird nur das Content ersetzt durch neu Inhalte und der rest bleibt immer gleich, nun möchte ich gerne eigene Sachen im Content anzeigen
              lassen ( z.B. externe Scripte ) und muss dafür die Rechte Navigation ausbelden um mehr Platz im Mittleren ( Content )-Bereich zu bekommen.

              In PHP wäre das überhaupt kein Problem, das kann ich inzwischen alles
              jedoch handelt es sich ja hier um eine HTML-Datei in der ich kein PHP einbinden kann wegen der Endung *.htm .

              Also habe ich mir gedacht, dass ich das rechte Menü als Template in eine externe Datei schaffe, in der Steuerdatei des Templates kann ich ja dann z.B. -> rechtsnavi = 0 // bei 0 ausblenden bei 1 einblenden
              angeben da ja PHP und in der Index-Datei in der die Templates definiert werden 'ne Schleife einfügen, dass wenn rechtsnavi = 0, dann soll die definition nicht erfolgen und auch keine rechte Navi angezeigt werden.

              Ich denke dieses ist einfacher als das ganze Script um zu bauen.

              Den geposteten Ausdruck habe ich aus dem Script 'apportal' in dem diese Funktion funktioniert, jedoch habe ich halt nicht so viel Ahnung von Templates und bin ein bisschen nach Logig vorgegangen.

              $rightnav->set_file("[COLOR=red]rightnav[/COLOR]", "mainlayout/right_navigation.tpl.html");
              // hier dachte ich wird die externe Datei der Variabel 'rightnav' zugewiesen

              $tpl->Insert("{rightnav}", $rightnav);
              // und hier wird der Inhalt der Externen Datei dem {rightnav} zugewiesen.

              Was ich hier nicht verstehe ist im ersten Syntax das markierte rightnav !

              Kommentar


              • #8
                ja ich gehe gerne auch nach Logig, wo liegt das nochmal?

                SCNR


                Ok, sorry, also weiter:
                im ersten Beitrag hattest Du folgende Fehlermeldung:
                PHP-Code:
                Fatal errorCall to a member function on a non-object in /index.php on line 58 
                hast Du mittlerweile eine Idee was das bedeuten könnte?
                Das nötige Objekt fehlt bzw. ist noch nicht instanziiert wie asp2php Dir schon sagte.
                Informier Dich erstmal ein wenig über Objekte in PHP, z.B. hier:
                http://de3.php.net/manual/de/language.oop.php
                http://cgi.tu-harburg.de/~rztmbr/Kur...p_objects.php3
                http://www.usegroup.de/software/phpt...d_objekte.html
                http://www.devmag.net/webprog/php_oop_1.htm

                und hier gibts noch viel viel mehr
                http://www.google.com/search?hl=de&i...&q=php+objekte

                Ich weiß dass Dir das direkt nicht weiterhilft aber eigentlich schon, denn wenn ich das hier lese :
                In PHP wäre das überhaupt kein Problem, das kann ich inzwischen alles
                und dann die Frage ... ähhm gut, lassen wir das
                [Test] MySQL cli Emulator

                Kommentar


                • #9
                  Ohh tschuldigung mit der Aussage
                  In PHP wäre das überhaupt kein Problem, das kann ich inzwischen alles
                  Meinte ich natürlich nicht, dass ich PHP perfekt kann sondern
                  dass ich mit PHP Menüs ein und Ausblenden kann, was ich selber
                  schon in einigen Scripte benutzte.

                  Leider habe ich auch keinerlei Erfahrungen mit Klassen in PHP
                  daher helfen mir die Links nicht wirklich weiter - aber danke !

                  Ich werde mich auch damit noch beschäftigen müssen,
                  aber ich muss irgendwie diese Webseite ins Netz stellen können
                  und dazu benötige ich halt diese Funktion.

                  Könnt Ihr mir nicht ein bisschen mehr auf die Sprünge helfen
                  denn ich weis nicht einmal was -> instanziiert <- bedeutet.

                  Ich verspreche dann auch dass ich mich mit diesem Thema
                  mehr beschäftigen werde.

                  Kommentar


                  • #10
                    In PHP wäre das überhaupt kein Problem, das kann ich inzwischen alles
                    Meinte ich natürlich nicht, dass ich PHP perfekt kann sondern
                    dass ich mit PHP Menüs ein und Ausblenden kann, was ich selber
                    schon in einigen Scripte benutzte.
                    achso, aber Du meinst schon PHP. Nicht dass Du es vielleicht mit JavaScript verwechselst? Also dynamisch Menüs ein und ausblenden hört sich eher wie Clientseitig an, also dass es beim Benutzer passiert und nicht auf dem Server.

                    Leider habe ich auch keinerlei Erfahrungen mit Klassen in PHP
                    daher helfen mir die Links nicht wirklich weiter - aber danke !
                    deswegen habe ich Dir eigentlich die Links gegeben, dachte eigentlich dass das alles totale Anfänger Tutorials waren?! Naja kann mich auch täuschen.
                    ok, dann das hier -> http://tut.php-q.net/klassen.html (hatte es irgendwann mal überflogen aber ich meine schon dass alles sehr simpel und gut erklärt ist)
                    Da brauchst Du natürlich schon PHP Grundlagen bzw. vielleicht auch ein wenig mehr. Und wenn ich z.B. diesen Beitrag oder hier lese habe ich so meine Zweifel.
                    Ist nicht bös gemeint nimm Dir lieber ein wenig Zeit und büffel nochmal die Grundlagen durch bevor Du "auf die schnelle" eine Seite ins Netz stellst. Im Endeffekt hast Du doch mehr davon
                    [Test] MySQL cli Emulator

                    Kommentar


                    • #11
                      denn ich weis nicht einmal was -> instanziiert <- bedeutet.
                      bedeutet: eine instanz erzeugen

                      also ... eine instanz der tpl-klasse, so daß du mit ihr arbeiten kannst .. (wie erklärt man das bitte?)
                      PHP-Code:
                      $tpl = &new $deinTPL(...); 
                      ähm, wenn du
                      die Rechte Navigation ausbelden
                      willst, hast du mal versucht, im template (html mit platzhaltern) einfach den block zu entfernen? wie reagiert das tpl-system?

                      in der Steuerdatei des Templates kann ich ja dann z.B. -> rechtsnavi = 0 // bei 0 ausblenden


                      ähm, wie lautet das aktuelle problem?

                      [ ] call to a member-function on an unknown ...
                      [ ] was anderes
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar


                      • #12
                        [X] ist nicht bekannt
                        [Test] MySQL cli Emulator

                        Kommentar


                        • #13
                          [x] $rightnav ist falsch, das ding gibt's nicht, schätzungsweise noch nichtmal als "normale" variable
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            zu NielsRunge :
                            1.) selbstverständlich meine ich PHP
                            2.) zu diesem Beitrag habe ich leider keine wirkliche Antwort erhalten, daher habe ich aufgegeben und werde es wohl in der DB oder Textdatei zwischenspeichern.
                            3.) und bei dem anderen Post, ok war mein versehen habe es aber dann geschaft.
                            4.) Klar büffel ich gerne habe ich mir vorgenommen um die Seite anders zu gestalten, jedoch muss ich diese wenigstens so ins Netz stellen, dass diese funktioniert und wenn auch nur auf 'NOTSTROHM' da viel davon abhängt :-)

                            zu derHund :
                            danke dass Du dich der Sache angenommen hast und mir wenigstens ein paar Fragen stellst.

                            ich habe die Datei 'template.htm' in der die ganze Seite gespeichert ist
                            und ich habe diese nun mal auseinandergefummelt.

                            Nun habe ich den Quelltext der für die rechte Menüseite zuständig ist isoliert und aus der Datei template.htm entfernt. Dann wird die Seite ganz normal aufgerufen jedoch ohne die besagte rechte Navigation das bedeutet das hier eigntlich nichts im Wege steht diese Funktion die ich haben möchte dort ein zu fügen.

                            hier habe ich mal einen Ausschnitt aus der index.php in der die
                            Templates zugewiesen werden.

                            PHP-Code:
                            (...)
                            $tpl =& new Template("mainlayout/".$template."");

                            $rightnav->set_file("rightnav""mainlayout/right_navigation.tpl.html");
                            $tpl->Insert("{rightnav}"$rightnav);

                            $tpl->Insert("{pversion}"$prover);
                            $tpl->Insert("{usergesamt}"$userges); 
                            $tpl->Insert("{threads}"$themeges); 
                            $tpl->Insert("{posts}"$posts);
                            (...) 
                            Nochmal ich dachte mit
                            PHP-Code:
                            $rightnav->set_file("rightnav""mainlayout/right_navigation.tpl.html"); 
                            weise ich den HTML-Inhalt der Variabel '$rightnav' zu
                            und bei
                            PHP-Code:
                            $tpl->Insert("{rightnav}"$rightnav); 
                            füge ich den Inhalt von $rightnav über die Variabel {rightnav}
                            in die Templatedatei -> $tpl =& new Template("mainlayout/".$template."");
                            ein aber scheinbar habe ich mich geiirt.

                            Die Steuerdateien für die externen Programme im Content sehen wie folgt aus ( habe ich ja auch hinbekommen )

                            z.B. html_editor.php
                            PHP-Code:
                            <?php 
                             ob_start
                            ();
                              
                            $seite 'http://www.xyz.de/htmleditor';
                              
                            $hight '800';
                              
                            $width '100%';
                              
                            $scroll 'auto';
                              
                              
                            $SHOWRIGHTNAVIGATION 0;

                              
                            $tpl =& new Template("modul.htm");
                              
                            $tpl->Insert("{text}"'<iframe src="'.$seite.'" frameborder="0" height="'.$hight.'" width="'.$width.'" name="name" scrolling="'.$scroll.'">');

                              
                            $tpl->POut();

                             
                            ob_end_clean();
                            ?>
                            Mit dem Syntax -> $SHOWRIGHTNAVIGATION = 0; <- möchte ich dann steuern ob die rechte Seite angezeigt werden soll oder nicht.

                            Die template.htm sieht in dem besagten Abschnitt dann folgendermassen aus :
                            PHP-Code:
                            (...)
                              </
                            td>
                             </
                            tr>
                            </
                            table>
                            <!--  
                            Linke Menüseite Ende -->
                            </
                            td>
                             <
                            td border="1" valign="top" bgcolor="#FFFFFF" width="100%" height="718"><!-- BANNERCODE -->
                             {
                            banner}
                            <!--  
                            Content Anzeige Anfang -->

                            <
                            table width="100%" border="0" align="center" cellpadding="10" cellspacing="0">
                             <
                            tr>
                               <
                            td valign="top">
                                {
                            CONTENT}
                               </
                            td>
                             </
                            tr>
                            </
                            table>

                            <!--  
                            Content Anzeige Ende -->
                            </
                            td>

                            <!--  
                            rechtes Menü Anfang -->
                             {
                            rightnav}
                            <!--  
                            rechtes Menü Ende -->
                             </
                            tr>
                            </
                            table>
                            (...) 
                            Mit dem Aufruf der Seite mit meiner o.g. Änderung in der index.php
                            bekomme ich diesen Fehler :
                            call to a member-function on an unknown ...
                            Zu den letzten beiden Posts :
                            Ich bin Abteilungsleiterin im Einzelhandel beim grössten
                            Elektronikfachmarkt im Bereich GSM/Bürocom.

                            Viele Kunden kommen und haben irgendwelche Probleme mit Ihrem
                            ISDN-Anschluss, Telefon, Telefonanlage, MMS Versenden oder
                            einfach nur keine Change das Handy an zu schalten, da Sie nicht
                            die Anleitung der Geräte lesen. Bei den ISDN-Anlagen und Telefonen
                            gehen die Kunden davon aus, dass ich genau weis wie es bei diesen zu hause aussieht, denn Sie verstehen nicht das es für eine fremde person manchmal sehr schwer ist nach zu vollziehen was Sie mir sagen möchten oder gar was für Probleme Sie haben. Ich unterhalte mich sehr lange mit den Kunden um genau rauszufinden wo wirklich das Problem liegt, auch wenn Sie bei mir nichts kaufen wird jeder Kunde bedient, selbst wenn es ein Tevion Handy ist und die Kassiererinnen bei Aldi keine Bedienungshilfen für dieses Gerät geben können :-)

                            Aber kein Kunde geht bei mir oder bei meinen Mitarbeitern raus ohne dass Sie ein Erfolgserlebnis hatten.

                            Was ich damit sagen möchte ist eigentlich Ihr wisst wie es geht und einige verstehen nicht warum es ein aussenstehender nicht versteht, da es ja so einfach ist, das sprechen ist auch sehr einfach aber es dauert teilweise Jahre es zu erlernen, aber deswegen sage ich meiner Tochter ( z.Zt 10 Monate ) nicht Du lernst es ja sowieso nicht also warum soll ich Dir helfen.

                            Ich hoffe das ich es nun einigermassen erklärt habe.

                            Kommentar


                            • #15
                              und nochmals: du hast ein Objekt vor dem Gebrauch nicht instanziiert, und das meckert PHP. Du hast:
                              PHP-Code:
                              $tpl =& new Template("mainlayout/".$template.""); 
                              $tpl damit instanziiert. Wo hast du für $rightnav gemacht, denn ohne das kannst du nicht einfach:
                              PHP-Code:
                              $rightnav->set_file("rightnav""mainlayout/right_navigation.tpl.html"); 
                              verwenden.

                              Ich hoffe, dass es nun klar ist

                              Kommentar

                              Lädt...
                              X