[pmwiki-users] The Template Shuffle

David Spitzley dspitzle at wash.k12.mi.us
Fri Apr 15 12:08:05 CDT 2005


Oops, sent this directly to PM:

Hmm, now it doesn't even work for the first directive on the page.  I
even tried tweaking the code from "PZZ(\$GLOBALS['FmtV'] to ['$FmtV'],
and it doesn't make a difference.


>>> "Patrick R. Michaud" <pmichaud at pobox.com> 04/15/05 11:56 AM >>>
On Fri, Apr 15, 2005 at 11:31:44AM -0400, David Spitzley wrote:
> Hmm, it >almost< works, but not quite.  If you check 
> 
>
http://www.davidaspitzley.org/GPMIWiki/index.php?n=Content.CountyTemplate


Oops, it's the $...Fmt variable cache at work.  Okay, change the code
to the following:

    # change the link format for creating new pages
    $LinkPageCreateFmt = "<a class='createlinktext'
href='\$PageUrl?action=edit\$LinkTemplate'>\$LinkText</a><a
class='createlink'
href='\$PageUrl?action=edit\$LinkTemplate'>\$LinkText</a>";

    # default is no template
    $FmtV['$LinkTemplate'] = '';

    # the (:template Group.PageName:) markup causes any create page 
    # links that follow to use Group.PageName as the template
    Markup('template', 'directives',
      '/\\(:template\\s(\\S+)\\s*:\\)/e',
      "PZZ(\$GLOBALS['FmtV']['$LinkTemplate'] = '&amp;template=$1')");

That should fix it.  (If you're doing the other markups, you'll need
to switch them to use 'FmtV' also.)

Pm

> >>> "Patrick R. Michaud" <pmichaud at pobox.com> 04/14/05 10:29 PM >>>
> On Thu, Apr 14, 2005 at 09:16:04PM -0400, David Spitzley wrote:
> > Ok, I'm looking to do something with templates that may not be
> doable,
> > but I thought I'd ask.  My wiki has a page called
MichiganCounties,
> > which has one link off of it to each county in the state; the
> majority
> > of them do not currently have pages, and through PM's kind advice,
I
> was
> > able to set up MichiganCounties.php so that all of the links off
of
> that
> > page use CountyTemplate as the source template.  That's spiffy.
> > 
> > The trick now is that each County page is going to have two sets
of
> > links: one set points to pages for municipalities in the county,
> while
> > the other set points to pages for school districts in the county. 
> So,
> > the question is, can I somehow set up the CountyTemplate page so
> that
> > the links in the municipalities section use MunicipalityTemplate
and
> the
> > school districts use DistrictTemplate?  I'm inclined to think not
> given
> > how the trick in MichiganCounties.php is set up, but I figured I
> might
> > as well ask.  
> 
> ...some people are *never* satisfied!  :-) :-) :-)
> 
> But, since you asked, and since I like a challenge, here goes an
> idea.  I haven't tested any of this code -- I just want to see if
> it's along the lines of what you're looking for...
> 
> In config.php:
> 
>     # change the link format for creating new pages
>     $LinkPageCreateFmt = "<a class='createlinktext'
> href='\$PageUrl?action=edit\$LinkTemplate'>\$LinkText</a><a
> class='createlink'
> href='\$PageUrl?action=edit\$LinkTemplate'>\$LinkText</a>";
>     
>     # default is no template
>     $LinkTemplate = '';
> 
>     # the (:template Group.PageName:) markup causes any create page 
>     # links that follow to use Group.PageName as the template
>     Markup('template', 'directives',
>       '/\\(:template\\s(\\S+)\\s*:\\)/e',
>       "PZZ(\$GLOBALS['LinkTemplate'] = '&amp;template=$1')");
> 
> Okay, in the MichiganCounties page you can add the directive
> (:template Content.CountyTemplate:).  This will cause all new page
> links that come after the directive to use Content.CountyTemplate
> as the default.
> 
> In the CountyTemplate page you'll add
> (:template Content.MunicipalityTemplate:) before the section
> with the municipality links and (:template
Content.DistrictTemplate:)
> before the section with the school district links.  This changes
> the new page links in each section to the corresponding templates.
> 
> Of course, I've used (:template ...:) here to show generally how
> this works.  But you might not want people to see (and be confused
> by) the (:template ...:) directives in the middle of the markup.
> So, you could key the setting of the template off of something else. 

> For example, if you know that the sections will always begin with 
> "!!!Municipalities" and "!!!School Districts" in the markup, you
> can key the changes from those:
> 
>    # "!!!School Districts" switches template to
> Content.DistrictTemplate
>    Markup("schooldistricts", "directives",
>      "/^!!!School Districts/e",
>      "'$0'.PZZ(\$GLOBALS['LinkTemplate'] =
>         '&amp;template=Content.DistrictTemplate')");
> 
>    # "!!!Municipalities" switches template to
> Content.MunicipalityTemplate
>    Markup("municipalities", "directives",
>      "/^!!!Municipalities/e",
>      "'$0'.PZZ(\$GLOBALS['LinkTemplate'] =
>         '&amp;template=Content.MunicipalityTemplate')");
> 
> Note that the "!!!School Districts" markup still gets processed to
> produce an <h3> heading (it's left there via the '$0' in the 
> replacement string) -- but now that specific heading also has the
> side effect of changing the edit template for any new page links
> that follow it.
> 
> Anyway, hope this helps, or at least points in the general direction
> of how this could be solved.
> 
> Pm
> _______________________________________________
> pmwiki-users mailing list
> pmwiki-users at pmichaud.com 
> http://pmichaud.com/mailman/listinfo/pmwiki-users



More information about the pmwiki-users mailing list