New Look: Unfolding Neurons 3.0

Time for a change around here.  A change that’s actually been in the works for quite a while.  I started working on a new theme for Unfolding Neurons at the beginning of 2008 but got sidetracked by changes in my life and never could get back to working on the theme I was developing (realized I didn’t like it anyway).  Part of the prep for the new look involved restructuring my blog and doing a major decompress of all my categories.  I eliminated over 40 categories I was using and decided I would use categories for the major themes in my blog and tags for all the other ways of describing what I write.

When I saw what was coming through the pipes with WordPress 2.7 I decided that rather than developing a theme from scratch, I’d take a look at what other good themes are out there and modify one to suit my needs.  That’s when I came across the excellent “Hybrid” theme framework by Justin Tadlock which he developed with WordPress 2.7 in mind.  What I like about Hybrid is that it is a framework that you can build child themes off of and if Justin updates Hybrid I can switch in the update without having to worry about the custom changes I’ve made for my site.  Unfolding Neurons 3.0 is actually built off of a child theme for Hybrid that Justin created called “Old School“.

I’ve still got more ideas for how I want to display posts around here but at least I’ve got the basics down.  Some of those ideas include styling  posts in certain categories a certain way and emphasizing “Asides” differently than other posts.  I also want to remove the Organize Series posts from the main loop on the front page and maybe move them to the sidebar.  But that might not be such a big problem if I can start posting more frequently here…which is something that I hope to do now that my blog has a fresh new look 🙂  If you are a reader of Unfolding Neurons (or just a lurker for Organize Series stuff) – let me know in the comments what you think of the new look!

Launch of vohzimbabwe.com

This entry is part 27 of 27 in the series Zimbabwe 2007 Project

vohzimbabwe.com screenshotAs part of the team of men who went to Zimbabwe in June – I was amazed by the work being done to make a difference in the country of Zimbabwe by the Village of Hope and their work with children. One of the things that I discovered in working with them is that they don’t have a website to promote what they are doing and provide an information/communication portal for their current and potential supporters. I decided to donate my services to design and host the website because I believe so strongly in the work the Village of Hope is doing.

So without further ado, I’m announcing the launch of the brand new website for the Village of Hope in Zimbabwe (vohzimbabwe.com).

Coincidently, that is why there’s been some inactivity on this blog lately (and also why development of the Organize Series Plugin has been stalled)…

When Surface Acquaintaince Becomes Practical Knowledge

In my pursuit to become more literate in the web-development world I recently made a few purchases of technology books that I hope will accelerate my understanding of things like Ajax, DOM, Json, JavaScript, Java…etc. I know that there is a wealth of material available for free on the internets but there’s just something about a good book that makes learning so much easier. Key word there is good!

A good book I’ve just finished reading (and written a review on) is “Head Rush Ajax“by Brett McLaughlin. Thanks to the freaky layout and writing style (it’s definitely not your typical technical resource!) this was a book that I quickly worked through and at least now I have a firmer grasp of concepts that were just acquaintances before.

For instance, I now know:

  • AJAX – isn’t a new language. It is simply a “method” of coding (using existing languages – JavaScript primarily) to enable visitors of a web-page interact with a page without having to reload it. Of course, I already knew of AJAXian goodness from using all the various web-apps that apply it – but it’s neat to know that it’s really not that hard to work with – it certainly isn’t as intimidating as I thought it would be.
  • DOM – Wow! What was I missing! I had no idea there was such hidden power in the browser and that so much could be manipulated by accessing the DOM tree 🙂 Of course to seasoned developers the DOM is nothing new – but it was one of those terms I saw referenced and mentioned but never realized it’s application. Understanding DOM is one of those knowledge bits that kind of pieces the puzzle together for so many code snippets that didn’t make sense to me before. Now when I read a bit of Java-script I’ll know what document.getElementByID("gotcha") means. To any neophyte web-monkey’s reading this…learn DOM!
  • XML – Okay I knew a little bit of XML before reading this book but the book helped me understand the far-reaching applications of XML that I didn’t know of before.
  • JSON – Hee hee, now when someone mentions JSON I’ll know they aren’t talking about that guy from Friday the 13th. This JSON is so much cooler! But since the book just scratched the surface on JSON vs. XML there’s a lot more learning that I’ve gotta do with it.

Bottom line, I’m glad I invested a few bucks in the book. It will be a good resource for me as I try out AJAX on my own and has opened up a new world of web-application and website prettification that was just a dream for me before.

An added bonus? I’ve got some ideas for how I want to improve my Organize Series WordPress Plugin 😉

Organize Series 1.6.2 release – minor bug fix

