php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.07.2009, 21:36  
Erfahrener Benutzer
 
Registriert seit: 09.11.2008
Beiträge: 180
smilla befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Mehrere Smarty Templates gleichzeitig, was ist besser

Hi,

ich habe zwar schon viel php Erfahrung in Smarty bin ich allerdings purer Anfänger.

Ich habe mir ein Template für meine Index Seite angelegt, übergebe dort hin meine Werte und lasse diese anzeigen. Soweit alles gut.

Nun möchte ich in einem anderen Template ein Kategorielisting designen. Die Kategorien werden aus einer Datenbank geladen.

Nun gibt es meiner Meinung nach zwei Möglichkeiten:

1. Ich inkludiere das Kategorielisting Template in das Template der Index Seite. Sofern dass Index Template alle Kategorien Infos hat, stehen diese dem Kategorielisting Template auch zur Verfügung und ich kann es anzeigen. Das müsste klappen.

2. Ich könnte bevor ich alle Werte dem Index Template hinzufügen das Listing template parsen und mir die Info mittels smarty fetch in eine Variable schreiben, welche ich dann später an das Index Template gebe.


Welcher Weg ist sinnvoller? Gibt es ggf. noch einen besseren Weg?

Da es verschiedene Arten von Listings gibt, möchte ich es gleich ordentlich machen.
smilla ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 31.07.2009, 23:51  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.579
PHP-Kenntnisse:
Fortgeschritten
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Der zweite Ansatz erscheint mir sinnvoller, da der Content stärker "modularisiert" wird und Einzeltemplates für sich genommen einfacher zu handhaben und zu verstehen sind. Generell würde ich immer diesen Weg empfehlen.
mermshaus ist gerade online  
Alt 01.08.2009, 12:56  
Neuer Benutzer
 
Registriert seit: 17.07.2009
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
sf-data befindet sich auf einem aufstrebenden Ast
Standard

sag ich auch
sf-data ist offline  
Alt 01.08.2009, 16:20  
Erfahrener Benutzer
 
Registriert seit: 09.11.2008
Beiträge: 180
smilla befindet sich auf einem aufstrebenden Ast
Standard

Danke erst mal für die Antworten. Also würdet ihr quasi eine php Funktion anlegen, dort ein neues Smarty Objekt erzeugen, Template füllen, mit fetch den Inhalt auslesen und zurückgeben und diese Info dann dem Haupttemplate übergeben und dort dann anzeigen?

In diesem Fall hätte man für jede Funktion eine neue Instanz. Müsste ansich ja kein Probem geben.
smilla ist offline  
Alt 01.08.2009, 16:25  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.579
PHP-Kenntnisse:
Fortgeschritten
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Ja, im Grunde so. Nur kannst du dir die neue Smarty-Instanz sparen und alle Templates über dieselbe laufen lassen.
mermshaus ist gerade online  
Alt 01.08.2009, 16:34  
Erfahrener Benutzer
 
Registriert seit: 09.11.2008
Beiträge: 180
smilla befindet sich auf einem aufstrebenden Ast
Standard

Mittels global würde dies ja gehen, ich sehen hierbei allerdings das Problem, das ich Template A Infos gebe, die Template B nicht bekommen soll, Template B aber dennoch bekommt, weil nur eine Instanz genommen wird.

Bzw. es könnte Probleme geben, wenn ich Template A und B unter gleichen Namen (z.B. assign('title', $title)) verschiedene Daten weiterreichen will.
smilla ist offline  
Alt 01.08.2009, 16:42  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.579
PHP-Kenntnisse:
Fortgeschritten
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Es gibt in Smarty Methoden, die per assign() zugewiesenen Variablen wieder zu löschen. Das lässt sich eigentlich recht elegant handhaben. Kommt natürlich darauf an, wie du generell die Variablen an die Templates übergibst. Ich werde gleich mal suchen, ob ich ein Beispiel dazu habe.
mermshaus ist gerade online  
Alt 01.08.2009, 18:31  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.579
PHP-Kenntnisse:
Fortgeschritten
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Okay, ich dachte eigentlich, ich hätte das schlauer gelöst, aber dem war wohl nicht so.

Eine Idee:

PHP-Code:
<?php

class MySmarty extends Smarty
{
    protected 
$_stack;

    public function 
__construct()
    {
        
parent::Smarty();
        
$this->_stack = array();
    }

