Replace Templates with TextExpander

Much of our genealogy research revolves around forms. And, while many of those forms – like census forms – are from outside sources, we often create our own customized forms to support our research efforts. These might be forms to help us index our collections or maintain research logs or create a cemetery inventory. I used to build a blank form in my word processing app and save it as a template file. That works well when each form is a single document, but what about a situation where the form is repeated several times within a single document?

I’ve been working on a guide to one of our local historic cemeteries for some time. It includes information from an early inventory and adds photos, additional information on the individuals buried there and more.

Basic data form used in my cemetery guide project.

My guide is being built in a sort of scrapbook style since I plan to include photos of the cemetery as well as documents, historical records and anything else that adds value to the cemetery’s history. I still need some structure for the details and to do that I’ve built a basic table to input a standard set of data items. You can see a sample of it here. This form will be used to generate a record for each entry documented in the early inventory, but it won’t necessarily appear on each page – especially once I start adding biographical information, images and scanned documents to the guide. So, in this case, a document template will not be very useful. Fortunately there is another option – a text replacement app like TextExpander [Mac - $34.99]. With it I can save a blank version of the table as a TextExpander form and, by typing a few characters, TextExpander will build this table for me at the point of my cursor. Using this method, I can easily create any number of “forms” within this document and include them when and where I want.

These “forms” are called snippets in TextExpander and they consist of two parts: 1) the text to be inserted and 2) the abbreviation that will be used to call the snippet. To create a snippet, I start by typing the text that will be my snippet. In my table example, it’s more than just text but that’s okay. TextExpander will capture the formatting as well as the characters that make up my form.

A blank form will become the content of my snippet.

Here you see the blank form I created in my Pages word processing app. You’ll notice that I’ve merged the two columns in the top row and set that font to bold. I’ve also turned off the gridlines for the table. I’ll see them here as I edit the tables, but they won’t appear in print or PDF versions of the document. Once I’ve got the form the way I want it, I’ll select the entire table and copy it. When TextExpander is running, there’s an icon on the menu bar at the top of your screen. Click it to display a menu similar to the one you see here.

Since I’ve already copied my table in Pages, I’ll choose the Create Snippet from Clipboard command. This will bring up the snippet management screen with the contents of my clipboard – the table – displayed in the Content pane as you can see in the example below. Notice here that you don’t see the ghost table grid that is visible in Pages. Don’t worry, it’s still there. Below the Content pane is the Abbreviation pane. Here I put the characters I want to associate with this content. It’s the text I will type to insert the table form in my document.

TextExpander snippet management screen.

Notice in the left pane that I have set up folders to organize my snippets. The selected folder will be the location where my current snippet is automatically saved. If you look at the contents of my Editing folder, you’ll see special characters, snippets of HTML code and even WordPress shortcodes. TextExpander for Mac works in any app so I can use it to quickly add a custom form that combines HTML and shortcodes inside a blog post as easily as I created my table form in Pages. Are you using Evernote for your research log? Use TextExpander to add the appropriate form into a blank note. The few characters you type to add the form is much faster than copy/pasting a template note.

It won’t take long to find any number of other uses . . . like the special character snippets for use in Twitter and snippets to ensure that I stay consistent in my use of the term “ebook”.

While at first glance, the $34.99 price tag for this app might look a bit steep, it has more than earned its keep in my workflow. As a forms manager it will quickly pay for itself, but that’s just the beginning. There’s also a TextExpander for iOS app [$4.99] which synchronizes the snippet library with the desktop version via Dropbox. It works with many of my favorite iOS apps such as Byword, Day One, Drafts and Notebooks to save me lots of time and effort.

Note that TextExpander isn’t the only text replacement application out there. Windows users can take advantage of the PhraseExpress app. For each of these apps, the details may be a bit different, but the basic concepts are the same.


Build a table of contents for your blog

Badge-BlogBytesAs we all know, a blog site presents its content in reverse sequential order. This is great for news or journal type blogs, but not the best for organizing a family history blog. Most blog platforms offer a page feature – the ability to create a page outside the blog’s sequential structure – which can be used to create your own table of contents.

Blogger page as table of contents

