[pmwiki-users] Sanity check of first recipe

Petko Yotov 5ko at 5ko.fr
Sun Apr 27 07:40:16 CDT 2008

On Sunday 27 April 2008, Jan Erik Moström wrote:
> What I want to do is to be able to insert markup like this
>      (:jpl src="path|45|10" pop="path|12|15" capt="bla bla bla":)
> and it should generate some code for displaying photos 
> The 'pop' and 'capt' arguments are optional.
> Here is my recipe
> <?php
> Markup("jPhoto",
>      'inline',
>      "/\\(:jp(l|r|c) src=\"(.+?)\|(\d+)\|(\d+)\"(.+?):\\)/se",
>      "Keep(jpFixMarkup('$1','$2','$3','$4',PSS('$5')))"
> );
> function jpFixMarkup( $type, $image, $iwidth, $iheight,
> $tagstring )


You may find usefull to look at how some other recipes are written. There is 
the ParseArgs() pmwiki function that will help you a lot, like this:

Markup("jPhoto", 'inline'
     "/\\(:jp(l|r|c) (.+?):\\)/se",

function jpFixMarkup( $type, $args)

	$opt = ParseArgs($args);
	# $opt['src'] is now your src= value
	# $opt['pop'] is now your pop= value,
		# to get the parts, use:
	list($path, $w1, $w2) = explode('|', $opt['pop']);
	# $opt['capt'] is now your capt= value
	return Keep("<pre>".print_r($opt, 1)."</pre>");


You may see for example how the Thumblist recipe is written. It accepts many 
arguments in the markup; it is quite complex but may be of some help, for you 
to write your own recipe. (Coincidently, it also does thumbnails linking to 
the originals.)


If you have any questions about this code, I'll be happy to help.

See also:



P.S. Remove the last ?> from your code, it is not needed, but any eventual 
newline/whitespace after it may break your layout with a PHP warning.

More information about the pmwiki-users mailing list