03 December 2008

Dynamic Tree DTree for Blogger Blog

In course of my experiments to bring normally dynamic content in the Blogger blog to the appearance and functionality of the static Websites, I was trying to implement the Blogger hack, allowing displaying the blog Table of Content in the Windows Explorer similar interface. While there are multiple scripts available online for this modification, I had to try several of them before I actually found one, which worked right away with relative simplicity. It is my pleasure to offer it to you. All credit for this excellent script is to the author of The Blogger Guide. I will repost the article without modification in respect to the script developer.

A tree control (i.e. the GUI element found in the left pane of Windows Explorer) provides a useful way of organizing a set of hierarchical items. This article will present a method to incorporate such a tree control in to Blogger blogs.

Before we proceed, let’s take a look at how our final tree will look like.


Now let’s see how to include a tree like the above in your blog.

Step 1


First step is to include two resources, a JavaScript file and a CSS file, in to the Blogger template. Copy the following two lines of code and insert them in to the head section of your template.


<link href='http://thebloggerguide.googlepages.com/dtree.css' rel='StyleSheet' type='text/css'/>
<script src='http://thebloggerguide.googlepages.com/dtree.js' type='text/javascript'/>


You can copy it immediately under the <head> tag as shown in the figure below. (These two resources are hosted on the Blogger Guide companion site. Don’t worry, there is no tracking code or any thing of that sort there. It’s used purely for hosting files referred to from these articles)


Save your template and exit Edit HTML mode.

Step 2


Next step is to write the code necessary to create the tree. I will first present a sample code and then explain it.

<div class="dtree">

<p><a href="javascript: d.openAll();">open all</a> | <a href="javascript: d.closeAll();">close all</a></p>

<script type="text/javascript">
<!--

d = new dTree(’d’);

d.add(0,-1,’Favorite Articles’);
d.add(1,0,’3 Columns’);
d.add(2,1,’3 Columns Explained’,’http://bguide.blogspot.com/2008/02/three-column-templates-explained.html’);
d.add(3,1,’Skeleton of a Template’,’http://...’);
d.add(4,1,’Adding a Third Column’,’http://...’);
d.add(5,1,’Layout Wire Frame Editor’,’http://...’);
d.add(6,1,’3 Columns with LR Sidebars’,’http://...’);
d.add(7,0,’Blog Traffic’);
d.add(8,7,’How to Monitor Visitors’,’http://...’);
d.add(9,7,’Feedjit’,’http://...’);
d.add(10,7,’Exclude Your Traffic from GA’,’http://...’);
d.add(11,0,’Customizations’);
d.add(12,11,’Add a Custom CSS class’,’http://...’);
d.add(13,11,’Related Posts Table’,’http://...’);
d.add(14,11,’Limit Widgets to Specific Pages’,’http://...’);
d.add(15,1,’3 Column Step by Step Guides’,’http://...’);

document.write(d);

//-->
</script>
</div>


The first line defines a generic div element and applies the class dtree in to that. This CSS class is defined in the dtree.css file which we included in Step 1 above. Next line inserts two buttons (in fact, links) to Expand and Collapse all the nodes in the tree. Thirdly, you find a Javascript enclosed within a <script> element. The first line in the script, d = new dTree(’d’), creates a new tree object to which we can insert nodes. The following lines which start with d.add(...) are the statements that insert all the nodes in to the tree. Then the last line of the script, document.write(d), renders the created tree on to the browser.

The add() function of the dTree takes in several parameters. The first 3 parameters are required (i.e. you must provide values for them) and the other parameters are optional. The above example uses the following 4 parameters.

  • Node ID - A unique numerical ID number. Assign a sequentially increasing number to each new node.
  • Parent Node ID - If you want to create a child node, then the ID of the parent node should be given here. This will be ’-1’ for the root node. (See the first d.add(...) line in the example)
  • Node Name - A textual description for the node
  • Node URL - If you want the node to link to some resource (e.g. an HTML page or some online image), provide the URL of the that resource as the 4th parameter.
For a full description of the add() function see here. You don’t have to provide consecutive (or adjacent) IDs for all the child nodes at a given level. For example, node 15 of the above snippet is attached as a child of node 1 called ’3 Columns’. You can have the nodes anywhere as long as you maintain the uniqueness of the node IDs and provide the correct parent node IDs.


Step 3

Once you finish adding the nodes, copy the entire code starting from the <div class="dtree"> to the corresponding </div>. Then insert the entire code using an ’Add HTML/Javascript Element’ widget of the ’Add Page Element’ option. Place the widget where you want the tree to appear. Save the template and view your blog. You will have the tree sitting nicely in your blog! One limitation is the fact that node names do not wrap at the edges. So you have to give names that fit withing the width of the containing sidebar (or whatever location). Let me know what you think of it and also if you come across any problems when installing it.

Acknowledgment: I have used the free tree control offered by Geir LandrŅ† at Destroydrop. The original files have been slightly modified to make them available online, to be used inside Blogger.

Note: You are free to use the resources used in Step 1. But if you do use, please link to this article from your blog.

If you want to see the practical implementation of this script, you can visit my new blog Data Recovery Techniques.


Update 03-18-2012: The script code to be implemented in the template has found to be corrupted in this post. It was corrected as needed. For more than three years, I am using this DTree approach in most of my Blogger blogs. It is easy to implement, easy to update, and works seamlessly for years. 







1 comment:

  1. Congradulations! This post has been picked to feature in the Spotlight on SpotlightBlogger.com!!!
    Check it out at:
    http://spotlightblogger.com/2008/12/blogging-tips-spotlight-81208/

    ReplyDelete

LinkWithin

Related Posts Plugin for WordPress, Blogger...