Right on the heels of 1.6.1, one day later, I’m releasing another version of the Organize Series WordPress Plugin.? Again, it’s a minor bug fix – ordinarily some of this stuff I’d leave until I can add more features etc.? – but since my life is pretty busy lately I’ve decided to release any fixes as I do them so that it can benefit those using this plugin.? I never know how long it will be before I can work on it again.

Anyway, enough with that dribble…you can download the files on the page here.

Minor Update to Organize Series WordPress Plugin

I just finished version 1.6.1 of the plugin.? There’s nothing big in this version – just a minor bug fix and some added files to make it compatible with the new WordPress plugins page.? I want to thank Jim for his communication with me that alerted me to a potential problem with my plugin resulting in this bug fix.

You can find out more and download the Organize Series WordPress Plugin on this page.

Organize Series 1.6 Released! Bug fix and New Feature

I’ve just pushed live the new version of my Organize Series Plugin for WordPress.? I was going to hold off doing a new release until I got some more features added I had in mind but the bug fix that is in this publish couldn’t wait.? So without further ado here’s the scoop on what this version includes:

  • BUG FIX: Blank screen/errors in the options panel when plugin installed in WordPress versions below 2.1.
  • NEW FEATURE: You can now set how posts will be displayed on the series ?table of contents? page (i.e. ascending or descending, ordered by date, author, title etc.) This can be selected via the new options panel on the plugin options page. (NOTE: This appears to only work with WP 2.1+ for now – I?m still investigating if it works with other versions)
  • NEW TEMPLATE TAG: ?is_series()? This tag will check for if the displayed category archive page is a series category. Returns true if it is, false if it isn?t.

As always, for the download and installation/upgrade and usage instructions, check out the plugin page.

Choosing WordPress: “She’s got guts”

This entry is part 4 of 4 in the series Wordpress as a CMS

In the previous article in this series I introduced the first reason for why I chose to use WordPress as the engine for three CMS-like sites that I designed recently. I wrote about the theming/template system in WordPress – the “looks”. In this article I’m going to talk about the “guts” of WordPress.

Why I chose WordPress

2. The Guts

When I refer to guts, I mean the following things that are “inside” the WordPress engine:

i. File Structure

From the perspective of a newbie developer, the WordPress file structure greatly aids in comprehending where things are and what files need to be edited/looked at in the development process. The fact that directory trees and file names are descriptive of their function cuts down on a lot of the guesswork into where things are located.

Here’s the layout of the directory tree structure:

/wordpress (root): You’ll find all the main configuration and base level files such as config.php (database settings), wp-blog-header.php (calls necessary includes and header information), and various feed related files among others. I’m not going to go into detail about each of the files but I’ll just mention that for the most part, the files in the root wordpress directory are what WordPress accesses when initializing.

/wordpress/wp-admin: In this directory are located all the core files that run the administration interface of wordpress. Files are named appropriately according to what their purpose is. For example, guess what the “edit-category-form.php” file is for? Or how about, “inline-uploading.php”?

/wordpress/wp-includes: For the most part this directory contains files that are called/included when various other WordPress .php files are executed behind the scenes – hence the name of the directory is wp-includes! Also, within this directory is found a sub-directory for all the javascript files/libraries included with the WordPress install. Again file names are very suggestive of their purpose. Examples like, “category-template.php”, “comment-template.php”, and “template-functions-post.php” all are indicative of this. A little bit later in this article I’ll mention the wonderful world of template-tags in WordPress but just a quick mention that the files that make the template-tag magic happen are located in the wp-includes directory.

/wordpress/wp-content: For most self-hosted WordPress users, the wp-content folder will be the one you’ll access the most. Within this folder is found all the user modifiable/plugginable content.

