Description of the architecture of the CNCLoisirs site.

This site (in french) can be found at :


First, this site is a knowledge base, and the foreseen page number is between 200-500 (not taking into account pmwiki pages) - actual: 200 pages. Its subject is hobby CNC (computer commanded machines).

It is constituted as follows :

Content groups

  • CNCGroup : Only content main page, main menu, and a page about news on CNC (the news about the site go in the Operation group).
  • Construction : Pages about machines construction
  • Utilisation : What kind of machining exists
  • Practical : Practical use of machines
  • Technics : Technical details
  • Domains : In what domains we may use a CNC machine
  • Machines : Examples of machines
  • Realisations : Machined parts examples
  • Ressources : Ressources on CNC subject (links, drawings, etc.)
  • Misc. : Everything which does not go in other groups.

Groups about site operation

  • PmWiki : Documentation of the wiki.
  • Site : Site configuration
  • Operation : Operation of this particular site, for authors
  • Admin : Administration details of this particular site
    This is the only group password-protected.

Each group does have its own Menu (SideBar), set as ThisGroup.Menu.
The menu of main group CNCGroup send to main pages of each group. First option of each Menu of the content groups open a submenu to access others groups. Others options goes to the pages of the current group.

All these groups are set to be a unique NameSpace, this means that one link to a page shall be searched among all groups. This is defined in the variable $PagePathFmt. It is always possible to create two pages with identical names in two different groups, because pages are searched first in the current group.
By example : Construction.Steppers and Technics.Steppers. Though, in order to ease 'intergroup' or 'transversal' linking, unique names will be preferred. So practically, the page Technics.Steppers have been named Technics.SteppersTechnics, for an easy discrimination without the needs for group characterization.
So the call can be direct with StepperTechnics, without giving group name. The implementation is described in Cookbook:PagePaths.

PmWiki having yet no possibilities to have subgroups, a second hierarchical level was done, when needed, with PmWiki/WikiTrails, which does allow to make a path of type : <<previous page, pages directory, next page>>. The directory is simply done with a standard bullet list in an ordinary page. Categories are also used.

Directive (:toc:) allows to build automatically a content table, which is automatically built from headers !1rst level header, !!2nd level header, !!!3rd level header. See Cookbook:NumberedHeaders.

Sometimes, directories are created with anchors, defined with syntax [[#Anchor]], and called by [[#Anchor |text]]

Technical details and restrictions

  • Home page page of each group have the same name as the group
  • Maximum size of uploaded files is 200000 bytes (this is defined in config.php with the variable $UploadMaxSize)
  • Search tool and index don't search in the following groups:
    PmWikiAdmin and AdminCNC.
    Exclusion of elements is described in Cookbook:SearchResults

What is particular to this Wiki ?

Things which are not 'in line' with the present design of PmWiki:

  • The unique Namespace. The intent of the PmWiki groups design was to have separated namespace for each group. I use group to make an access hierarchy, but i want to ease intergroup linking, so the choice of an unique Namespace. We'll see...
  • Documentation was separated in two groups, one for administrator, and the other for authors. This has been abandoned due to difficulties to update with official releases.
  • Config file have been divided in three in order to ease port to others wiki:
    the config.php contains site specific data and call two others files:
    • francais.php : all localisation stuff (french)
    • zdistrib.php : customisation as described below

Customization :

   if (@$_POST['preview']) 
     $HTMLStylesFmt[] = ' body { background-color:#ffeeee; } ';

  • The attached files are stored in directories unique for each page as described in UploadGroups.
  • Administrator can save pages in compressed mode with BackupPages
  • Administrator can remove page history with ExpireDiff modified to change the action name (mind why ?)
  • Administrator is informed by mail of pages modification with MailPosts
  • Try to find Orphan and missing attachments with AttachlistEnhanced

And when the administrator have moved this site from one webhost to another he experienced problems that you can avoid with the help of RestorePmWiki

PRZ December 29, 2004 - update June 24, 2007