Wofür steht der True Paramter bei getTemplate

  • Ein $template = getTemplate(); liefert einen String, den Namen des Templates, z.B. protostar.


    Ein $template = getTemplate(true); liefert ein Template-Objekt


    Darin z.B.
    $template->id (des Template-Stils)
    $template->template (Name des Templates, z.B. protostar.)
    $template->params (Backendeinstellungen als Registry Object)


    $template->home (Vergessen, was das ist. Ich glaub 1 für Standard-Stil? Mag vielleicht wer anders nachreichen)

  • Hallo,


    @DirtyWorld


    Ich gucke immer hier in dieser Dokumentation. Für die Klasse JApplication findest du die getTemplate() Methode hier: https://api.joomla.org/cms-3/c…n.html#method_getTemplate


    Wenn du auf getTempalte klickst, siehst du, dass du den Parameter $params optional eingeben kannst und dann ein Array anstelle des Template Namens zurück bekommst.


    @Re:Later
    Guckst du eigentlich auch immer in dieser Doku oder nutzt du nur deine Entwicklungsumgebung? Guckst du überhaupt in einer Doku oder hast du tatsächlich alles im Kopf :)




    Was genau als Parameter ausgegeben wird sehe ich entweder im Debugger an oder mit Hilfe von print_r


    PHP
    <?php $app = JFactory::getApplication();echo "<pre>"; echo "<br>---getTemplate()---<br>";print_r($app->getTemplate());  echo "<br>---getTemplate(true)---<bt>";print_r($app->getTemplate(true));echo "</pre>"; ?>


    zeigt zum Beispiel für das Protostar folgendes an:


    Code
    ---getTemplate()---
    protostar
    ---getTemplate(true)---
    stdClass Object(    [id] => 7    [home] => 1    [template] => protostar    [params] => Joomla\Registry\Registry Object        (            [data:protected] => stdClass Object                (                    [templateColor] => #0088cc                    [templateBackgroundColor] => #f4f6f7                    [logoFile] =>                     [sitetitle] =>                     [sitedescription] =>                     [googleFont] => 1                    [googleFontName] => Open+Sans                    [fluidContainer] => 0                )             [separator] => .        ) )


    Und ja, ich glaube auch, dass der Parameter home für den Stil steht.Weiß vielleicht jemand wo man dies genau nachgucken könnte? Ich meine - in welcher Doku? Das man es im Programmcode auslesen kann ist klar. Ich habe es jetzt nur durch Ausprobieren eingekreist.


    Viele Grüße
    Astrid

  • Hallo,


    danke für eurer Ausführungen. Die Erklärung mit dem Unterschied String/Object löste auch meine Problem :).
    Ich hab get->template einmal für den Aufbau des Pfades zum Template gebraucht und einmal für das Auslesen der Template-Parameter.
    entweder es hat das eine oder das andere funktioniert. Jetzt habe ich die Erklärung dafür.


    astrid: Ja genau in der Dokumentation schaue ich auch immer nach. Aber unter $params steht halt auch nur das man damit ein Array von Konfigurationseinstellungen ausgeben kann. Wahrscheinlich fehlt mir hier auch einfach nur das Wissen wie man das richtig zu lesen hat.


    Viele Grüße

    • Hilfreich

    @astrid
    OT:
    Ich schaue fast nie in die Joomla-Dokus, wenn ich was nicht weiß, weil oft nicht vollständig (Grad mal nachgesehen: "Gets the name of the current template."). Direkt in den libraries hast den gesamten Code vor dir und siehst die Zusammenhänge. Findest nebenbei Klassen, Methoden und Möglichkeiten, die im Core 0 bis 1x verwendet werden. Oder verbessert wurden. Hilft eigenen Code optimieren, auch für zukünftige Versionen vorzubereiten.


    Das notiere ich digitalchaotisch und finde Notizen nicht mehr, wenn ich sie brauche. Wenigstens erinnere ich mich, dass da was gab.


    Und klar: echo 'DEBUG: ' . print_r($diesdas, true); exit; ist mein häufigst geklicktes Text-Snippet ;)

  • Aber unter $params steht halt auch nur das man damit ein Array von Konfigurationseinstellungen ausgeben kann.


    Sag ich ja. Stimmt halt nicht. Ist ein Objekt fürs Template und darin ein Registry-Objekt für die params.
    Also auszulesen, wie man Registry-Objekte ausliest
    $template->params->get('diesdas');
    und nicht
    $template->params['diesdas'];
    oder
    $template['diesdas']


    Registry-Objekt hat den Vorteil, dass man keine Undefined-Warning bekommt wie beim Arrray und ggf. einen Defaultwert mitgeben kann
    $template->params->get('diesdas', 'meinDefaultWert');
    wenn 'diesdas'-Key nicht gibt.