There is the /wp-content/themes/ folder which is where all the themes/template related files are found. Each theme is found in it’s own named folder. There is also the /wp-content/plugins/ folder which is where all the various WordPress plugins are put.
A brief word about naming convention with themes since this is another area that I really appreciate about WordPress when it comes to design/development. The files for themes all have a naming convention that just makes sense and again aids in understanding the purpose of the code found within. Here’s a brief list of the some of the various file options found in WordPress themes. (Important note: Not every theme has every file as some theme authors choose to keep their file arrangement compact and thus include various theme structure elements in a smaller number of files – which is possible with WordPress)

  • index.php – This is the layout for the initial page when WordPress is loaded. Alternatively (but not necessary with WordPress 2.1) home.php can be used for the first page. WordPress 2.1 however allows you to set what you want to be the first page loaded up via the administration options page.
  • single.php – The file that contains the layout for single post pages.
  • 404.php – Contains the layout for what is displayed on error 404 pages (when someone is trying to access a page that doesn’t exist).
  • archives.php – Usually contains the layout for archives pages
  • category.php – Contains the layout for category archive pages
  • sidebar.php – Contains the layout for the sidebar section of a page.
  • header.php -Contains the layout for the header section of a page (the top that usually contains the Blog Title/logo and the main navigation menu)
  • footer.php – Contains the layout for the footer section of a page (footers widely vary between themes but at the minimum usually contain the copyright info for the blog, powered by WordPress text etc.)
  • functions.php – Contain any theme specific functions. If your theme is widget enabled you’ll see this file as the code to enable widgets for the theme is found therein. Some theme authors also use the function.php file to add theme specific functions to the blog (without using the plugin functionality of WordPress).
  • page.php – Contains the layout for static pages on your WordPress blog.

So you can see from this list that the naming convention with WordPress themes also helps in understanding where various elements of the site design can be found. There is much more regarding this but since the WordPress Codex has great help files I’ll direct you there instead.

Also found within the /wp-content folder is the /plugins/ folder. This is the central location for where all the various plugins you can download and install for your WordPress powered site. This makes it easy for keeping track of what plugins you have installed and also knowing where to install the plugins you download.

Yes, the File Structure of WordPress is one component of her “guts” that help in developing CMS based sites.

ii. Coding Practice
Something else that is found in the WordPress core that might not be really obvious at first is the actual coding practice that is followed. Not only have WordPress developers followed good coding practices in the files they’ve written but they also encourage it for those adding to WordPress via themes/plugins.

When I talk about coding practice, I’m talking about adherence to x-html/.css/php standards – and certain structural elements in writing code so it’s easy to read and parses correctly. This, along with standards for inline documentation, make it easier to track various code elements and what it affects. When you read through WordPress core code not only is the structure fairly easy to follow (for someone who understands php of course 😉 ) but because functions are named for what they do it greatly helps in locating things you want to edit/understand. Clean code makes for less headaches!

When I was designing my sites and needed to understand how something worked in WordPress, not only did the file structure make it easy to find out what file the particular function might be in but the coding practice made it easier to find the snippet of code in that file.

iii. Template Tags
Probably one of the most important aspect of WordPress guts that stood out for me were the usage of what the WordPress community knows as template tags. Put simply, template tags are php functions that are used in your theme templates to perform specific tasks. There are a variety of different functions built into WordPress that make customizing themes and designing a CMS based site less time-intensive than most CMS-based scripts that are out there. Add to that the fact that Template Tags are fairly well-documented and this makes them even more powerful.

iv. Category System
One of the strengths of WordPress in my opinion is the way content can be organized via the built-in category system. Using this and various conditional template tags, the possibilities for making a dynamic CMS becomes much simpler. For instance, on my church website that I designed, I greatly utilized the category system to “split-out” various sections of content that the site would serve up. I have an “upcoming-events” category for events, a “Pastor’s Perspective” category for all my pastoral blog entries, an “announcements” category for various news and announcements made on the church site, and many more other categories. Then using the conditional template tags I can place content from a specific category in the design the way I want it. Whenever I want to add content to a particular section of the site I just have to add the post to the correct category.

Another bonus with WordPress is not only are there categories but you can also further classify posts by subcategory creating more possibilities for dynamic design.

v. Paging
One important component of WordPress that is key to it’s use as a CMS is the ability to create static pages from the administration interface along with dynamic posts. If this component were not available then it is likely I might not have used WP in designing my sites. Put simply, there are instances when you will be presenting content that rarely changes (hence, “static”) and thus you want an easy way to add this content and edit it if and when needed. If WordPress didn’t have this feature the only way to add static content would be to develop specific theme template files that have the static content encoded via html.

An added feature that was also appealing to me was the fact that I could create certain “page templates” in my theme that could be selected in the “write page” panel. This makes it possible for me to create different page layouts for different topics/subjects.

Again, the WordPress Codex has excellent documentation on everything to do with using Pages.

