Blog Features

Core Features

  • Multi-entry View: Ability to see preview of many blog-entries (usually used on the front-page)
  • Single-entry View: Display entire blog-entry, with comments. Usually used when clicking from multi-entry view. Includes "Read More...".
  • Entry list: Single line summary of all entries. Usually used on sidebars, for most recent entries.
  • Control Panel: Contains link to blog elements
    • Create new entry
    • link to Entry List
    • Link to templates
  • Tags/Categories (tag cloud)
  • Comments
  • Pingback
  • Google blog ping
  • comments form supports blocklists
  • comments form contains honeypot AND captcha
  • approve comments
  • approve external links
  • list all unapproved posts


  • Free form titles: No requirement for dates in titles.
  • Blog-entries can be in any group.
  • Must work in a farm environment.
  • Separate data from display.
  • Meta data storage, for rss feeds, pagelists, etc.
  • Easy entry form for meta-data (rather than user entering (:xxx:yyy:) variables).


Blog Entry

  • Author Date
  • Title
  • URL
  • Intro
  • Body
  • More tag
  • Author


  • Title
  • Comment
  • Author name
  • Author URL
  • Author email
  • Spam code



No code required, this is more a series of instructions. Very elegant approach to implementing a blog using basic PmWiki concepts. Addition of comments and other blog features is simple, but not documented, in order to keep the concept simple.


  • Not required, but is documented with blog pages being named with a date, rather than page-variables. This is to make pagelists quicker. However, it does mean pages are not particularly SEO friendly.
  • Blog-entry data is separate from blog-display templates. This makes changing display layout easy.
  • Instructions are written assuming all blog-entries are in a single Group. Use of page-variables can easily remove this restriction.
  • Provides a means of displaying a "Read more..." link.
  • Recommends use of EditTemplates.


  • Blog entries
    • Stores all information for a single entry in a single page.
    • Uses text variables to hold post meta-data.
    • Uses sections to demarcate introduction and body.
  • Blog entry display
  • Maintains display templates as separate wiki pages. Recommend: Store all templates in a single page, delimited by sections.
    • Blog-entry template holds the display format for a blog-entry (use with EditTemplate).
    • Entire blog-entry is prefixed with an include of the blog-entry template, and a comment section to hide blog-entry data. Thus, when viewing the entry, the meta data is shown using the 'included' template.

BlogSimple2 (beta2)

Minimal code, primarily to set helper variables for dates.


  • Blog posts can exist in any group
  • Post title can be anything, no date necessary
  • Doesn't use page-variables for post meta-data -- no meta-data is used.
  • Uses SiteHeaders and Footers to create entire blog-entry display.


  • Uses page-variables to demarcate blog entries. Recommend changing from numeric to string, ie: posttype=(draft,blog,sticky)
    • Potentially means lower performance due to file scanning. Likely to be low with 'usual' blog size ~200 pages, and may be managed with caching. Performance impact needs to be determined before approach is abandoned.
  • Blog header is stored in a separate page (Site.BlogMeta), includes blog date, time-of-day, show/add comment links, and edit link.
  • Site.SiteHeader is used to display Site.BlogMeta.
    • Uses a blog-entry page-variable to determine if page is a blog-entry.
  • Comments are stored in PostComments group, a comment page for each blog-entry.
  • Site.SiteFooter is used to display comments, and to display comment box.
  • Recommend: Use $BaseNamePatterns rather than $FmtPV['$BaseName']
  • Uses pagelists with embedded blog-entry display templates; reduces ease of use.


  • Minimal code


  • Blog posts cannot exist in any group. Need changes to template names.
  • Post title can be anything, no date necessary
  • Doesn't use page-variables for post meta-data -- no meta-data is used.
  • Uses SiteHeaders and Footers to create entire blog-entry display.
  • Has commenting and comment approvals. Stores approval inside the actual PmWiki page to prevent spoofing.


  • Heavily utilizes other scripts.
  • Uses PmForms, but doesn't abstract data from layout.


Blogger examines approaches from existing cookbooks, and combines them.

Blog Approaches

  • Store display templates in single file; separate each template with sections.
  • Use EditTemplates to pre-populate blog-entries.
  • Use page-variables for blog-entry meta-data; OR use PmForm for entire blog entry.
  • Use dynamically assigned GroupFooter (including a base template) to display comments, when page-variable 'posttype="blog"'.
  • Use PmForm for comments
  • Store comments in separate Comments group, and auto-include on blog page (use page-variables for include via PageFooter).