[pmwiki-devel] Link Kludge.
Stirling Westrup
sti at pooq.com
Wed Oct 31 14:04:01 CDT 2007
Patrick R. Michaud wrote:
> On Wed, Oct 31, 2007 at 02:35:23PM -0400, Stirling Westrup wrote:
>> Patrick R. Michaud wrote:
>>> On Wed, Oct 31, 2007 at 01:42:55PM -0400, Stirling Westrup wrote:
>>>> I have a problem, and there doesn't seem to be a simple way of solving it. The
>>>> markup [[Group/]] creates a link to the home page of Group. This is done via
>>>> the definition of $DefaultName. What I need, is a way to associate different
>>>> home pages with different groups. Its trivial to write up a function that
>>>> looks up the home page for a particular group, but the context in which
>>>> $DefaultName is expanded doesn't seem to include the information of which
>>>> group the home page is for.
> Yes, but you could easily set $PagePathFmt to be
>
> $PagePathFmt = array('{$Group}.$1', '$1.{$HomePage}');
>
> and then MakePageName will use the $HomePage page variable instead
> of $DefaultPage when computing the result of "Group/" or "Group."
> So would other places that want to treat a page reference as a
> link to a group's home page.
>
> Also, I think the above function is better written as:
>
> function HomePage($pagename) {
> $group = PageVar($pagename, '$Group');
> $home = PageTextVar("$group.GroupHeader", 'HomePage');
> if (!$home) $home = $group;
> return $home;
> }
>
I agree. Mine was just something I threw together while testing the idea.
> Then it can be turned into a page variable with
>
> $FmtPV['$HomePage'] = 'HomePage($pn)';
>
> This, combined with setting $PagePathFmt as given above, should
> give you what you want.
Alas, it doesn't. Something like this was the first thing I tried, actually.
The problem is that a link like [[Group/]] in Site.Sidebar results in
$HomePage being expanded to HomePage("Site.Sidebar"), the Group we are trying
to look up is lost.
More information about the pmwiki-devel
mailing list