in reply to Re^2: Template Toolkit Question
in thread Template Toolkit Question

I think the easiest solution would be to have your designers type src="/images/logo.jpg"href="/css/wiw.css", etc. and then put the respective files in the directories

/Users/mysilmaril/Sites/WIW/images /Users/mysilmaril/Sites/WIW/css

(with /Users/mysilmaril/Sites/WIW/ being the webserver's configured document root)

In this case, no additional mapping of path components like /images —> /assets/images would be required (via TT2 [% images %] or whatever).

If you can't get your designers to type anything other than src="/logo.jpg", you could set up a RewriteRule to prepend /assets/images to any URI-path that ends in .jpg, .png, .gif, etc.

P.S.: if you're going to use

[% root = '/Users/mysilmaril/Sites/WIW' images = '$root/assets/images" %] ... <img src="[% images %]/logo.jpg">

I'm pretty sure you don't want the /Users/mysilmaril/Sites/WIW part in there, as the image would then (most likely) be searched under

/Users/mysilmaril/Sites/WIW/Users/mysilmaril/Sites/WIW/assets/images/

Replies are listed 'Best First'.
Re^4: Template Toolkit Question
by Perobl (Beadle) on May 19, 2010 at 22:50 UTC

    Thank you for the help.

    I have no problem setting up an images directory as you've suggested.

    Coda (through dragging and dropping) actually sets up the image links like this:

    src="images/logo.jpg"

    assuming we change to the convention you've suggested (which we will). However, our problem arises when we dynamically create a new page using a Perl CGI. The Perl script is called from the cgi-bin directory inside the site's root directory. The script (using the TT2 wrapper which has image links like src="images/logo.jpg") creates HTML that actually tries to have the browser render image files from src="cgi-bin/images/logo.jpg".

    I just hard coded all of the image links with absolute URLs. It works fine in both Coda and TT2. Maybe this is the easiest way to deal with this issue? I'm just surprised with all the power TT2 offers through various config options that this can't be done without using absolute URLs. Of course, being totally new to TT2, I may be missing an obvious sol'n.

    Still interested in a more elegant sol'n if you have one ;-)

    Thanks!

      I'm just surprised with all the power TT2 offers through various config options that this can't be done

      TT2 doesn't semantically interpret your template text as HTML — it just fills in the template according to the template directives [% ... %] etc.   In other words, it doesn't "know" that the text src="images/logo.jpg" is an URI path of an image, so how should it selectively modify those parts of the template?

      All you could do is interpolate a TT2 variable like src="[% images %]/logo.jpg" (as you've already figured)...  but as you don't want to have the [% images %] hardcoded in the templates, there's little TT2 can do to help...

      So, either do the path mapping via the webserver configuration, or simply use absolute paths as already suggested, in which case it doesn't matter that your CGI script has the additional cgi-bin path component in its URI.

        Got it thanks. For what its worth, I'm only a few days old on template toolkit ... trying to get my mind around the templating language. That's why I announced myself as a newb ;-) Greatly appreciate the help.