Tags:
create new tag
view all tags

Question

By default, TWiki puts (a slightly modified version of) the breadcrumb path into the web page title.

Is there a way I can override this? (if not, I'll file an enhancement request).

When doing TWiki applications, I end up with pages whose names are, effectively, database keys. e.g.: ProjectDetail200707p2

I want to set the paage Title to show something... easier for the human reader to grok.

Environment

TWiki version: unspecified
TWiki plugins: DefaultPlugin, EmptyPlugin, InterwikiPlugin
Server OS:  
Web server:  
Perl version:  
Client OS:  
Web Browser:  
Categories: Missing functionality

-- VickiBrown - 12 Jul 2007

Answer

ALERT! If you answer a question - or someone answered one of your questions - please remember to edit the page and set the status to answered. The status selector is below the edit box.

Create a subskin template and override %TMPL:DEF{"windowtitle"}%.

-- ArthurClemens - 12 Jul 2007

Interesting suggestion... unfortunately, I don't think that will scale. unless there's a way to test if a variable is defined usng TWiki TMPL language? This would have to be conditional, based on a toggle switch. (19 times out of 20, I do want the default behaviour).

that is, given constants.pattern.tmpl

%TMPL:DEF{"windowtitle"}%<title>%TMPL:P{"titleaction"}% <nop>%TOPIC% ... %WEB%  ... %TMPL:END%

if, say, var PREFTITLE is set, I'd want to use that. Otherwise, I'd want to use TOPIC as usual.

-- VickiBrown - 13 Jul 2007

The approach we used with one client, to do exactly what you are asking for, was to provide a customised plugin that post-processed the output of the BreadCrumbsPlugin. The plugin recognised database keys in the breadcrumb and converted them to a "friendly" representation.

-- CrawfordCurrie - 13 Jul 2007

This could work (untested):

%TMPL:DEF{"normalwindowtitle"}%<title>%TMPL:P{"titleaction"}% <nop>%TOPIC% %TMPL:P{"titlesep"}% %WEB% %TMPL:P{"titlesep"}% <nop>%WIKITOOLNAME%</title>%TMPL:END%

%TMPL:DEF{"dbwindowtitle"}%<title><nop>%PREFTITLE% %TMPL:P{"titlesep"}% %WEB% %TMPL:P{"titlesep"}% <nop>%WIKITOOLNAME%</title>%TMPL:END%

%TMPL:DEF{"windowtitle"}%%TMPL:P{"defined PREFTITLE" then="dbwindowtitle" else ="normalwindowtitle"}%%TMPL:END%

-- ArthurClemens - 13 Jul 2007

I'm having some difficulty making the above work (though I like it). However, in trying to find an example of using "defined" I tripped over Codev.CustomPageTitle. The latter didn't have the elegance of Arthur's pair of DEFs but did work.

So I played with Arthurs code and found whhat was missing

%TMPL:DEF{"normalwindowtitle"}%<title>%TMPL:P{"titleaction"}% <nop>%TOPIC% %TMPL:P{"titlesep"}% %WEB% %TMPL:P{"titlesep"}% <nop>%WIKITOOLNAME%</title>%TMPL:END%

%TMPL:DEF{"dbwindowtitle"}%<title><nop>%PREFTITLE% %TMPL:P{"titlesep"}% %WEB% %TMPL:P{"titlesep"}% <nop>%WIKITOOLNAME%</title>%TMPL:END%

%TMPL:DEF{"windowtitle"}%%TMPL:P{"titleaction"}%%IF{"defined PREFTITLE" then="%TMPL:P{"dbwindowtitle"}%" else="%TMPL:P{"normalwindowtitle"}%"}%%TMPL:END%

(see also Codev.CustomPageTitle for the one-line solution

-- VickiBrown - 13 Jul 2007


I'm back with a slightly morphed problem. It almost works. SO very close and yet so befuddlingly far away.

The cover is working perfectly. If I put

   * Set PAGETITLE = Vicki Loves Bagels
into a page, the page title changes as expected. Tra la.

However, if I put

<!--
   * Set PAGETITLE = %IFDEFINED{"%FORMFIELD{"ProjectName"}%" then="%FORMFIELD{"ProjectName"}%" else="%TOPIC%"}%
-->

into the page, the Page Title becomes

%IFDEFINED{

Aargh.

I call this a bug Item4414 filed. Is there a workaround?

-- VickiBrown - 26 Jul 2007

I don't think this is a bug. Did you try to escape the % by using <nop> ?

Don't know which % needs to be escaped but quiet often something does not work because of nested variables and the way they are processed.

-- CarloSchulz - 26 Jul 2007

When the variable in the page has a different value from the same variable in the title, that violates the Principle of Least Astonishment. That qualifies as a bug.

(if I couldn't set any variable as shown, that would be a misunderstanding or a syntax error. But I can set the variable and it evaluates as expected... everywhere except the page title. That's a bug.)

FWIW, my workaround, which I've decided is actually better in this case, is the simpler

<!--
   * Set PAGETITLE = %FORMFIELD{"ProjectName"}% %TOPIC%
-->

-- VickiBrown - 26 Jul 2007

Change status to:
Edit | Attach | Watch | Print version | History: r9 < r8 < r7 < r6 < r5 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r9 - 2007-07-26 - VickiBrown
 
  • Learn about TWiki  
  • Download TWiki
This site is powered by the TWiki collaboration platform Powered by Perl Hosted by OICcam.com Ideas, requests, problems regarding TWiki? Send feedback. Ask community in the support forum.
Copyright © 1999-2026 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.