in reply to Template Toolkit Question

Maybe I'm misunderstanding, but I don't really see any involvement of TT2 here.  If you don't want relative URLs, why don't you use absolute ones? I.e.

href="/css/wiw.css"

presuming the document root / is set up to correspond to the WIW directory.

Replies are listed 'Best First'.
Re^2: Template Toolkit Question
by Your Mother (Archbishop) on May 19, 2010 at 20:59 UTC

    That might be an absolute path(?). But an absolute URI needs the server and protocol, no? href="/css/wiw.css" is relative to the server root.

      That might be an absolute path(?). But an absolute URI needs the server and protocol

      Sure, but I deliberately used "URL" to make it clear that we're not talking about directories on the server here, but rather what the path part of the URL maps to via the web server configuration.

      href="/css/wiw.css" is relative to the server root.

      Yes, but in this sense you could also say that a path like /usr/local is relative to the root of the file system :)

Re^2: Template Toolkit Question
by Perobl (Beadle) on May 19, 2010 at 21:30 UTC

    I think absolute URLs are turned off by default in TT2. Isn't there a reason for this?

    Allow me to provide some additional information. I chose to use TT2 because I want to separate the code from the HTML as much as possible. Ideally, I'd like to give our web designers creative control of the HTML (they are not coders).

    They will be creating the HTML using Coda (an editor). All of the image links in the HTML are relative to the site's root directory (and this is fine by me). I would simply like to grab their HTML code and drop it into my TT2 wrapper whenever they make changes. I will then send my CGI generated output to the page using the [% content %] directive. Very clean solution for us.

    The only problem is, I haven't figured out a way to make the image links work (or the external CSS for that matter).

    I think I can use a TT2 config template, such as:

    [% root = '/Users/mysilmaril/Sites/WIW' images = '$root/assets/images" %]
    And then in my HTML image tags ... <img src="[% images %]/logo.jpg">

    However, this would still require us to hardcode the [% images %] TT2 variable into the HTML. I was hoping to avoid this, but maybe it isn't possible?

    Hope I'm not confusing everyone ...

    Thanks.

      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/

        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!