Ergebnis 1 bis 16 von 16

Thema: Page ID im Template

  1. #1
    Contao-Nutzer
    Registriert seit
    16.11.2009.
    Beiträge
    6

    Standard Page ID im Template

    Hallo zusammen

    Ich bin auf der Suche nach einer Möglichkeit, die Page ID im Template mit PHP auszulesen. Also nicht das direkte Ausgeben über {{env:age_id}}, sondern das Auslesen über z.B. $this->pageId.
    Leider konnte ich solch eine Variable nicht finden.

    Gibt es eventuell doch eine Lösung?

    Freundliche Grüsse,
    Lloyd

  2. #2
    Contao-Urgestein Avatar von Sebastian
    Registriert seit
    19.06.2009.
    Ort
    Stuttgart
    Beiträge
    3.361

    Standard

    HI

    was spricht denn gegen den Inserttag? Den kannst du auch in deinen PHP-Code einbauen.

    Sebastian
    Ich arbeite beim Linux-Systemhaus ETES in Stuttgart

  3. #3
    Contao-Nutzer
    Registriert seit
    16.11.2009.
    Beiträge
    6

    Standard

    Danke für deine Antwort Sebastian.
    Die Template Tags werden direkt ersetzt und ausgegeben. Sowas wie folgendes ist nach meinen Tests leider nicht möglich:
    PHP-Code:
    $pageId = {{env::page_id}}; 

  4. #4
    Community-Moderator Avatar von schman
    Registriert seit
    19.06.2009.
    Ort
    Dornbirn
    Beiträge
    3.739
    User beschenken
    Wunschliste

    Standard

    Jetzt bin ich ein bisschen verwirrt.

    Durch das ersetzen des Insertags hast du doch dann die ID oder? Ansonsten versuchs mal mit $this->replaceInsertTag({{env::page_id}}

  5. #5
    Contao-Urgestein Avatar von Sebastian
    Registriert seit
    19.06.2009.
    Ort
    Stuttgart
    Beiträge
    3.361

    Standard

    HI

    genau. Und der Umweg über eine Variable ist eingentlich nicht nötig, denn der Inserttag ist quasi bereits eine Variable.

    Sebastian
    Ich arbeite beim Linux-Systemhaus ETES in Stuttgart

  6. #6
    Contao-Nutzer
    Registriert seit
    16.11.2009.
    Beiträge
    6

    Standard

    Ich möchte z.B. im Template prüfen, ob die aktuelle Page ID '2' lautet.
    PHP-Code:
    if ({{env::page_id}} == 2) {
        echo 
    "ID ist 2";

    Funktioniert hier (alleine schon wegen den {{ }}) leider nicht...

    Auch das ausgeben aller vorhandenen Template Vars zeigt mir keine ID.
    PHP-Code:
    $this->showTemplateVars(); 

  7. #7
    Contao-Urgestein Avatar von Sebastian
    Registriert seit
    19.06.2009.
    Ort
    Stuttgart
    Beiträge
    3.361

    Standard

    HI

    hast du es mal so probiert?

    PHP-Code:
    if ('{{env::page_id}}' == '2') {
     echo 
    "ID ist 2";

    Sebastian
    Ich arbeite beim Linux-Systemhaus ETES in Stuttgart

  8. #8
    Contao-Nutzer
    Registriert seit
    16.11.2009.
    Beiträge
    6

    Standard

    Perfekt, so hatte ich es tatsächlich noch nicht probiert
    Besten Dank für eure Antworten.

  9. #9
    Contao-Urgestein Avatar von Sebastian
    Registriert seit
    19.06.2009.
    Ort
    Stuttgart
    Beiträge
    3.361

    Standard

    HI

    gerne doch. Viel Erfolg noch!

    Sebastian
    Ich arbeite beim Linux-Systemhaus ETES in Stuttgart

  10. #10
    Mozzarella
    Gast

    Standard

    Danke für den Tipp, ich hatte genau das gleiche Problem!

  11. #11
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Standard

    Die saubere Methode (also ohne InsertTag) ist, das Page-Objekt in den Scope des Templates zu holen, damit hat man dann Zugriff auf alle Einstellungen der Seite (z. B. ID und Alias).
    PHP-Code:
    <?php 
    global $objPage;
    $intId $objPage->id;
    $strAlias $objPage->alias;
    ?>
    Ungetestet …
    So long,
    FloB since Nov. 2007 +706P +115P and counting

  12. #12
    Contao-Nutzer Avatar von Luminanz
    Registriert seit
    02.02.2011.
    Beiträge
    198

    Standard

    Hallo

    Ich habe ein ähnliches Anliegen:

    Würde gerne fogendes Inserttag:
    HTML-Code:
    {{serclass::<?php echo $this->id; ?>}}
    bei einer if-Abfrage im Template benutzen.

    Habe bereits diverse Varianten ausprobiert, aber bislang funktioniert es leider nicht.
    Grundsätzlich müsste ich nur wissen, wie ich die Ausgabe des Inserttags in einer Variable speichern kann.

    Hat jeman von Euch eine Idee, wie hier der richtige Ansatz wäre?

    Besten Dank für die Hilfe!


    P.S. Das inserttags gibt übrigens FULL / FREE aus und gehört zur Erweiterung [simple_event_registration]

  13. #13
    Contao-Nutzer Avatar von Luminanz
    Registriert seit
    02.02.2011.
    Beiträge
    198

    Standard

    Hab's nun doch noch selber hingekriegt:

    PHP-Code:
    $meine_variable $this->replaceInsertTags("{{serclass::$this->id}}"); 
    Stolperstein waren die doppelten Anführungszeichen .

    Wenn jemandem einen direkten Weg (ohne Umweg über das inserttag) bekannt ist, dann lerne ich gerne dazu

  14. #14
    Contao-Fan
    Registriert seit
    26.06.2009.
    Beiträge
    266

    Standard

    Da sich die Inserttags in Contao mittlerweile geändert haben, funktioniert auch diese Methode:

    PHP-Code:
    if($this->replaceInsertTags'{{page::id}}' ) == 49) { echo "CODE"; }; 

  15. #15
    Contao-Fan Avatar von Flaschenzug
    Registriert seit
    08.07.2010.
    Ort
    Berlin
    Beiträge
    312

    Standard

    Ich versuche gerade das oben beschriebene mit einer Contao 3.5er zu realisieren.
    Leider klappt das ganze nicht so wie ich will und mir ist nicht klar warum.

    Habe den Code an die aktuelle Version angepasst und folgendes Versucht:

    V1:
    PHP-Code:
    $pageId ="{{page::id}}";
    if(
    $pageId=="2") echo "OK":
    else echo 
    "NO ($pageId)"
    Ausgabe: "NO 2"

    V2:
    PHP-Code:
    $pageId floor("{{page::id}}");
    if(
    $pageId=="2") echo "OK":
    else echo 
    "NO ($pageId)"
    Ausgabe: "NO 0"

    Die richtige ID holt er sich also.
    Allerdings kann ich sie in einem IF Statement nicht abfragen.
    Und wenn ich versuche nen INT draus zu machen, dann kommt 0 dabei raus.

    Hat jemand eine Idee wie ich das ganze machen muss, damit es funktioniert?

    Diese Variante funktioniert zwar, aber eigentlich will ich nicht unbedingt die komplette $objPage globalisieren nur weil ich die obere Variante nicht zum Laufen bekommen:
    PHP-Code:
    global $objPage;
    $intId $objPage->id;
    echo 
    $intId
    Danke für Tipps und Hilfestellungen.

  16. #16
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Zitat Zitat von Flaschenzug Beitrag anzeigen
    V1:
    PHP-Code:
    $pageId ="{{page::id}}";
    if(
    $pageId=="2") echo "OK":
    else echo 
    "NO ($pageId)"
    Ausgabe: "NO 2"

    V2:
    PHP-Code:
    $pageId floor("{{page::id}}");
    if(
    $pageId=="2") echo "OK":
    else echo 
    "NO ($pageId)"
    Ausgabe: "NO 0"

    Die richtige ID holt er sich also.
    Nein, denn in $pageId steht nun nur der String "{{page::id}}", welcher von Contao später bei der Ausgabe durch die eigentliche Page ID ersetzt wird. Daher funktioniert natürlich auch nicht deine Bedingung. Wenn dann musst du
    PHP-Code:
    $pageId $this->replaceInsertTags("{{page::id}}"); 
    machen.



    Zitat Zitat von Flaschenzug Beitrag anzeigen
    Diese Variante funktioniert zwar, aber eigentlich will ich nicht unbedingt die komplette $objPage globalisieren nur weil ich die obere Variante nicht zum Laufen bekommen:
    PHP-Code:
    global $objPage;
    $intId $objPage->id;
    echo 
    $intId
    Danke für Tipps und Hilfestellungen.
    Daran ist ja nichts verkehrt - und auch performanter als die obere Variante. Alternativ kannst du auch $GLOBALS['objPage']->id; benutzen.

    Du "globalisierst" die Variable ja nicht - die existiert schon von vornerhein im global scope.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 2 (Registrierte Benutzer: 0, Gäste: 2)

Ähnliche Themen

  1. System-Log: No active page for page ID ...
    Von smirk9 im Forum Installation / Update
    Antworten: 42
    Letzter Beitrag: 25.02.2017, 15:18
  2. [ch_flowplayer] Fehler: No active page for page ID
    Von Creational im Forum Sonstige Erweiterungen
    Antworten: 0
    Letzter Beitrag: 01.02.2010, 17:03
  3. Fehlermeldung No active page for page ID
    Von skycobold im Forum Installation / Update
    Antworten: 7
    Letzter Beitrag: 20.12.2009, 20:34
  4. System-Log Einträge: No active page for page ID "#main
    Von Bobi im Forum Sonstiges zu Contao
    Antworten: 9
    Letzter Beitrag: 17.08.2009, 15:49

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •