[pmwiki-users] Hierarchical pages
Petko Yotov
5ko at 5ko.fr
Sat Apr 25 02:13:08 PDT 2020
I haven't received your message even after the mailing list was
restarted, so I'm copying it from the list archive:
> I've been reading the pages about Hierarchical Groups and have tried
> both HG and Cluster. It's possible (maybe likely) that I'm not
> understanding how these work or how to configure them to work the way I
> want.
I have never used these addons and haven't reviewed them, but you may be
able to do the breadcrumbs with PmWiki core features -- WikiGroups and
WikiTrails.
I'll explain below.
> I want to be able to create a tree of wiki pages and be able to walk
> back from a page to it's parent. Something like this:
>
> Maps
> |-- Europe
> |-- France
> | |-- Paris
> | |-- 1950
> | |-- 2000
> |-- Germany
> |-- Berlin
> | |-- 1989
> | |-- 2019
> |-- Munich
> |-- 2019
>
> When I create a page, say the last 2019 page, I want it to have a name
> which reflects the hierarchical structure. So [[2019]] on the Munich
> page should create and link to a page MapsEuropeGermanyMunich2019 (or
> something similar, with delimiters).
With the core (no hierarchical groups) you can have a WikiGroup
[[Munich/]] and pages Munich.Munich, Munich.2019, etc. In the
[[Munich/Munich]] page, typing [[2019]] will link to the Munich.2019
page.
The only problem is when there is another location named "Munich"
somewhere else, and you need to have another WikiGroup. In this case you
can select a different group name like MunichND for the city in North
Dacota. (Or, one would be called "München" the other "Munich").
> On the MapsEuropeGermanyMunich2019 page, I'd like to see a breadcrumb
> which looks like Maps>Europe>Germany>Munich>2019, where each component
> points to the corresponding ancestor page in the tree.
>
> Is there any way to do this?
You can use a WikiTrail. Some manual editing is required to create and
maintain the trail but then the breadcrumbs are automatic.
In your Maps.Maps page, you create a nested bulleted list with the
structure, like this:
* [[Maps/Europe]]
** [[Maps/France]]
*** [[Paris/Paris]]
**** [[Paris/1950]]
**** [[Paris/2000]]
** [[Maps/Germany]]
*** [[Berlin/Berlin]]
**** [[Berlin/1989]]
**** [[Berlin/2019]]
*** [[München/München]]
**** [[München/2019]]
(If you don't want this to appear in your page, you can place it inside
a (:if false:) conditional.
Then in every individual page, you use the "Path trail" markup with a
link to the wiki trail.
^|[[Maps/Maps]]|^
See https://www.pmwiki.org/wiki/PmWiki/WikiTrails#path-trail
Obviously, you can place the markup inside a GroupHeader or a
GroupHooter page in every city group, or find the recipe about enabling
a shared SiteHeader for all groups.
Instead of the "One WikiGroup per city" structure you may decide to have
one group per country, then have pages like France.Paris, then
France.Paris1950. In the page Paris you'll need to write [[Paris 1950]]
to make a link. Obviously, in your WikiTrail you'll need to link to the
actual page names.
Petko
More information about the pmwiki-users
mailing list