Variable in Template definieren und in anderem Template ausgeben

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • bs_
    Contao-Nutzer
    • 30.04.2010
    • 4

    #1

    Variable in Template definieren und in anderem Template ausgeben

    Hallo Community,
    ich habe folgendes Problem bzw. folgendes vor.

    Ich setze die Erweiterung Catalog ein und habe auf einer Seite einen Katalog und einen Filter. Unterhalb des Filters würde ich gerne Anzeigen lassen, wie viele Einträge gefunden wurden.

    Dafür würde ich im catalog.tpl die Einträge zählen und an die Variable $anzahl übergeben. Die Ausgabe von $anzahl soll in filter.tpl sein.

    Ist das möglich? Wie kann ich es realisieren?
    Ich habe es mit GLOBALS versucht, aber irgendwie nicht hinbekommen.

    Vielen Dank schon mal,
    liebe Grüße
  • xchs
    Administrator
    • 19.06.2009
    • 14682

    #2
    Hallo bs_,

    Zitat von bs_ Beitrag anzeigen
    Ich setze die Erweiterung Catalog ein und habe auf einer Seite einen Katalog und einen Filter. Unterhalb des Filters würde ich gerne Anzeigen lassen, wie viele Einträge gefunden wurden.
    Wenn ich mich nicht täusche, dann liefert Dir doch schon die Variable $this->total; die Anzahl der Katalogeinträge bzw. die entsprechenden Filterübereinstimmungen.
    Contao Community Administrator

    [Unterstützungsmöglichkeiten]
    sigpic

    Kommentar

    • MacKP
      Contao-Yoda
      • 15.06.2009
      • 13315

      #3
      Jup, ist so fest im Template mod_cataloglist.tpl drinn.

      Viele Grüße
      Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
      [Arbeitet bei -> Paus Design & Medien]
      "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

      Kommentar

      • bs_
        Contao-Nutzer
        • 30.04.2010
        • 4

        #4
        Vielen Dank für eure Antwort,

        leider funktioniert dies nicht. Die Variable steht sowohl in der catalog_*.tpl als auch der filter_*.tpl nicht zu Verfügung.

        Welchen Einfluss hat "mod_cataloglist.tpl" auf ein Frontend-tpl z.B. catalog_*.tpl?

        Ich suche eine Lösung die Template übergreifend funktioniert. Zum Beispiel möchte ich auch im Katalog anzeigen, welche Einträge schon auf einer Merkliste stehen. Dafür habe ich im Header eine Merkliste eingebunden, in der nur die IDs der Einträge an eine Variable übergeben werden. Diese soll dann im catalog_*.tpl zu Verfügung stehen und die IDs vergleichen.

        Hat jemand eine Idee?
        Liebe Grüße,
        Ben

        Kommentar

        • xchs
          Administrator
          • 19.06.2009
          • 14682

          #5
          Zitat von bs_ Beitrag anzeigen
          Die Variable steht sowohl in der catalog_*.tpl als auch der filter_*.tpl nicht zu Verfügung.
          Aber im "mod_cataloglist.tpl" steht sie zur Verfügung.

          Zitat von bs_ Beitrag anzeigen
          Welchen Einfluss hat "mod_cataloglist.tpl" auf ein Frontend-tpl z.B. catalog_*.tpl?
          Ersteres ist ein Modultemplate ("View"), letzteres ein Subtemplate ("Partial"). Das Modultemplate bildet im Prinzip den "Container" für Deine Katalogliste und für die Ausgaben der Subtemplates.

          Was genau hast Du denn vor?
          Contao Community Administrator

          [Unterstützungsmöglichkeiten]
          sigpic

          Kommentar

          • MacKP
            Contao-Yoda
            • 15.06.2009
            • 13315

            #6
            Hallo bs_,
            du könntest sowas dann über die globals Variable von Contao überall auf der Seite verfügbar machen.

            Viele Grüße
            Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
            [Arbeitet bei -> Paus Design & Medien]
            "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

            Kommentar

            • bs_
              Contao-Nutzer
              • 30.04.2010
              • 4

              #7
              Hallo,
              globale variablen hatte ich auch versucht und sie gingen leider nicht. Nach kurzer Recherche habe ich festgestellt das es bei meinem Anbieter nicht erlaubt ist und auf "off" gesetzt ist.

              Ich habe es jetzt aber anders gelöst. Statt $GLOBALS verwende ich $_GET.
              Ich definier im einem Template $_GET['xyz'] = 'inhalt'; und gebe es genau so in einem anderen Template wieder aus: echo $_GET['xyz']

              Vielleicht nicht die eleganteste Lösung, aber es funktioniert.
              Danke für eure hilfe.

              Kommentar

              • xtra
                Maintainer
                • 02.07.2009
                • 2007

                #8
                Du meinst, bei deinem Anbieter ist die Einstellung "register_globals" auf off, und das ist auch gut so.

                Wenn bei deinem Anbieter $GLOBALS nicht verfygbar waere, dann wyrde Contao nicht funktionieren, da auf der Verwendung dieses globalen Arrays eigentlich alles basiert, von den Einstellungen bis hin zur Registrierung der Module.

                Somit sollte bei dir folgendes durchaus funktionieren:
                PHP-Code:
                $GLOBALS['xyz'] = 'bla';
                
                // ... anderes Template
                echo $GLOBALS['xyz']; 
                
                Voraussetzung ist jedoch, dass du die Reihenfolge beachtest.
                Partials werden immer vor(!) dem zugehoerigen View gerendert.
                Die Reihenfolge der Module richtet sich danach, wann sie eingebunden sind.
                Die Reihenfolge hierbei war AFAIR header,left,right,main,footer,custom sections (kann mich jedoch auch irren, hab im code nun nicht nachgesehen) und innerhalb dieser sections eben wie die Sortierung von dir vorgenommen wurde.

                Gruss
                Chris
                Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

                Kommentar

                • bs_
                  Contao-Nutzer
                  • 30.04.2010
                  • 4

                  #9
                  stimmt, du hast recht. es geht doch mit $GLOBALS.
                  Dann muss ich die Reihenfolge irgendwie nicht beachtet haben. $GLOBALS hatte ich versucht.

                  Kann man irgendwie die Reihenfolge auf Header, Left, Main, Right... ändern?
                  Im fe_page.tpl habe ich es schon auf diese Reihenfolge geändert. Kann aber keine Variablen von "main" an "right" übergeben.

                  Ich würde sonst einfach versuchen in "right" nochmal das gleiche Modul wie in "main" unsichtbar ohne Ausgabe auszuführen, nur um an die Werte zu kommen. Leider würde damit ja auf einer Seite zweimal das gleiche ausgeführt, was ja unnötig wäre.

                  Sorry

                  Kommentar

                  • xtra
                    Maintainer
                    • 02.07.2009
                    • 2007

                    #10
                    Nein, die Reihenfolge ist in PageRegular.php fix eingetragen und kann nicht geaendert werden.

                    Ich gehe auch oefters den Weg dass ich ein Modul doppelt einbinde und einmal keine Ausgabe erzeuge. Die Berechnungen hierbei werden oftmals gecached (wie u.a. auch die DB Abfragen) was somit einen guten Kompromiss zwischen Rechenlast und Flexibilitaet bzw. Wartungsaufwand darstellt (besser noch wenn du serverseitiges caching aktivieren kannst).

                    Gruss
                    Chris
                    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

                    Kommentar

                    Lädt...