Template Informationen in PHP

  • Betroffene Version
    WoltLab Suite 3.1

    Hallo,

    ich suche eine Möglichkeit, mit der ich die Ausgabe über die Templates in PHP übernehmen und damit dort weiterarbeiten kann.

    Hintergrund ist folgender: Ich brauche eine Angabe des aktuell eingeloggten Users (ID / Name). Den bekomme ich nur über die Template Ausgabe heraus. Ich habe die letzten 2 Tage damit verbracht, das Forum hier nach Möglichkeiten (und auch das PHP Manual) zu durchforsten, aber es funktioniert nichts direkt in PHP (entweder fataler Fehler oder gar keine Ausgabe). Auch über die Klasse WCF mit getUser() ging nichts.

    Damit ich aber via PHP eine Datenbankabfrage einrichten kann brauche ich eine dieser beiden Angaben. Wie kann ich das sonst bewerkstelligen?

    Code
    {$__wcf->user->username}
    {$__wcf->user->userID})

    Das habe ich. Aber wie bekomme ich das nach PHP um damit weiter zu arbeiten?

    Ausgeben lassen möchte ich das gerne in einer Box, verwendet wird das Plugin von Sonnenspeer. (Falls das Problem dort liegt, das keine Ausgabe zustande kommt)

    Ich danke schonmal im Voraus für eure Antwort(en) und hoffe, dass das keine allzu blöde Frage ist ...

    Viele Grüße,

    Serenya

  • Template: {$__wcf->user}

    PHP: WCF::getUser()

    Ich muss leider nochmal ganz dumm nachfragen... Wie verpacke ich das WCF::getUser()? Eine einzelne Variable mit der Aussage bringt nichts ... Selbst mit abgeleitetem Objekt aus der Klasse User komme ich nicht weiter ||

    Einmal editiert, zuletzt von Serenya (27. Juni 2019 um 11:14)

  • WCF::getUser()->username gibt z.B. den Benutzernamen aus, wobei du use wcf\system\WCF; nutzen musst. Mehr kann ich dir nicht sagen, als dir dir Klasse zu liefern, die dir ausgibt wonach du gefragt hast. Wie und wo du das verarbeitest musst du wissen, denn wir wissen es nicht. ;)

  • Es wurde zwar bereits schon erklärt, aber hier noch ein kurzes Beispiel:

    PHP
    <?php
    use wcf\system\WCF;
    
    $username = WCF::getUser()->username;
    $userID = WCF::getUser()->userID;

    Mit diesen Variablen kannst du im PHP dann weiterarbeiten.

  • Acccchso, das habe ich überlesen.

    Nachdem das nicht nur für die Benutzung des Drittanbieter-Pakets gilt, sondern generell für die Entwicklung mit dem WSC: Im Template kannst du wie gesagt direkt die Smarty-Variante nutzen. Wenn du aber in PHP damit arbeiten willst, machst du es wie im Screenshot.

    Ans Template übergeben kannst du eigene Werte übrigens mit

    PHP
    WCF::getTPL()->assign([
        'myVar' => $myValue,
        'secondVar' => 'miau'
    ]);

    im Template kannst du dann weiter arbeiten mit

    Code
    Der Inhalt der Variable $myVar lautet: {$myVar}

    Bei dem Plugin wird die Ausgabe vom PHP-Script übrigens standardmäßig nicht ausgegeben; die schöne Variante wäre wie gesagt die, die auch in Plugins verwendet wird und ich dir hier gerade aufgezeigt habe.

    Etwas Lektüre dazu gibt's in der zwar nicht allzu mächtigen aber dafür doch ausreichenden Doku: https://docs.woltlab.com/view_templates…plate-variables

    PS: Sollte das dann doch nicht ganz so funktionieren, musst du wie gesagt den Entwickler in seinem Forum fragen wie es die übliche Vorgehensweise ist. :)

  • Die "echo" Ausgabe an sich sollte funktionieren, jedoch hast du damit keine Kontrolle darüber wann und wo im Template der Text ausgegeben wird.

    Wenn du aber der Erklärung von MysteryCode folgst, dann bist du auf der sicheren Seite und hast die volle Kontrolle über die Textplatzierung.

    Falls du Hilfe bei der Ausgabe brauchst oder Probleme hast, kannst du mir gerne auch per Konversation schreiben, da es ja mein Plugin betrifft. Für generellen PHP Code kannst du aber gerne hier im Thema weiterschreiben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!