vi. Admin Interface
I could probably write a whole article on just the administration interface of WordPress but I’ll just include a short list of what was important to me in reviewing using WordPress as a CMS (everyone loves lists don’t they?)

  • Simple Layout – A novice user won’t have to read through a thick readme file to understand how to get around. That was important to me because for two of the sites I designed (gohpc.net and vigliottiwoodworking.com) I would not be the only one maintaining them and I wanted things to be as easy as possible for people who would be doing that.
  • Quick Load Time – The interface is not graphic intensive which makes things load fast for those on slower ISP connections. This was an important consideration for one of my site designs as the person maintaining that site is on dial-up (shudder)
  • WYSIWYG write/edit window – Although I’m not a big fan of the Tiny-MCE window that is included with WordPress for my own use – it does come in handy for those who are not familiar with html code. Once again an important consideration for me when designing for end-users who would be maintaining the sites. A plus for me is that I don’t have to use the “Visual-Rich Editor” (as WP developers have named it!) if I don’t wish to. WP 2.1 makes this even easier by giving the ability to switch between visual and non-visual (code) right on the same page.
  • Built in Roles Management – basically this means that I can give other people access to add things to a website without giving them full access to other administration functions.
  • Easy Plugin/Theme Management – The activation/deactivation of plugins and themes is ridiculously easy in WordPress.

vii. Security
The final “guts” component of WordPress that was important to me is something that few novice web developers think of but has nevertheless become one of the more important priorities in web-design. One of the dangers of dynamic websites that invite interactive contributions from visitors is the accessibility to malicious hackers. Insecure sites become targets for activities that can be as “benign” as the changing of your sites homepage to as harmful as the complete erasure of your database. Either way, when an unauthorized individual invades your website it’s never pretty.

Although, I’ve been fortunate to not experience being hacked, I realize that it’s only a matter of time before it happens if steps aren’t taken to ensure good security measures are in place.

I’ve written all that to write this, WordPress is one of the most secure publishing engines available. I’ve heard of very few WordPress based sites that have been hacked and even the ones that have been were due to the owners not ensuring that the latest WordPress updates have been applied.

In reviewing the WordPress development over the years I noticed that a great deal of attention is given to the security of the code and as such whenever there are updates released there are usually security patches included as a result of the diligent testing and reporting of the WordPress developer and user community.

No platform can ever be 100% secure from malicious hackers – but WordPress comes pretty close. That’s important.

That’s all I’m going to highlight about the guts of WordPress in this article. While there is much more that can be written, I wanted to try and limit what I wrote to what actually contributed to my decision to use WordPress as a CMS.

Next up, I’m going to talk about the beautiful appendages of WordPress – plugins. In the next article (or two) I’m going to highlight how the plugin architecture of WordPress makes it easy for developers/designers to expand on the core functions and then I’ll list some of the plugins I used in the sites I designed.

Organize Series Bug Fix: Disappearing Content

Thanks to Thomas Sutton, I became aware of a bug in the plugin that caused the post content for all posts to disappear when the auto-tag toggle for the series-meta was disabled. I’ve updated the .zip file for the download – which you can get quickly here. The only file that needs to be replaced is orgSeries.php.

Or if you are comfortable editing .php files do the following in the orgSeries.php file:

Find,
if($settings['auto_tag_seriesmeta_toggle']) {
$content = wp_seriesmeta_write($postID) . $content;
return $content;
}

which is at about line 375 (to 378)

ADD (at line 379 right before the })
return $content;

That’s it! I really apologize for that bug. It is something I should have noticed earlier. Thanks Thomas for pointing it out!

Choosing WordPress: “ooo doesn’t she LOOK fine?”

This entry is part 3 of 4 in the series Wordpress as a CMS

In the previous article in this series I gave a summary of some of the core differences between a CMS (content management system) and a blogging engine. I talked about some of the cases where one system is more preferable over the other when designing websites. In the conclusion to the article I mentioned that in light of what I had just written, it would have made more sense for me to go with a CMS for the website designs of Hanover Pentecostal Church, UnashamedSermons.com, and VigliottiWoodworking. Yet, as can be observed from the title of the series I obviously used WordPress instead. This article will focus on the first reason for why I made that choice.

But before I get to that I’ll give a quick rundown of some of the requirements that needed to be considered for each site.

UnashamedSermons.com
UnashamedSermons.com UnashamedSermons.com is where I host all the various sermons I have (and still am!) written and preached while pastoring at my church. There were predominately two purposes for me creating UnashamedSermons. One, I wanted a place where I could archive all my messages and access it for personal reference. Two, I wanted to make available to as many people possible these messages in the hopes more people would be impacted.

Some of the requirements needed for this site:

  • Custom theme to deal with a specific structure I wanted for the front page
  • A way of cataloging/archiving all the messages I submit

VigliottiWoodworking.com
vigliottiwoodworking.com My brother in law wanted to me to design a website for him that could be used as an online portfolio for his cabinet making business.

