summaryrefslogtreecommitdiff
path: root/doc/ikiwiki/directive/map/discussion.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'doc/ikiwiki/directive/map/discussion.mdwn')
-rw-r--r--doc/ikiwiki/directive/map/discussion.mdwn61
1 files changed, 61 insertions, 0 deletions
diff --git a/doc/ikiwiki/directive/map/discussion.mdwn b/doc/ikiwiki/directive/map/discussion.mdwn
index 808930fa4..062b4267a 100644
--- a/doc/ikiwiki/directive/map/discussion.mdwn
+++ b/doc/ikiwiki/directive/map/discussion.mdwn
@@ -11,3 +11,64 @@ Question: Is there a way to generate a listing that shows *both* title and descr
Is that possible?
--Peter
+
+----
+
+The site I'm trying to set up right now (not really a wiki - no public editing) is divided into topics. Topics are pages that have `\[[!meta link="/topic"]]`. Topic pages contain an index of their subpages (done with `\[[!inline]]`); the subpages are the real content. I want a map in the sidebar that lists:
+
+ * all of the topics;
+ * all of the first-level subpages of the *current topic only*.
+
+That is, if the current page is "Topic A" or "Topic A/Page 1", then the map should look like
+
+ Topic A
+ Page 1
+ Page 2
+ Page 3
+ Topic B
+ Topic C
+
+but if the current page is "Topic B" or one of its subpages, then the map should look like
+
+ Topic A
+ Topic B
+ Page 1
+ Page 2
+ Page 3
+ Topic C
+
+On the top-level index page, or on any other page that is neither a topic nor a subpage of a topic, the map should list only the topics.
+
+Is there any way to do that? I don't mind mucking around with `\[[!meta]]` on every page if that's what it takes.
+
+-- Zack
+
+> I think that you're looking for this:
+>
+> `pages="((Topic*/* or Topic*) and ./*) or (Topic* and ! Topic*/*)"`
+>
+> Let's pull that [[PageSpec]] apart.
+>
+> * `(Topic*/* or Topic*)` matches all pages that are underneath a Topic
+> page or are a topic page themselves.
+> * `and ./*` further adds the limitation that the pages have to be
+> in the same directory as the page that is displaying the map. So,
+> for `Topic_A/Page_1`, it will match `Topic_A/*`; for `Topic_A`,
+> it will match `Topic_*` but not subpages.
+> * Finally, `Topic* and ! Topic*/*` matches all the toplevel topic pages,
+> since we always want those to show up.
+>
+> I haven't tested that this works or displays, but I hope it gets you
+> on the right track. PS, be aware of
+> [[this_sidebar_issue|todo/Post-compilation_inclusion_of_the_sidebar]]!
+> --[[Joey]]
+
+>> Thanks, but this assumes that topic pages are named `Topic<something>`.
+>> They aren't. They are tagged with `\[[!meta link="/topic"]]`, and as
+>> far as I can tell there is no [[PageSpec]] notation for "subpages of a
+>> page that satisfies link(foo)"...
+>> -- Zack
+
+>>> I think that the ideas and code in
+>>> [[todo/tracking_bugs_with_dependencies]] might also handle this case.
+>>> --[[Joey]]