PkTemplate
Allow quickly creating multiple pages from a user-supplied template.
Description
PkTemplate allows a user to write a template using wiki markup and then rapidly create new pages based on that template.
Installation
As usual,
- Copy PkTemplate.phpΔ to your pmwiki/cookbook directory
- Add the following line to local/config.php:
include_once("$FarmD
/cookbook/PkTemplate.php");
Usage
Creating a template
Create a page you'd like to use as a template. The page may contain non-template information; the template part starts with the markup:
(:PkTemplate:)
Anything after that is part of the template.
Create fields that a user can populate with data using the markup (:pktvar variablename
A description of the variable:)
- pktvar = PK Template Variable
- don't use symbols in names
- limited markup for descriptions is ok, but nothing with
:)
If you use the same variable more than once in the page, you may omit the description: (:pktvar variablename:)
(It will be ignored if you do give additional descriptions.)
Create blocks of text a user can populate with the Markup:
(:pkttext textblockname Description of what multi-line text goes here:)
Save the page and then you will be presented with a form to create new pages based on your template.
Filling out the form to create new pages
- New page name: New page names may contain spaces
- Creates a page Main.NewPageNamesMayContainSpaces
- New page name: May Use Group. Name For Convenience
- Creates MayUseGroup.NameForConvenience - ignores the "Group" field
- If "Add link to created page" is checked, a link to the newly created page will be added to the top of the template page
- This is useful to not lose pages.
- (Admin may change whether this is checked by default by specifying
$PkTemplate['addLinkByDefault']=false;
in config.php)
What it looks like
If the template looks like this:
* [[Main.Enki-Addu | Enki-Addu]]
* [[Main.Micro | Micro]]
(links to previously created pages)
(:pktemplate:)
(:pktvar catname The name of the cat:)
likes to
(:pktvar catpasttime What does the cat like to do?:)
. (:pktvar catpronoun What pronoun does the cat use?:)
is very soft.
(:pktvar catpronoun:) says:
(:pkttext meowmeow What the cat has to say to us ''humans'':)
A user might fill out the form like this:
And would create the page Main.LunarLander with contents:
Luna likes to Watch squirrels out the window. She is very soft.
She says:
Meow meow MROW 'MORWWW!'
Notes
- There is no real difference between
(:pktvar ...:)
and(:pkttext ...:)
. Both accept Markup and both may be multiline if a user is determined enough. - Capitalization in the "template" markup is not important.
(:PkTemplate:)
and(:pktemplate:)
both work. Currently, both(:pktvar ...:) and (:PKTVAR ...:)
work, but that is not guaranteed in the future: use lowercase "pktvar/pkttext" by preference. - Don't
(:include TemplatePages:)
- the behavior is undefined. If you really need this, let me know, I might be able to provide an update. - PkTemplate will not overwrite pages that already exist.
Configuration
Admins may easily change a few behaviours:
$PkTemplate['addLinkByDefault']=false; // checkbox to add link to new pages is not checked SDV($HandleAuth
['pkdotemplate'], 'admin'); // change permissions to admin(read/etc) include_once("$FarmD
/cookbook/PkTemplate.php");
Change log / Release notes
2017.04.18 Release
- Markup text displayed at bottom of page now honors
$ROEPatterns
, so user sees what they would see if they edited the page - PkTemplate markup now runs "<_begin" so that (almost all) markup will actually be included in the template, including
[=comments=]
, etc.
See also
- NewPageBoxPlus Adds customisable box plus button form for page creation
- FoxPageManagement creating new pages, new groups and copying pages with Fox forms
- PmForm Form processing engine for PmWiki
Contributors
Comments
See discussion at PkTemplate-Talk?
User notes? : If you use, used or reviewed this recipe, you can add your name. These statistics appear in the Cookbook listings and will help newcomers browsing through the wiki.