Blogger page showing page navigation at top of theme.

Blogger provides up to 10 pages (including the About page) which can be used however you see fit. In this example, I’ve created a page for my Chattooga County Barkers and added their family tree at the top of the page. I’m beginning to build links to specific stories already published in the blog. One of the beauties of building your own table of contents is that you don’t have to limit your links to your site. For example, I’ve got a family tree for these Barkers at WeRelate containing the genealogical details. Even though I don’t control that information (any WeRelate user can add to those pages), they are still the definitive resource for my family record so I’ll link each family group to their respective WeRelate page. Selected stories are posts I’ve written on my blog about specific family members, events or traditions. As I write more stories to “flesh out” a family’s history, I can easily reorganize these links into a different order to better present that family’s story.

WordPress users have the advantage of a complete paging system giving you the ability to build any number of family pages for each family you are researching and include some narrative while also using it as a table of contents for your blog articles and outside links. Pages have their own navigational system which can be displayed as top menus or sidebar menus, depending on your theme. And, best of all, WordPress offers nested pages which give you the ability to present your history in the traditional tree format.
WordPress pages editor

In this example, you can see that the Barker, Barrett and Gervais pages are children of the Family History page. The Gervais page serves as a parent of the South Carolina and Texas pages. My plan is to combine narrative with links on each of these pages. The view you see here is within the admin area of the platform. I can insert additional pages at any location within this structure when I have content to publish. For example, once I develop enough research to include a Mississippi “chapter” to my Gervais story (It was a long stop on the way to Texas.), I can insert it into it’s logical place between South Carolina and Texas.

Page AttributesCreating this hierarchy is simple. In the Page Attributes box in the right sidebar, select the page that will be this page’s parent and choose the order it will appear under that parent. In this example, I’m working on the Texas page which will be the second child of the Gervais page. When I’m ready to add the Mississippi page, it will become the second child and Texas will be edited to become the third. It’s that easy! The only drawback is that a page must be published before it can be selected as a parent. If it’s not ready for prime time, you can reset it to draft once you’ve made the connection to your child pages.

Even Tumblr offers pages although you’ll need to edit your theme to get to them. I’ve found that using a page to present a tag cloud – along with some text explaining what a tag cloud is – works almost as well as a traditional table of contents. This example is from my Genealogy 101 blog. You’ll find a tag cloud generator with instructions at


Check to see what page options your blog platform supports and take advantage of them to spotlight your family stories while making them easier for your family to find.

Jetpack: Widget Visibility

The Widget Visibility tool in the Jetpack plugin can be very useful. It makes it possible to place a widget so it’s only visible in certain situations. For example, I’m building a digital library [see Society Journal for details] for my genealogy society. It consists of a WordPress page to introduce the library and each library item is a WordPress post assigned to the Library category and using tags to define the subject matter. I’m also using a defined set of tags to build a menu of sections – like histories, memoirs, genealogies and military. Additional tags are added to each item to further define its content.

digital library page

The main page of our digital library.

Here you can see the library’s menu widget posted as part of the page content and in the sidebar you see the tag cloud widget. I also want the menu and tag cloud to appear in the sidebar of every library item post. Jetpack’s Visibility makes that happen.

tag cloud widget

The tag cloud widget with the Visibility panel displayed.

Here you see the tag cloud widget. I have clicked the Visibility button that appears right next to the Save button on all widgets when Jetpack’s Widget Visibility feature is activated. The gray panel just above those buttons is the Visibility panel. First I set visibility to show this widget when a post assigned to the Library category is displayed then I clicked the Add item at the far right which displayed another set of options. I used it to display a Page and then chose the library’s home page. Save the widget and I’m done.  Note that I can choose from category, author, tag, date or page as items to determine visibility. Once that selection is mad, the second option will present choices based on that option. For example, when I chose Category, the “is” drop-down displayed each post category I had defined in this blog.

In the example I’ve given here, I’m using menus, categories and tags to organize a diverse collection of records and publications, but these tools can also be put to good use to organize your growing collection of family stories into an online genealogy. Thanks to Jetpack and the Widget Visibility feature, pulling it all together is quite easy.