Thoughts in context: Connecting posts to my blog post index
Posted: - Modified: | pkm, wordpressI’ve been thinking about how to improve the inter-post organization of my blog so that I can write more effectively and so that other people can find things faster. I often link to posts I’ve previously written, but I rarely update old posts to link forward to other related posts. There are quite a few internal linking plugins for WordPress, but they seem more slanted towards SEO and keywords than I’d like.
I wanted to come up with another approach that could take advantage of the big outline of my blog posts at https://sachachua.com/index that I update every month. I’ve found this to be pretty handy for organizing things into finer categories instead of going back and updating lots of posts in WordPress. I can search this easily on my computer by using helm-swoop
, and I can move things around using Org Mode.
It got me thinking: Is there a way I can make it easier to connect posts to the index so that if people find an old post useful, they can explore related posts?
So here’s what I came up with: a small See in index link at the end of the post.
Not all the posts are indexed yet, but for those that are, clicking on that link will open up the blog index and scroll it to the right post, highlighting the match, so people can see what else is in the neighbourhood.
To make this work, I added the following HTML code to my blog index:
<script type="text/javascript"> // from http://www.jquerybyexample.net/2012/06/get-url-parameters-using-jquery.html function getURLParameter(sParam) { var sPageURL = window.location.search.substring(1); var sURLVariables = sPageURL.split('&'); for (var i = 0; i < sURLVariables.length; i++) { var sParameterName = sURLVariables[i].split('='); if (sParameterName[0] == sParam) { return sParameterName[1]; } } } function sachaScrollToBlog() { if (getURLParameter("url")) { var link = $('a[href="' + getURLParameter("url") + '"]'); if (link.length > 0) { $('html, body').scrollTop(link.offset().top - 100); link.addClass("highlighted"); } else { alert("Sorry, could not find post in index."); } } } $(document).ready(sachaScrollToBlog); </script> <style type="text/css"> a.highlighted { background-color: yellow; padding: 10px } </style>
Then I added this to the post.php
and single.php
for my WordPress theme:
<?php if (get_the_date('Y') >= '2008' && get_the_date('Y-m') < date('Y-m', time() - 60 * 60 * 24 * 7 * 2)) { print '<a href="http://pages.sachachua.com/sharing/blog.html?url=' . get_permalink() . '">See in index</a>'; } ?>
The date condition is there to minimize frustration. I’ve indexed posts published 2008 or later, and I usually post an updated index within the first half of the month. I might spend some time indexing older posts; if I do, I’ll update the starting position.
It would be interesting to refine my writing workflow so that my blog index is always up to date. That way, even new posts will have this magic indexing power. It might be difficult to get that squared up with my scheduling, though, since I sometimes write a few weeks in advance. Anyway, neat, huh? This should make the archives marginally more useful. =) Good for me too!