    public function 
startTemplate()
    {
        
array_push($this->_stack$this->get_template_vars());
        
$this->clear_all_assign();
    }

    public function 
endTemplate()
    {
        
$this->clear_all_assign();
        
$this->assign(array_pop($this->_stack));
    }
}
Damit lassen sich Templates folgendermaßen beliebig tief verschachteln:

PHP-Code:
$smarty = new MySmarty();

$smarty->startTemplate();
    
$smarty->assign('blub''Das hier soll ins Index-Template');

    
$smarty->startTemplate();
        
// Hier ist "blub" nicht gesetzt
        
$smarty->assign('text''Dies ist ein Test.');
        
$content $smarty->fetch('content');
    
$smarty->endTemplate();

    
// Hier ist "text" nicht gesetzt
    
$smarty->assign('content'$content);
    
$smarty->display('index');
$smarty->endTemplate(); 
Bei jedem startTemplate werden die bisher zugewiesenen Template-Variablen zwischengespeichert und bei endTemplate wieder zugewiesen.
mermshaus ist gerade online  
Alt 01.08.2009, 20:12  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 1.898
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Entschuldigt bitte die Zwischenfrage:
Arbeite nicht mit Smarty, aber dein Konstruktor irritiert mich. Verfügt die Klasse Smarty wirklich über eine statische Methode Smarty? Oder callst du auf diese Weise den constructor???! Kenne nur
PHP-Code:
parent::__construct() 
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline  
Alt 01.08.2009, 20:20  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.579
PHP-Kenntnisse:
Fortgeschritten
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

OT:

Smarty ist in PHP4 geschrieben und damals war der Konstruktor einer Klasse eine Methode, die so heißt wie der Klassenname:

PHP-Code:
class MyClass
{
    function 
MyClass()
    {
        
// Konstruktor
    
}

Edit: parent::__construct() scheint aber auch zu gehen. Interessant.
mermshaus ist gerade online  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Smarty und das MVC [-UFO-]Melkor Software-Design 11 29.12.2008 13:01
Smarty Templates & ZF KeKs0r PHP-Fortgeschrittene 6 24.12.2008 16:20
Smarty + MySQL = immer falsche Ausgabe m0use` PHP Tipps 2006 44 21.11.2008 20:30
Was ist Aufgabe des Templates (Smarty), was nicht? agrajag PHP Tipps 2007 8 24.02.2007 13:19
if abfragen in Templates rob1011 PHP Tipps 2006 13 03.08.2006 15:55
Smarty + Oop Problem Komandar PHP Tipps 2006 5 25.07.2006 14:36
Vererbung bei Templates Pain-maker PHP-Fortgeschrittene 9 28.03.2006 10:05
Smarty verschachtelt snatch-ic PHP Tipps 2006 16 28.02.2006 20:54
[Erledigt] Navigation auf Smarty umstellen?! PHP-Fortgeschrittene 3 10.01.2006 09:19
Smarty und X-Cart Profis gesucht Beitragsarchiv 1 21.05.2005 13:38
Smarty? Die wesentlichen Vorteile? Off-Topic Diskussionen 7 20.09.2004 13:04
[Erledigt] Wieder mal Templates! PHP-Fortgeschrittene 1 10.09.2004 11:42
[Erledigt] Smarty - Schleifenmanagment in Templates PHP-Fortgeschrittene 5 27.08.2004 17:29
If Anweisung mit Smarty Templates! Wo ist der Fehler? PHP Tipps 2004 3 18.07.2004 22:10
Smarty Templates + Radio Buttons + Auswertung Transmitter PHP-Fortgeschrittene 0 05.07.2004 18:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
smarty mehrere templates, smarty vererbung, smarty- display 2 mal gleichzeitig, smarty verschiedene templates, smarty templates verschachteln, http://www.php.de/php-einsteiger/57673-erledigt-mehrere-smarty-templates-gleichzeitig-ist-besser.html, smarty template vererbung, mehrere smarty, smarty template für variable parsen, $smarty->display 2 mal gleichzeitig, mehrere templates smarty, smarty template dir, smarty mehrere templates fetch, smarty instanzen vererben, smarty display verschiedene, smarty mehrere seiten, smarty fetch, smarty template zwischen parsen, smarty mehrere templates in einem template, smarty constructor

Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum