2012-11-14 5 views
7

Standardmäßig parent::display($tpl); lädt components/com_my_component/views/my_component/tmpl/default.php, aber in einigen Fällen muss ich andere php-Datei laden, die in dem gleichen Ordner in der Nähe von default.php ist (zum Beispiel components/com_my_component/views/my_component/tmpl/lol.php). Wie geht das von view.html.php.Wie ändert man das Lade-Layout in der Joomla-Ansicht?

P.S.

versuchten Last loadTemplate und setLayout Methoden ohne Glück.

+0

Ich denke, es ist Layout = lol. – Irfan

+0

@Irfan die gleiche Scheiße, aber jetzt lädt standardmäßig – user1692333

+0

können Sie bitte fügen Sie die vollständige URL, die Sie übergeben? – Irfan

Antwort

10

Das Problem wurde von mir selbst gelöst. Sie möchten die Methode setLayout und achten Sie auf die Eingabesyntax

$this->setLayout('dafault:lol'); 
parent::display($tpl); 
+0

Ich bekomme einen Fehler in der Steuerung Fataler Fehler: Rufen Sie die undefinierte Methode FcseController :: setLayout() in /var/www/pygmaxia2.gr/components/com_fcse/controller.php auf Zeile 33 und der Code in der Zeile ist das $ this-> setLayout ('dafault: test'); Irgendeine Idee? – themis

+0

oh ich habe $ view = new JView(); \t \t \t \t $ view-> setLayout ('dafault: test'); und es hat funktioniert :) – themis

+0

Dieser Code wird dazu führen, dass Joomla den Anforderungsparameter 'layout' ignoriert. Bitte sehen Sie meine Antwort: http://stackoverflow.com/a/31833510/1031312 – Ozzy

2

standardmäßig joomla sucht nach dem layout Schlüsselwort in der URL verwenden, um zu entscheiden, welches Layout angezeigt werden soll. Wenn diese Variable leer oder nicht vorhanden ist, wird das Layout tmpl/default.php geladen.

Durch Bearbeiten Ihrer Datei view.html.php können Sie das Standardlayout mithilfe der JView API, z. $this->setLayout('lol') wird die URL example.com/yourview entspricht example.com/yourview?layout=lol.

Diese Änderung führt jedoch dazu, dass Joomla das Standardverhalten überschreibt, so dass die Anforderung layout ignoriert wird. Das bedeutet, dass die Anforderung example.com/yourview?layout=lmao auch example.com/yourview?layout=lol

example.com/yourview = wird angezeigt Sie diese einfach durch Hinzufügen einer Bedingung um die setLayout Funktion lösen kann, so dass nur dann, wenn das layout Schlüsselwort nicht vorhanden ist, dann werden Sie das Standard-Layout auf lol gesetzt, z.B.

<?php 
    # ... 

     function display($tpl = null) { 
     # ... 

     # Edit : Set the default layout to 'lol' 
     $layout = JRequest::getWord('layout', ''); 
     if (empty($layout)) $this->setLayout("lol"); 

     // Display the view 
     parent::display($tpl); 
     } 

    # ... 
0

Ich komme immer wieder darauf zurück und ich muss noch eine befriedigende Lösung finden.

Was funktioniert, von J1.5 bis hin zu J3.4, für mich war schon immer die $ tpl Variable zu setzen in view.html.php

Wenn $ tpl leer ist oder „“ dann tmpl /default.php wird standardmäßig angezeigt.

Wenn Sie $ tpl in eine Zeichenfolge ändern, z. $ tpl = "stacker", dann wird nach tmpl/default_stacker.php gesucht und angezeigt.

Ich habe verschiedene unterschiedliche Theorien gesehen, wie man es früher in der MVC ändern kann, so dass es den default_ pretext nicht benötigt. z.B. tmpl/stacker.php Keine haben für mich gearbeitet.

Verwandte Themen