His requirements:

  • Simple design with pages he could edit that describe his business. Simple, but still professional looking.
  • Capability to add/remove pages at will (for him)
  • A gallery system that he could use to display pictures of work he had done. And again something he could easily edit
  • Everything had to be fast especially since he is usually working with dial-up internet access (affordable broadband is still no available where he lives) and didn’t want to have to wait through long page load-ups.

Hanover Pentecostal Church Website
hpconline In redesigning the website for my church I wanted to move away from the generic cms look in the previous design I had used (phpNuke based) and give it a more up to date look. The purpose of “HPCOnline” is to:

  • inform visitors of what my church is all about
  • to provide updates/event information for members/guests of the church
  • to make maintenance and adding of features in the future easier to do (and open up the possibility for church volunteers to assist in maintaining the site)
  • to provide a place for me to post a “Pastor’s Blog” as a way of communicating with people associating themselves with HPC (and reaching a wider audience as well).
  • show the latest sermon I’ve preached and provide not only the text of the sermon but also a podcast/downloadable file.
  • In the future, I hope to add an online library system where people can see what resources our church library contains, who has signed it out, and also sign out books themselves. On the backend the librarian can use this to maintain the church library (printing out reports of overdue books etc.)

With outlining some of the requirements I was looking to meet (just remember that’s only a summary!) in designing the three websites out of the way – it’s now time to (finally!) get to what won me over to WordPress as the solution.

Why I chose WordPress

1. Looks
When I refer to “looks” I’m referring to the robust theming/templating system that WordPress offers. While I can do graphical design work, it takes me a long time and my skills at coming up with something clean and neat are limited at best. With literally hundreds (thousands yet?) of themes currently available (and more being added daily!) there are a wide variety of not only color/graphical combinations but also site layouts to choose from. Since a large part of site design is developing a layout and graphical interface that makes it look polished to visitors, having this wide variety of themes to choose from saves time in the development process.

Another plus with the theming system WordPress offers is that due to the thought that has gone into the code architecture – the themes are for the most part – version independent. That is, with most themes you won’t have to update them when you upgrade WordPress to the latest version. Again, a plus on the maintenance side of the ledger.

Also, I must not forget to mention that creating/modifying themes is fairly straightforward and there are many excellent resources available that aid in learning how to create your own themes. If you are familiar with .css that goes a long way in the theme creation/modification process.

The first full-fledge design that I used WordPress for was my sermons site (UnashamedSermons.com). I decided I would give a go at creating a theme from scratch and even though it took me a bit longer it helped me to appreciate just how robust the theming system of WordPress is.

When I designed VigliottiWoodworking.com I again went with a custom built theme due to the requirements my brother in law had for loading speed and presentation. I was able to easily strip the theme of any extraneous WordPress functions that were not needed and yet still leave the dynamic capabilities intact for future use.

Then when it came to designing my church site I decided to go with a modification of the fresh theme since I liked the existing layout for it so much! Of course, I heavily modified the structure of various templates/pages etc so that it would fit my uses, but I was able to save alot of time by not having to worry about the graphical design so much.

Of course, looks aren’t the only reason why I went with WordPress – and looks, while important, are definitely not the only defining criteria in determining what should be used as a script for a website.

In the next article I’ll look at the guts of WordPress in all their gruesome glory!

Organize Series 1.5 Released!

I just can’t get away from working on this plugin – I find it too useful for the various websites I write and I keep tweaking it to make it easier for me to write posts that are a part of a series and display the information that I want to display. The problem is, I’m spending so much time on developing this plugin that I have little time to actually write articles 😆 !

Anyway, this release of the Organize Series WordPress Plugin is chock full of great enhancements and minor bug fixes including the following:

  • Added a function/tag for counting the number of posts in a series. (tag returns a value). See usage instructions below for manually placing this tag (it is automatically included in the auto-tag insertion for series meta information)
  • Added a function for writing series meta information (?This entry is part x of x in the series, ?The name of my series?) to the posts that belong to a series. This is automatically added by default to your blog but it can be disabled for manual insertion via the new option on the options page for the plugin. See usage instructions below for manually placing the series meta tag.
  • Added options for the html tags surrounding the series meta and for the post description word. Added to the options page for the plugin.
  • Redid the layout of the admin options page for the plugin so it?s organized a bit better and a ?little? bit more prettier. I recognize that more work still needs to be done of course ;) .
  • Added to the admin options page for the plugin a feed from this blog that displays posts related to the Organize Series WordPress Plugin so that users can see at a glance if there are any updates available.
  • Fixed the requirement for posts that are part of a series to have the parent series category selected.

There are some other goodies I’ve added as well for those of you who want more control over how your series info is displayed on your blog/website. Head on over to the plugin page to see all the details and download the new version!