Welcome, @Ryan_Quinn to the talk forums!
I have a substantially different approach.
This is a demonstration of using small external tiddlers to maintain relationships between content tiddlers. You can see all the People in this wiki, who are extracted from the Adams family tree on Wikipedia: John Adams (the second president of the U.S.A), his wife Abigail Adams, and a few generations of their descendants.
If you view a person, say John Quincy Adams, you will see a reasonably robust template describing his vital stats and relationships:
But if you edit this tiddler, you will see that none of the relationship information—parents, children, siblings—is actually included in this tiddler. The only custom fields are name
, born
, died
, caption
, and where needed, maiden-name
.
Instead of putting the relationship information inline, we have a number of separate ParentChild tiddlers that have only a numbered title, the tag ParentChild, and parent
and child
fields, which each have the title of another Person:
<!-- John Quincey Adams is `Person/5` -->
<!-- These are his parents -->
title: pc/3
tags: ParentChild
parent: Person/2
child: Person/5
title: pc/4
tags: ParentChild
parent: Person/1
child: Person/5
<!-- and these are his children -->
title: pc/10
tags: ParentChild
parent: Person/5
child: Person/9
title: pc/12
tags: ParentChild
parent: Person/5
child: Person/10
title: pc/14
tags: ParentChild
parent: Person/5
child: Person/11
These are used by the ViewTemplates named $:/_/my/viewtemplates/person, to display those parents, children and siblings. For example, we list the Children
like this:
<% if [tag[ParentChild]parent<currentTiddler>] %>
!!! ''Children''
<<list-links filter:"[tag[ParentChild]parent<currentTiddler>get[child]sort[born]]">>
<% endif %>
Parents
is similar. Siblings
is significantly more complex.
We could extend this to First Cousins
, or add a recursive version of Descendants
. If we added gender
fields, we could also do Aunt
, Uncle
, Niece
and Nephew
. We could track half-siblings and step-siblings, and many other relationships, all within our templates, without adding any data. We could add other relationship tiddlers, for instance, Spouse
.
You can also look at the Families tiddler, for another view of this data.
There is work to do to set this up. You need to create all those relationship tiddlers. To do so, I often add helpful input screens. Here, I have Add Family, which lets me pick the parents and children, click a button and have the relationship tiddlers added for each parent-child combination from my inputs.
This is not a panacea. The filters for siblings are non-trivial, and cousins would just be harder. But it’s powerful and I find it very useful.