[pmwiki-users] How to create markup macros?

Dominique Faure dominique.faure at gmail.com
Wed Feb 7 02:04:44 CST 2007


On 2/7/07, Harry Forsdick <harry at forsdick.com> wrote:
> I have mastered some parts of extending pmWiki markup, but there is one
> simple case that I can't seem to get to work.
>
> In a travelog that has navigation between pages, I have been laboriously
> copying the same code at the top and bottom of each pakge and then modifying
> it so that there is a previous day and next day link.  The wiki code is
> something like:
>
> ||[[Main.MonFeb05|<- Monday, February 5]] || [[Main.WedFeb07|Wednesday,
> February 7 ->]]||
>
> I have gotten tired of this copying and so I decided to create what I think
> of as a macro to generate the pmWiki language code from a short directive:
>
> (:navprevnext Feb6:)
>
> the code that I have added to my config.php file is:
>
> ## NAVPREVNEXT
> Markup('navprevnext', 'fulltext', '/\\(:navprevnext +(.*?):\\)/e',
> "GenerateNavPrevNextCode('$1')");
> function GenerateNavPrevNextCode($DateStr)
> {
>   $date = strtotime($DateStr);
>   $prev = $date - 86400;
>   $next = $date + 86400;
>
>   $result = "||[[Main." . date("DMd",$prev) . "|<- " . date("l, F j", $prev)
> . "]] ||  [[Main." . date("DMd",$next) . "|" . date("l, F j", $next) . "
> ->]]||";
>
>   return Keep($result);
> }
>
> The problem is that the pmWiki markup appears, not the interpretation of the
> markup.
>

The Keep() function prevent your computed result to be interpreted as
further markup. You should have a try without it:

  ...
  return $result;
}

Dom



More information about the pmwiki-users mailing list