Re: [SMARTY-DEV] How to modify the Smartytemplate loding policy

From: Date: Tue, 25 Mar 2003 16:34:30 +0000
Subject: Re: [SMARTY-DEV] How to modify the Smartytemplate loding policy
References: 1 2 3  Groups: php.smarty.dev 
Request: Send a blank email to php-smarty-dev+get-1023@lists.php.net to get a copy of this message
On Tue, Mar 25, 2003 at 04:22:45PM +0100, messju mohr wrote: > On Tue, Mar 25, 2003 at 11:32:37AM -0300, luis wrote: > > Messju, > > I was looking for a "neat" way to do what I needed, that after all, is > > not that weird. That's why I didn't dive into the code :-) > > Do you think that an extra if statement can be a serious performance > > problem in _smarty_include? > > i thought of traversing a search-path for the template. you have to > do a stat() call (aka file_exists()) for each segment in your path, > until the template in question is found. you have to do this for every > template that is included. i think this can become a > performance-problem. i think this may even be the reason, why smarty > does not support multiple template directories natively. > > but give it a try and if it get's your job done it good. one (in this > case me) shouldn't try to optimize in the design-phase anyway :) i agree a template include path is a good idea -- it would be great for setting up default templates for all kinds of things. the file_exists checks can't be too much overhead ? (php 'include' also does this kind of search). maybe it could be implemented in smarty by making template_dir optionally an array? if is_array... search the array of directories... note that currently (? or in older versions of smarty ?) you have to watch if you change template_dir to access a template with the same name, e.g. this doesn't work: foreach ($search_dirs as $dir) if (file_exists($dir . DIRECTORY_SEPARATOR . $tpl_name)) $smarty->template_dir = $dir; // ... $smarty->display($tpl_name); with the default compile id, templates with the same relative path/name clobber each other. - rob > > > > > Luis > > > > -----Original Message----- > > From: messju mohr [mailto:messju@lammfellpuschen.de] > > Sent: Tuesday, March 25, 2003 11:06 AM > > To: luis > > Cc: 'Smarty-Dev' > > Subject: Re: [SMARTY-DEV] How to modify the Smartytemplate loding policy > > > > On Tue, Mar 25, 2003 at 10:44:55AM -0300, luis wrote: > > > Why would I change {include} ? The application will then be hard to > > > maintain because it's logical to use {include} to do {includes} In > > some > > > point {include} must share some code with {fetch} to get a template > > from > > > the source. I just want to know where is that intersecting code to > > > change it and load templates from one dir or another. > > > > look in the compiled template what is generated when you have > > {include} in your template. you'll see that $this->_smarty_include() > > is called. > > > > both, fetch() and _smarty_include() use _get_compile_path() to retrieve > > the path to the template. this is the intersecting part of them. > > (you could have figured this out easily, if you had a look at the > > source) > > > > but you won't be happy in overruling _get_compile_path() to search a > > path of template-directories, since _get_compile_path() is also used > > to retrieve the compile-path of a template to *write* after compiling. > > this can have funny effects. > > > > you should better override _smarty_include() instead. but i'm sure it > > will be a significant performance-hit to your compiled templates (if > > no caching is in use). > > > > > -----Original Message----- > > > From: Jimmy Harlindong [mailto:jimmy@harlindong.com] > > > Sent: Tuesday, March 25, 2003 10:13 AM > > > To: Smarty-Dev > > > Subject: Re: [SMARTY-DEV] How to modify the Smartytemplate loding > > policy > > > > > > How about using a custom function? > > > > > > {insert} > > > > > > or define a custom tag. > > > > > > ----- Original Message ----- > > > From: "luis" <luis@fuegolabs.com> > > > To: "'luis'" <luis@fuegolabs.com>; "'Jason > > > Sweat'" > > > <sweatjejm@mchsi.com>; <aztek@box.sk> > > > Cc: "'Smarty Dev'" <smarty-dev@lists.php.net> > > > Sent: Tuesday, March 25, 2003 10:19 PM > > > Subject: [SMARTY-DEV] How to modify the Smartytemplate loding policy > > > > > > > > > > Well, I can answer myself, no. > > > > If I have > > > > display('foo.tpl'); > > > > and foo.tpl {includes file='header.tpl'} > > > > I need to look BOTH for foo.tpl and header.tpl in templates/$user > > and > > > if > > > > they are not found there in templates/ > > > > If I redefine fetch then foo.tpl can be checked but fetch is not > > > called > > > > for the included header.tpl template. > > > > Ideas? > > > > > > > > > > > > -- > > > Smarty Development Mailing List (http://smarty.php.net/) > > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > > > > -- > > > Smarty Development Mailing List (http://smarty.php.net/) > > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > -- > > E-Commerce: Verkauft etwas, das mit elektrischem Strom funktioniert. > > (modern > > für Multimedia) > > Andreas > > Krennmair > > > > -- > > Smarty Development Mailing List (http://smarty.php.net/) > > To unsubscribe, visit: http://www.php.net/unsub.php > > -- > E-Commerce: Verkauft etwas, das mit elektrischem Strom funktioniert. (modern > für Multimedia) > Andreas Krennmair > > -- > Smarty Development Mailing List (http://smarty.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php >

« previous php.smarty.dev (#1023) next »