Getty Images free for use on the web

Embed from Getty Images

Recently, the big news was that Getty Images–a huge stock photo company that has been around for many many years, and got really big doing print design photography–recently came out and gave permission (with certain strings attached) to use their vast library of images on blogs and non-commercial web use.

This was pretty huge. The reason for it, apparently, was that there was so much rights infringement on the web already that they really couldn’t stop it–but instead, they played along with it, in that, yes, you can post their pictures in your blog, and that the embed code given for such a purpose would link back to their site, enticing potential buyers to see the products for commercial and print use, so  in essence, it becomes free advertising.

embed code for horse image

The embed code provided on each image is in the lower right, and will either be a button that says “Embed” or a small button with </> on it. (See screenshot above)

pop up with embed code

If you click on the button, a pop up will show you the Embed code (an iframe code, which, unfortunately, may not work on some mobile devices), which you can then lay into your blog (if you’re doing this in WordPress, it’s best to change to the “Text” tab in the upper right of your text editor to lay in the code, and then switch back to “Visual” to see the box with a film icon preview–I will actually not know how well this works until I publish a post!)

Embed from Getty Images

So, with that in mind, you can certainly draw from their immense library of images, but only use small images (such as these) and you will not be able to edit them in any way–they are but mirrors to images hosted on their site.

Enjoy! I would add the address for their site, but I’m pretty sure it must be embedded in all these iframes 😉

Embed from Getty Images
Posted in Web Design | Tagged , | Leave a comment

Developing WordPress Plugins


Plugins are a big reason why WordPress has gotten as powerful and as popular as it has,  for they extend the functionality of WordPress in many different ways, including adding shopping carts, boosting SEO ratings, adding widgets and calculators to make conversions, etc.

What are Plugins and how do they work?

Plugins for WordPress add functionality and features to the core WordPress engine. That said, one should NEVER mess with the WordPress core itself–the wp-admin folder. Plugins are basically php files that use php functions to execute commands (essentially a mini-program), and they can be used interchangeably by different themes, because they reside in a different folder alongside the themes folder–namely, the “plugins” folder inside of the wp-content folder.

Plugins can be more than just one php file, however–it can be a whole folder with subfolders, including a functions.php file, but will have one php file with unique header text to identify it. More on that in a moment.

Steps to creating plugins

1. What does it do?

The first step to developing a plugin is deciding what functionality it will have–essentially, what do you want it to do–and then coming up with a suitably descriptive name for it, and if it is a name that is certain to be used by other plugins, come up with a unique “prefix” for the name that will differentiate it to the WordPress engine. The name can have multiple words in it, and best practice is to name it symantically (according to function).

Plugins must have at least one php file (with the php functions), but can also use JavaScript, HTML and CSS (for how it will display), image files, language files, etc. In the case of multiple files, it is your plugin folder and the main php file in that folder that need to be named uniquely.

2. Header

The next step is to create your main Plugin PHP file and fill in the header section. This information will allow WordPress to know that your plugin exists, in order to add it to its Plugin Management screen on the user’s Dashboard in order to activate it. (So it’s really important, because without this header, your plugin won’t run.)

* Plugin Name: Name Of The Plugin
* Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
* Description: A brief description of the Plugin.
* Version: The Plugin’s Version Number, e.g.: 1.0
* Author: Name Of The Plugin Author
* Author URI: http://URI_Of_The_Plugin_Author
* License: A “Slug” license name e.g. GPL2

Of this sample, it is the “Plugin Name” that is most important. Even though it is a comment (so it will not execute as code), WordPress will see and recognize it. The rest of the information is actually optional (but good form), and the order of the lines is not important. WordPress will use the other information in a table of information about the plugin. Be consistent in whatever numbering convention you use for versions between updates.

Another really important thing to include in your header is the encoding, and for WordPress plugins, the encoding MUST be UTF-8 encoding. There is a ini directive for this in PHP, and you can use (but not commented out, as you need this code to actually run):

ini_set(‘default_charset’, ‘UTF-8’);

3. Actual Programming–Wordpress hooks, Actions, and Filters

Plugins use “hooks” for how to know when/where on the page to display/activate, and those hooks are already included in the WordPress module (and cannot be changed or modified–you just need to know what they are. Don’t worry, there are a LOT of them, so you can usually find something to hook to when/where you need it). For a thorough listing of WordPress Hooks for all the different versions, check out the exhaustive for more information.

Intermittently, WordPress will check to see if any plugins have functions to run at any given time, and if so, these functions are run, and modify the default behavior of WordPress.

Let’s take, for an example, “the_title” hook in WordPress. If a plugin needs to add information to or style the title in any way, and therefore references the_title as the function’s hook, WordPress will check that before it adds the title to the browser page, making any modifications that the plugin calls for.

There are two kinds of hooks, Actions, and Filters.

Actions are triggered when certain events happen, such as changing themes, publishing a post, displaying an administrative screen. An Action function is a custom php function defined in your plugin and hooked (set to respond) to some of these events.

The basic process is, in your plugin file:

1. Create a php function that executes when a specific event occurs.
2. Hook this function to the event by using the add_action() function.

Actions Functions

Filter Functions

Basically, you are writing functions that do something, either action or filter text, and then “call” that function through attaching it to a WordPress hook. Here is a really basic example of a main php plugin file, with the most basic header:

Plugin Name: My Plugin

function my_function ($text) {
$text = str_replace(‘foo’, ‘bar’, $text);
return $text;}

add_filter(‘the_content’, ‘my_function’);

I would actually omit the php closing tag for best practices 😉 The “my_function” is doing a string replace of taking every instance of “foo” and replacing it with “bar.” Then the “add_filter” is hooking into the WordPress hook “the_content” and calling “my_function” every instance that the content appears in order to do the text replace. Realize that the filter will ONLY be applied to the_content and not other portions of the page, for instance, such as the_title and the_header, and so on. You have to know where and when and be very specific with your function calls, how to hook them in to perform. Once you have a function written, you can hook it into multiple hooks, by simply adding more add_filter, add_action statements, etc., closing each one with a semicolon.

Interlinking multiple files within a Plugin

Regardless of the fact that you’ve instructed the user where to place your plugin to be able to load it, WordPress allows users to put plugins wherever they want, so you must not assume that a user will follow your direction, or that uploads will be in the wp-content/uploads or that themes will be in wp-content/themes, so the fix for that potential descrepancy is using php functions to link between files so that they can find each other rather than hard-coding references.

For instance, with JavaScript or CSS files that would reside in a separate folder (“js” or “css”) inside the plugin directory, you can use the plugins_url() function (instead of a url, as with a “require once” or “include”:

plugins_url( ‘myscript.js’, __FILE__ );

Then this function will dynamically return the current url/path to the object for access on your php page. [eg.]

Loading and Using your Plugin

Once you’ve finished writing all the php to make your plugin work, then you can load it into the wp_content > plugins folder, and access it through Dashboard, under Plugin Management. From there, one can activate it and start using it (or troubleshooting it until it’s ready for use).

Sharing your Plugin With others

If you want to allow other people to use your plugin (and gain some recognition, or potentially monetize it at some point), you can host it on You will need to create a README.TXT file. There is a “readme.txt template” on that is a great model at There’s even a readme file generator! (

WordPress will access the “Requires” [min version of WordPress plugin requires] and “Tested up to” [highest version plugin tested for] version numbers from the readme.txt file for the plugin to determine whether the version installed and trying to load it fits in that range.

It is considered standard practice, when one is sharing a plugin, to create a “home page” to also host that plugin as well as offer some documentation and support for it. Usually this page will describe to users how to install the plugin (put the plugin file(s) into their “plugins” folder of wp-content), what the plugin does, what versions of WordPress it is compatible with (that range that was mentioned in the readme.txt file), what has changed from version to version of your Plugin (if you have multiple versions) and how to use the plugin. Screenshots are invaluable for this last, especially if you have built in an API. The more complex your plugin, the more documentation you may need to provide to help usability.

For the purposes of at least getting this completed, I have scaled down a lot of what is involved in programming plugins to the bare basics, but should you feel inspired to delve deeper (and I hope that you do, as I plan to), there are some resources below to reference to, not the least of which are from the WordPress Codex, the repository of documentation for all things WordPress.


Posted in Content Management Systems, Programming, Web Design | Tagged , , , | Leave a comment

User Interface Design

Just a note–I was going to do a blog on user interface design next, but time got away from me and I HAVE to do one on plugins for an assignment, so below (as this was NOT a blog for an assignment), I merely have my “notes” so far for what this blog is to be about. I do plan to flesh it out later, but this will be where it is for placement for now.

User Interface–planning a design

Tailor website towards target audience–figure out an archetypal customer/reader, called a “persona” and what their needs, values, goals & concerns are (more content tailoring).

Navigation–main menu should be consistent (submenu can be hidden)

Each page should have something about the site so that people can quickly orient themselves

Include space & headers

Content must speak to the people and be understandable

All elements of the page should help the page

Images should help explain what site is about

legible fonts

Design: Standard design has the advantage of being immediately easily understood, and displaying the same across web browsers. A confused user, is a lost user, and quickly navigates away from your site to one he can more easily understand.


1. to move around the site

2. help visitors understand where they are within the site

Visitors usually look in the header area to determine where they are in a site.

Navigation can have different “modes” –Category, Audience, or Task-based navigation are three most common

task-based navigation uses action words for the items, and “navs” uses words that go by category (i.e. genre for music, by occasion for a florist), “user type” for sites that target several audiences (i.e. computers, phone companies–will split site into “home user,” business user, etc.). Navigation can also be organized by promoted content, location, time, or even alphabetically.

Navigation withIN a site’s content is also important–descriptive headers, summaries, and other content can help visitors navigate a site more quickly to find what information they need.

It’s best for Navigation menus not to have more than 9 items, because that’s about the limit that we can hold in our memory–it’s sometimes referred to the “7 plus or minus 2” rule. If you do have long menu items, grouping them into smaller chunks with separators will help people navigate.

Search: Make sure search area is easily visible from every page in the site. Sites with more content will more often have searches made in their site than users trying to figure out the navigation. The most common placement is at the top right of the page, or at the top of a vertical navigation column.

Suggestions for results page of search:

1. Have search term repeated on the results page (so that users can see if they spelled it correctly).

2. Each result should have the link to the page title where the search term was found, with a page summary. A thumbnail can also help.

Links: The original standard for links was that they were blue and underlined, but if blue doesn’t fit with your site’s color scheme, just make sure they are obviously links, and they don’t necessarily need underlines, but doing a change on the hover state will help a lot. It is also important to do a “visited” color that is different so that visitors have a clear idea of where they’ve already been.

It is useful also to have a “Related Links” section to help a user navigate to other areas of the site which has similar content.

Common elements on every page:

1. Logo, tagline, and Name of Site–usually in a masthead/header section, which should be clickable to take a user to the home page.

2. Unique Title for every page, 64 characters or less

Posted in Web Design | Tagged , , , | Leave a comment

What’s In a WordPress Theme?

When you look at a webpage, you see it as one page, with various elements (masthead, footer, content area, sidebar, etc.), and in straight html, you code it as one page, with the DOCTYPE declaration at the top, opening and closing tags for various parts of the page. With themes, though, these parts are divvied up and each one becomes their own page, functioning under a model similar to the Model View Controller (in which the index.php acts as the “traffic cop” to marshall elements–other php pages–on the page displayed).

A theme is basically an assembly of content container elements (header, footer, sidebar, and main content, the “Loop”).

Each one of these content containers have their own template page in php that controls how that piece displays, while the index.php tells them where to display and what content to display. Because content is dynamic and is continually changing–for instance, it will on this blog as soon as I publish this post–thanks to The Loop.

What’s the Loop?

You may well ask (I did). The loop is essentially a php while loop that has a very simple purpose, to get posts where posts exist and plunk them into home page of a WordPress site (IF that site has the posts on the home page–if the site has a static page for the landing/home page, then the loop will populate whatever page is designated through the Dashboard to display posts), which is usually index.php.


For the very simplest index page, the code goes something like this:

if (have_posts()) :
   while (have_posts()) :

In the simple example above, the “Header” block with the menu navigation would comprise a file header.php, which would be fetched by the function get_header() in the code above. Header.php would contain the DOCTYPE as well as the entire <head> section, along with opening <body> and <html> tags, as well as the masthead image (if using one) and the navigation (in this example–I’m sure you could probably have a separate file for just navigation and reference that by function on the index.php page).

The Loop
The area with the dotted line (labeled “The Loop” in brown) is the dynamic container populated by whatever posts (shown in abbreviated form in the example–the_excerpt()) by the if (have_posts()) function followed by the while loop until it reaches the end (endwhile) –essentially, “If there are posts, display them here (content area) while there are still posts until you get to the end.” So every time you write a new post (as I’m doing now), that post becomes the last–well, actually first, as WordPress usually displays newest content first–which gets pulled by that while loop to populate the content container set up for displaying posts. (All loops have to be ended in php [otherwise they become endless loops!], so the while loop is nested in the if loop, and so while gets closed first, and then if, just as with html.)

These follow the Loop in getting pulled into page by index.php (get_sidebar() function) and are pretty self-explanatory. The Sidebar (sidebar.php) can have some additional navigation hard-coded in, while the Archives update dynamically, and often “Recent Posts” will be referenced there by links as well. A Search field can appear in the header, too, but in the theme I’m currently using, it is in the Sidebar, so I went by that when creating the illustration above.

You can have multiple Sidebars, with multiple stylings. They would need to be differentiated in the name of the file and in the php. (Showing how to do this is beyond my current skill, but I found a tutorial for it here.)

The Footer (footer.php), of course, contains whatever Footer information the user wishes to have, as well as the closing <body> and <html> tags. Navigation could easily be here as well as in the header.php. So far we’ve looked at the standard “home” page. Let’s look at some other pages, for there are two types of pages in WordPress: Posts and Pages. First I’ll look at “Post.”


Styling of posts is done by the template file single.php. As above, it will have the same header, footer, and sidebar (in this example), and the content for just that post in the content area. (It would probably NOT have a Menu navigation button that had its name on it–I just put that in the graphic to remind myself of what graphic I was working on, lol! In fact, going to a different post may not have an “active” or focused state of any menu navigation–only static pages, or the home page/index.php have menu buttons).

Now, you can have different categories of posts, and different stylings set for these categories, so that they can be easily distinguished from one another. WordPress has a Template Tag Hierarchy, and uses that to figure out which styling to apply to what.

  1. category-slug.php
  2. category-ID.php
  3. category.php
  4. archive.php
  5. index.php

As you see, index.php is last, and category-slug (ie “category-news.php”) is first. So index.php is the LAST choice for styling, but will serve, to show how to display individual post pages. You will ALWAYS have an index.php page, after all, for your theme to be a theme. If there is not template set up for the archive.php, for instance, archive posts will also use the index.php styling.


With a page, you can do something a bit different. You can design it so that there is no Sidebar (but giving up some of that functionality). You have the freedom to make it a “blank slate” with the other elements the same, because this will be a static page on your site, not referenced in the Loop.

You can even, if you like, design a variety of templates for how a page will display, incase you DID want to include the Sidebar, but also giving the user the option to have more control over how their pages will look, even providing some choice between different iterations of possible functionality, or positioning the sidebar on a different side than it appears in posts, or formatting in multiple columns, etc.

(Yes, I know the text is the same as what is in the graphic–I actually wrote it while designing the illustration, and this text is searchable, whereas the text the graphic is not 😉

Okay, if that’s how it works–how do you get it to look nice?
While WordPress works with PHP & SQL (in the functions) to communicate with the MySQL database with all the information, content, links, etc. stored in its tables, the presentation is actually all handled like any normal webpage, with HTML and CSS. So, if you know html and css (and hopefully html5 and css3), you’re mostly there–you just need to plug in some php for a very basic site. This post has gotten way too long to include that here, but I would encourage you, if you’d like to get your feet wet, to try this very awesome tutorial on how to create a basic WordPress Theme, which gives you the php code you need for each piece, sans any html or css, which you can add yourself.


(This is new 😉 One thing that every WordPress theme needs is a file called “style.css” and it will be stored in the root folder with the other php files, NOT in a separate css folder (though you can certainly have other stylesheets there, perhaps for separate media queries target for mobile devices, linked to from the main style.css stylesheet). In the latest version of WordPress, 3.9.2, there is also a pretty important requirement for the style.css to have a comment header at the top of the file, or the theme will not install. This comment header looks similar to what goes in a plugin’s main php header:

* Theme Name: My Awesome Theme
* Description: This theme is meant to show how awesomely powerful WordPress is.
* Version: 1.0.0
* Author: Paula Bishop
* Author URI:
* License: GNU General Public License v2 or later
* License URI:
* @copyright Copyright (c) 2014 Bishop Design

Let’s Talk Mobile

Mobile is where it’s at, and more and more WordPress themes are being developed that will work on both desktop and mobile devices. The graphics I’ve put in so far are for a standard static desktop website, but just for fun, I came up with some mobile design equivalents for my graphics above.

mobile_home     burger_btn

As you can see, The Loop is in this example as well, but instead of a sidebar.php or header menu navigation, I’ve envisioned a “burger bar” to have a slide-out panel with navigation (I know this can be done with jquery, possibly with css as well (using the display property on the burger button link’s states, with a:hover: visible, say).

Mobile design is most often done through media queries in the css code, to sense what size the viewport is, and set “break point” for changing the design depending on how large or small the browser window/viewport is. You’re basically setting up a different set of styles (being cognizant of inheritance of styles, of course) for each break point.

For WordPress, there are even some cool Plugins (plugins add functionality, remember) to make one’s site responsive.

I think I’ll leave it at that for the moment, but in another post, I’d like to talk about theme design in regards to usability. Until then, thanks for reading!

Resources: (this is a really great one!)

Posted in Content Management Systems, Programming, Web Design | Tagged , , , , , , | Leave a comment

Server Side Installations of Content Management Systems

When it comes down to installation, not all Content Management Systems are created equal.

I will start out by saying that while I have installed WordPress on a server before (that was hosting my website), I used CPanel and I remembered it being incredibly easy, but that was because it had “softiculous” which is a one-click WordPress install service that some web hosts offer.

This process of doing it via ftp was not quite as simple, and I had to tweak some permissions (possibly opening myself up to a host of security issues in the process), but really WordPress was still pretty painless when compared with Drupal’s installation process. And Concrete 5 turned out to be the most painful.

The Process

The process for each CMS was the same, starting out. Create a database (this can be set up through Cpanel with MySQL databases or through PHP MyAdmin, depending on how your Cpanel is set up, security-wise). Create a user-admin for that database. Make a note of the user and password you used to create the database, and store that somewhere–you will be using it later! Download the CMS from whatever web page hosting it (i.e., and uncompress the zip file.

The database starts out empty, and is populated by the installation of the CMSs. Each CMS puts its own prefix on the tables it inserts into the database, so they do not conflict. This is not true of all CMSs, however–Concrete 5 requires a dedicated database, but even after creating a separate database just for it, I still had issues with it.

With FileZilla or some other file transfer protocol client, ftp the folder downloaded (and uncompressed) from the CMS website to the server and upload the files for each CMS, right into the public_html.


From there, it was cookin’ with gas, with WordPress. When I open up in a browser the url we were given, tacking on the folder name at the end, I got a friendly, “There doesn’t seem to be a wp_config file. Would you like us to create one?” Yes, Please! So hitting “submit” basically installed WordPress, and it took me through some prompts to set up a database connection, what to name the table prefixes, etc.

I did have to tweak the file permissions on WordPress by right-clicking on the wordpress folder itself and viewing the file permissions, and changing them to allow everything (“777” as I’ve come to know it).


Eventually, though I am nervous about this, I had to revisit this folder later as I could not upload any graphics, and chose the “Recurse into subdirectories.” That took a long time (5-10 minutes). That made me wonder if I’d done something horribly wrong. But, it fixed it! And I could add content and edit.

Now, this was actually done on a remote server somewhere other than this site (which is hosted through, and I do not have access to their public_html directory–I only offer this as one explanation of how to get permissions to work on a remote server, but this does NOT seem like good practice to me to open the permissions wide open, because that may expose it to attack. But that website will not be up long, as it was just for a class exercise in installation).

angry-drupal-dropDrupal. Oh, the Agony.

We all knew that drupal would be more difficult, and the Mercury going into retrograde the day of the demo was not the real problem. Drupal is hard to install, period.

When I first tried it (Thursday in class), however, I was doomed to failure merely because there was no database set up yet. So I just got an error message  sans any formatting which made little sense (I wish I’d written it down). Yet, I believe the same error was there today when I tried again, database in place. So, I took a couple of steps:

I delete the htaccess file per Steve’s suggestion. (Steve is someone else in my class, but he later found a blog that had an excellent tutorial for installing drupal that went step-by-step, and I may follow it to redo this process later. The tutorial even has a free eBook for download as a pdf.)

I also copied the default.settings.php file in the sites folder, and changed it to “settings.php.” Initially I tried just changing the name, but then Drupal gave me an error that the default was missing, so I added it back in so that there were two files.

After that, I fared a bit better, in that this time I saw the drupal blue droplet, with a message asking if I would like to install (woo hoo!).

Installation then hit a few snags:

“File system
The directory sites/default/files does not exist. An automated attempt to create this directory failed, possibly due to a permissions problem. To proceed with the installation, either create the directory and modify its permissions manually or …….”


“Default settings file The default settings file does not exist.
The Drupal installer requires that the ./sites/default/default.settings.php file not be modified in any way from the original download. “


“Settings file The settings file does not exist.
The Drupal installer requires that you create a settings file as part of the installation process. Copy the ./sites/default/default.settings.php file to….. “

Ugh. Again, Steve helped me tremendously (pioneering this process, so to speak), suggesting it was a permissions issue and to change the permissions of install.php and index.php to “777.”

That did take care two of the above warnings, and so I tried setting permissions on the sites folder to 777, but the warning was still there. I tried setting the default folder inside of sites to 777, but it kept changing it back! So I threw caution to the wind and went back to the sites file permissions and chose “recurse into subdirectories.” That fixed it. Off we go.


I was then brought to the database set up, which I filled out…


And, Voila! Finally…

Now that it was installed, it will be an interesting process learning to add content, which I played around with for an hour or so before I had to rush off to my evening class. I could not edit the existing “home” page at all (something I had not remembered from my earlier experience with Drupal), and could not see how to add photos, but linking to urls worked. Changing the default theme OR making any change at all to the color scheme through the Drupal interface completely broke the css and it went to plain text and links on a white page. Steve wonders if this is because I deleted the htaccess file early on. Ooops.


It should be an interesting semester.

concrete5_logo_smConcrete 5

At first, Concrete 5 looked like it might be one of the easier installs. Boy was that wrong. In the end, it has turned out to be the hardest, and so far, I have not been successful at installing it on a remote server–even installing it on my own machine at home with root privileges took two attempts. And by that time, I was so fed up with it, I didn’t feel like playing with the interface. The feeling I had was similar to sewing projects that took me so long that by the time I finished the dress, I didn’t want to wear it, because all I could think about was the loooong process of making it, and hoped that I would feel like wearing it eventually, before it would no longer fit. I feel that way now about Concrete 5.

concrete5_errorsAt the onset, as I said, it looked like it would be easy. It came up with an install screen, which told me that I needed to free up some permissions to be writable. Mousing over the one box with a red flag provided more info as to which files needed to have permissions modified. So I went and changed those permissions by right-clicking to get to Properties in the ftp client on the remote server side, and tried again.


Of course, those 85 tables were put there by WordPress and Drupal, which could use one database and play nicely together. Soooo, I asked my teacher to create another database, one that I could dedicate to Concrete 5. He obliged me, and I tried again, only to get this error:

unable to connect

Doing a search on Concrete 5, it turned out that only users with ROOT privileges to the hosting server could get Concrete 5 to connect to the database. I found this one one forum, before perusing the site at Concrete 5, on installation, where it also outlined this. The teacher gave me GRANT permissions to the extra database that he’d created to be dedicated to Concrete 5, but GRANT is not quite as administrative as root, and perhaps that’s why it didn’t work. I finally gave up (as we were having other issues with that server as well), and decided to try it on one place where I knew absolutely that I had root privileges–on my own desktop computer at home, using MAMP, a free server software program.

With MAMP (or XAMP if you’re using a pc), I merely had to put the Concrete5 folder into htdocs, navigate to my localhost (after first signing into phpMyadmin through MAMP and creating a blank database), click on that folder, which brought me up to the familiar install screen. This time, however, I didn’t encounter any permissions issues, and when it came time to fill out the “connect to database,” the biggest issue I had was remembering WHAT password went with which admin_user I had set up for myself in phpMyAdmin, because Concrete 5 would not allow “root” for the password, as it said that passwords HAD to be at least 5 characters long…and looking in the config file for phpMyAdmin, I could see that the “root” user had a default password of “root.” Hmmmm.

I did finally get through that hurtle, however, by accessing a prior project I’d done in MAMP because I still had the database.php file that had the PDO object which connected to the database with the user and password specified (*whew!*), so using those credentials, I was able to connect to the empty database I’d created. Yay!


It was on this screen, unfortunately, that I hit my second snag. I thought, “this is going to take a while, why don’t I do something else on the computer while that grinds on installation.” Mistake. As I’d recently upgraded my system to Mountain Lion, I am still not familiar with the “swipe” function that is now on the mouse, and merely putting the mouse down and moving to navigate to another window in the browser automatically hit the “Back” button on the install screen. OOOPS. Trying to navigate “forward” did not work–now the connect to database told me that I had a database which was populated with tables, which it couldn’t work with! Going to phpMyAdmin, I discovered that I could not merely “DROP” the database and create a new one, nor could I rename it, nor could I delete it in any way. This was maddening, as it is on my OWN COMPUTER. What I finally had to do, and which was time-consuming and tedious, was that I had to go to that database “concrete5” that I’d created, and go through and delete the tables ONE BY ONE. There must have been at least 200 tables. What a nightmare. No wonder Concrete5 needs its own database!! I finally deleted all of the tables, however, and came back to the database connect  window, which again started installing attributes, whereupon I carefully put the mouse down, holding it by the edges, and went to make some tea and read a book and above all, NOT TOUCH THE COMPUTER while it installed.

That was more successful.


Hitting “Continue to your site” took me to my site, with a popup of helpful informational dialogs that led to various tutorials on how to lay out pages in Concrete 5. I closed those, however, and, owing to my frustration of having had to spend 10-15 minutes manually deleting tables, had named my site “Concrete Shoes,” a euphemism borrowed from the mafia (I suppose they actually called it “cement shoes”) to relieve my feelings.


Wow. So there it is. It sure looks like a plain WordPress site. Perhaps it will be easier to create custom themes for, however. We shall see.

Posted in Content Management Systems, Web Design | Tagged , , , , , , , | Leave a comment

Delving Deeper into WordPress


First, what, exactly, is a blog?

The term “blog” comes from “web log,” which, similar to the “Captain’s Log” made famous by Star Trek, is merely a series of articles or posts or entries chronicling something ongoing, similar to a diary, but out in the public eye, for everyone to see. Content is not limited to merely personal journals, but pretty much any subject you can imagine (including a Technical blog!). Essentially, it’s self-publishing, for the web.

Blogs are more effective if they have meaningful posts, are somewhat focused, that is, having only a few topics/subjects rather than rambling in every direction, and if they are written with enjoyment (enjoyment carries through, and if they are written enjoyably, the chances are they will be read enjoyably, too!). Personally, I think that formatting a blog with some space to make it more clean and readable helps it be more effective, too, as well as adding pictures.


What do Blogs Have in Common?

The way blogs are structured, built in a CMS, there is usually a main content area with the articles listed in order of when they are posted, newest on top. They can often be sorted by category, tag, or in some cases, nodes–whatever taxonomical structure the CMS provides (taxonomy = classification). When there are enough articles, the older ones can be archived, but still assessable (usually in a sidebar). On each article/post, unless comments have been turned off, viewers can comment, adding interactivity.

Blogs often also have RSS and/or Atom, which broadcast what has changed recently on the site, accessed by feed readers such as FeedDemon (windows) or NetNewsWire (mac) (which, by the way, is totally awesome and it saves so much time to preview through a feed reader to find the latest updates rather than having to check every single blog individually!). Sometimes blogs will also have a list of links to other blog sites called a blogroll, for bloggers often interact and support and link back to one another. It’s a community, even if bloggers have never met in person.

Blogs in Plain English video: 

Blogs and CMS–What’s the Difference?

As I’ve covered in my last post, while most blogs are created and maintained with Content Management Systems (CMS), and through the rise of blogging, CMSs became popularized, a blog refers more to the content and focus of material placed on it. CMSs can be much more powerful and functional than what is needed for a simple blog, which makes them useful for building more complex and commercial websites that handle commerce, site statistics, tracking, notifying, etc., etc.

While many CMSs started out with a post/article format, there is a rise in CMSs that do not use articles at all, and rely more on static pages, and many CMSs use both. Blogs generally tend to have the latest article on the front page, but with a CMS, you can designate any page, including a static one, as the “first” page of the site.

So, to put it simpler, the difference between a blogging tool and a CMS would be equivalent to the difference between a propeller-driven Piper Cub that seats 4 and a Boeing 747 jet–the jet can do the job just as well, but faster and with more perks than the propeller plane. But they’ll both get the job done.


WordPress, the CMS that started it all.

From its humble beginnings in 2001 as a post-only, PHP4 and MySQL-based “b2/cafelog,” WordPress has come a long way, baby. Since it was officially released in 2003, as of February 17, 2014, version 3.8 has been downloaded around 20 million times. It is used by more than 18.9% of the top 10 million websites around the world, and is the most popular blogging system in use in the world, on more than 60 million websites.1


What makes WordPress so popular? Simplicity. Features and easy usability help a lot. Let’s go over some of those. Besides an easy-to-navigate user interface and WYSIWIG editing environment, WordPress works on a plug-in environment and a template system. It’s very easy to add, edit, organize, and classify content and media.


Themes & Templates

So, YOU provide the content, but with theming, you can change how that content looks with a few clicks in WordPress–even preview HOW it will look before making a switch. There are lots of free themes to choose from for straight off the bat, with hundreds more available on You can also get some very nice themes for a reasonable price, that might be closer to what you need–some services even offer a subscription for themes.


Plugins are like miniature applications that add functionality to your WordPress site. There are tons of free plugins on, as well as ones that cost money because they are a lot more complicated (i.e. shopping cart plugins–though there are some that are free, too, but probably won’t process credit cards, using Paypal instead). With plugins, you can really customize your site and tailor it to your unique needs, without having to know any code. There are also “widgets,” which are sort of like “mini-plugins.”

If you have a free site on, however, (such as this site is), you will not see a plugins menu in your Dashboard–the additional functionality of plugins can only be utilized when hosting the WordPress CMS directly on your hosting server, or possibly if you upgrade your account to a paid on if you’re using If you don’t currently have access to plugins, however, you still have plenty of access to widgets!

Multi-user and multi-blogging–user management

You can set up six different levels of access to your site through WordPress, by assignment of “roles” with a varying degree of access privileges: Super Admin, Administrator, Editor, Author, Contributor, and Subscriber.2 Depending on how you set up your site, one could argue that there is a 7th role (reader) for the people merely viewing your site–unless you set it up as a subscription-only based site (as some news services do).

Mobile development

Mobile usage of websites is expected to surpass that of desktops in 2014. That said, I’m surprised it hasn’t already. More and more themes for WordPress are “responsive,” which means they will resize to fit smaller screens, knowing whether to be landscape or portrait orientation, and scaling down to be simpler and more streamlined when viewed on mobile devices. That’s key, because mobile devices don’t have the bandwidth to load as much and as quickly as desktop computers, and adaptation to mobile will make your site that much more accessible to a growing number of the population who can afford phones, but not computers.


• SEO friendly

• RSS and Atom feeds (covered above–and a pretty nifty feature, too! Basically distribution of new content)

• Clean (WordPress calls it “pretty”) permalink (slug) structure (so the addresses of your blog posts will look like English–or whatever language you use–instead of code and numbers

• Ability to nest multiple categories

• Taxonomy with tags

• Trackback & Pingback (more for linking between bloggers–when one blogger links to another’s site’s article, for instance, the blogger who wrote the article will get a “ping back” letting him know his article has been linked to)


• Easy to import and export your website content

• Comments (mainly for blogs, but could be good for testimonials, too!)

• Easy installation and upgrades

• Ability to schedule drafts, revisions, publication, public or private posts

Best of all, it’s Open Source, so it’s free for people to use, and also free for developers to improve and add plugins for, create new themes, etc.

There’s even a number of WordPress tattoos out there.


Why are there two official “WordPress” sites–what’s the difference? is actually the main site, where the developers share their themes, plugins, post the latest “builds” (revisions) to the WordPress code. is a great resource for non-developers, because that’s where all the cool functionality can be had! It’s like a big community project. So just has the open source code for the content management system itself, plus themes and plugins and widgets. on the other hand, is the official “blog hosting” service that uses WordPress as its CMS, but it’s actually more of a hosting service for WordPress-driven websites. Now, the advantage of is that you can make a webpage/blog right away, without having to go through the steps of installing WordPress on your own server with Apache and MySQL. In other words, a novice can use perfectly well, be up and running within moments of registering for a free account (for though it IS a hosting site, it offers free accounts and free hosting, which is a huge plus). If you want a custom domain (without “wordpress” in it), that will cost a nominal monthly hosting fee, but otherwise, free accounts all end in “” (And, because this could be a deal-breaker for some, free hosted sites often have ads on them once they reach a certain readership level.) And, as mentioned above, sites that are free have a bit less functionality in that they do not have plugins, but they still have access to widgets. (So, if you’re looking to have eCommerce functionality on your site, you will probably need to go with a hosting site with full WordPress installed, as most shopping carts are plugins, and not merely widgets.)

It’s all about the Content

“Content is King.” Content is what drives all of this–content is what makes it all worth while. After all, that’s why WordPress is a CONTENT management system. It aims to make content easy to present, access, organize, classify, manage, and distribute across the web. Content containers for WordPress are Posts (Articles) and Pages.

 In Closing…

I hope you’ve enjoyed this more in-depth look at WordPress, and like the good captain mentioned at the beginning of this post/article, I’m saying, “Good night” 😉

–end transmission


1. “WordPress.” N.p., February 17, 2014. Web. 17 Feb 2014. <;.

2. “Roles and Capabilities.” N.p., n.d. Web. 18 Feb 2014. <;.

Other Resources

Posted in Content Management Systems, Programming, Web Design | Tagged , , | 2 Comments

Content Management Systems, Take 5…


The rise of content management systems, or “CMS” (as I will hereafter refer to it), has enabled many people to start webpages, particularly blogs, by themselves, without having to learn any technical knowledge or programming languages, or even design. All they have to do is provide content, and BINGO! instant gratification new website created–in many cases without even needing to set up a hosting account. It has never been so easy for a novice to set up a web page, and have it look fairly decent (thanks to templates). Why? All because of Content Management Systems.

WordPress, it’s not just for blogging, anymore

But CMS is more than just a blogging tool, even though that is how the concept of it became quickly popularized. It really is a “management system” in every sense of the word. The user provides the content, the CMS helps organize, format, and present it, as well as track statistics on it, filters out spam, notifies the user of comments, and if the user has so specified, holds comments for moderation.

Working within the framework of a template (which can be easily changed at any time, and even existing content can be previewed in multiple templates, although only one can be “live” online at any given time), the CMS provides the user some license to design and format within a WYSIWYG interface. WYSIWYG stands for “What you see is what you get”–so, if you are familiar with using a word processing program (such as Word or Open Office or even many email programs for composing messages), you can create a web page. The age of blogging was born.

Why businesses will benefit from using a CMS for their website

Websites created through CMS’s are highly customizable, both in appearance and functionality, and are a great tool for getting a small business website launched and easily maintained. Depending on the level of customization a business needs, most people can start with some slight tweaks to existing themes (ie uploading a masthead with a logo, for instance), or hire a developer to get a specific look and functionality for the site launch, who then hands it over to the business to keep content updated. In the end this saves a business both time and money, as it can do edits without having to go back to the web designer for each change. That puts the control in business’s hands.

CMSs make it easier to delegate tasks across a website (which can be a really big job in a large company, or even in a small one). You see, with a CMS, many people–who can all be given access to just what they need to work with, and no more–can contribute material, or approve content, all at the same time, or at any time (provided they have internet connection), from anywhere in the world. Why? Because most CMSs are on the web host server, the access to which is through a web browser, making the website hosted in one place, approachable by anyone who has access privileges, and access privileges can vary by user.

No special software is required to maintain a website managed by a CMS–all one needs is a browser and connection to the internet. Editing and adding content is done on a remote server–wherever the site is hosted–and changes are live instantly, with multiple users able to update it from anywhere in the world. Often CMS’s offer extended functionality such as making content searchable (making it easier for someone to find information on your site quickly), can create thumbnails or slideshows from pictures, provide tracking and site statistics, enable e-commerce, and the list goes on and on.

For instance, say you have writers for a company, doing write-ups on a product, and these write-ups need to be approved by the production manager before going live, or even possibly go through a more involved approval process, through several managers in turn before being “published” to the site. In the old days (which were not that long ago!), an administrative assistant, or project manager, would have to go to each of these people to move the process along (I’ve done a fair bit of this myself, so I remember). Now, the CMS can handle all that, by sending notifications to the correct party that they need to make revisions or approve something or request changes to make revisions to–well, you get the picture. It streamlines the process. Of course, those managers have to actually check their email. So the day of the live person following up may not be totally gone–but their job would be lightened, nonetheless, though the automation of the CMS.

“Feed me, Seymour!”

Everything on the web is dynamic. With this new phenomenon of people authoring web pages on the fly with CMSs, there is so much news out there, it’s hard to keep up. That’s where feeds come in. Perhaps you’ve been on a website and you’ve seen “RSS” up in a corner on a website. RSS stands for “Rich Site Summary” and is often dubbed “Really Simple Syndication” (syndicate meaning broadcast) because it keeps track of the latest changes to the website and distributes those to subscribers to the site as well as making the information on what has changed most recently to feedreaders to disseminate to other sites. As SEO (Search Engine Optimization) is often improved by making frequent updates to a site (because it wants the latest information for searchers), a feed will indicate exactly what has changed and when. Just more functionality from using a CMS.

How much does it cost?

That’s the best part—most CMS’s are free! They are “opensource” software, meaning the code is public and that developers around the world work on them to improve them constantly, adding features, etc. The only cost involved is hiring a web designer—if one goes that route—to set up the initial web page if one wants something very different than the available free themes. There are also more advanced, customized themes available for purchase a nominal cost.

Which CMS to use?

Which content management system you choose depends on what you wish your site to do. Different CMS’s are capable of different things, and it’s important to PLAN your site in advance—know what you need in terms of functionality—and then choose the best CMS to implement it. The “Big Three” are WordPress, Joomla, and Drupal, but there are at well over a hundred CMSs out there. Below is a quick chart looking at five different ones for a quick comparison:


WordPress CMS

WordPress may be the most popular CMS because it is quick and easy to use right away, and still pretty powerful. It is difficult to customize themes beyond what customizations are readily available, but there are themes that have more options, as well as themes that use html 5, soon to be the new standard for web design layout.

WordPress is a great blogging tool, and can also be a good “brochure” website tool—for websites that are mainly information and pictures, perhaps some video, WordPress will handle that quite well, with blogging (comments on or off) thrown in. Blogging is essentially a tool to update a website frequently, often raising its SEO stats—the more often you update your site, the easier people will find you.

Like most CMS’s, you can create static or blog post (article) pages—static pages are the closest to “regular” website pages—and you can choose which page you wish the site to open on (“landing page”). Add-ons in WordPress are called “widgets,” and with them you can block spam (Akismet), view site stats, have a calendar, RSS feed, etc. One nice thing is, a LOT of the widgets for WordPress can be found for free, which is not always the case with other CMSs.

How it works

After installing WordPress on the server hosting your website, or starting a free “blog” website at (though you can pay for a “premium” one and register a domain at the same time, and they will essentially be hosting and registering your site), you choose a basic theme to start, and add content from what is called the “dashboard.” Themes are somewhat customizable, and there are ways to filter what themes are customizable by certain parameters (ie custom headers, being able to control color scheme, fonts, etc) in searching through themes available. Many themes are free, but there are more fancy ones which cost a fee, but not as much as a designer might for custom-creating one for you. The dashboard is pretty straight-forward, though the add-on widgets are not always easy to understand. It is easy to add pages, posts, pictures right away.

The Dashboard

Here I will put in a screenshot of the dashboard, so that you can see how the back end of WordPress works:


As you may be able to tell from the screenshot above, this is editing the “About” page in Pattecoats. The actual page displays thus:


The masthead is a custom one designed for the page, but the fonts are default with the theme (which allowed for a custom header to be uploaded). The sidebar map is a widget.

Professional Examples of WordPress

Getty Images Blog

The Violet Underground

Joomla CMS

Joomla is somewhere between WordPress/Concrete 5/Get Simple and Drupal in both usability and complexity. Structurally, it is more complex than WordPress, but comes with more initial functionality than Drupal’s Core Module. Functionality is added through “Extensions,” similar to the “Widgets” in WordPress and Concrete 5, “Plugins” in Get Simple and “Modules” in Drupal. Joomla allows multiple users (or bloggers) to log into the site and post their articles. It is more difficult to configure “static” pages, and if you are going to do a Joomla site, it is complicated enough that you will at least need professional, technical help in the beginning. Important considerations for business is that Joomla does support e-Commerce, with shopping carts, though often that is an added expense, as while Joomla itself is free, a premium extension such as a shopping cart will usually cost money.

How It Works

The back-end of Joomla is called the “Administrator” (as opposed to the “Dashboard” for WordPress, Drupal, Concrete 5, and Get Simple), and, while it comes with WYSIWIG, one has to reference urls to images already online rather than uploading them through the WYSIWIG (though, perhaps there is an extension for that, as there is in Drupal, somewhere). 

Joomla can be previewed for free for 30 days online through, which also offers telephone & email support, as well as lengthy & somewhat ponderous tutorials for Joomla, which also sell their hosting services. Otherwise, if you have a server configured with MySQL, you can install Joomla directly on it (if you have CPanel, this step is even easier) and build your site from that. Initial install and/or demo on comes with only 2 different templates, which makes it a bit more difficult to change the site appearance radically easily and quickly as it is with WordPress, which has at least 30 templates on their free sites.

Here is a screenshot of the back-end of Joomla, before any extensions have been added (“out of the box”):


The corresponding page to this article (the home page) looks like this:


What Joomla Can Do

Joomla really is a powerful tool to build all sorts of websites, from simple sites, to specialized sites, custom applications, and multiple design options–but it takes professional expertise to take advantage of the higher complexity of which it is capable. Besides e-Commerce, Joomla also has advanced social networking ability, through allowing mutiple bloggers to access a central site and each maintain their blog in the collective.

Professional Examples of Websites that use Joomla 

Guggenheim Museum

High Court of Australia

Drupal CMS

The initial Drupal install comes with a “core” set of modules that handle organizing and formatting content. Additional add-ons are “contributed modules” (so called because they are user-contributed) and add additional functionality. While I do not have personal experience with this yet, it seems that Drupal might be the most flexible, scalable, powerful, and yet difficult to work with for a novice, to add lots of additional functionality. The analogy I heard on a training video on YouTube was that, “Wordpress builds a small plane, Joomla builds a bigger, faster one, and Drupal gives you a huge Lego® pack to build whatever you want.”1 

Functionalities of Drupal include: e-commerce (shopping cart), ability to generate an email newsletter based on type of content (node & taxonomy organization—ie, you do a newsletter based on all the mp3s, information, etc. that referred to “Hypothroidism,” say for a business that specialized in medical conditions). 

Drupal organizes content by nodes* and here is a rough breakdown of the workflow of organizing content using Drupal that I gleaned watching the YouTube video.1 

Content Workflow (Drupal)

1. Content types
• In Drupal, each item of content is called a node*, and each node belongs to a single content type, which defines various default settings for nodes of that type, such as whether the node is published automatically, and whether comments are permitted.
• Control over how content is added to your site.
• Goes way beyond the typical “Title” and “Body” fields.

2. Fields (take care of storing your content)
• Attached to Drupal entities (content nodes, users, taxonomy vocabularies, etc.). Fields take care of storing, loading, editing, and rendering field data where content is added to your site.
• Fields can be sorted, selected, presented in any setting.
• Allow for customizing your content for maximum flexibility.

3. Taxonomy • Categorization
• Set up Master Categories = Vocabulary
• Set up Sub Categories = Terms
• Drupal then creates master links for each term

4. Create Content

*node = article, piece of content

The process–add content and specify what node it is–what “type” of data it is, then add fields to further define it, fields which are searchable, sortable, etc.

How it works

Drupal also uses a dashboard, like WordPress, Concrete 5 and Get Simple, but the links are along the top, instead of the left side. The most important menu items are on the left, going down in importance towards the right (you can re-order these to your preference). The screenshot below shows added functionality from the WYSIWIG module in formatting content–the basic module does not include this, however, and for formatting, you would need to at least know html, unless you add the WYSIWIG module, and even then, it is more difficult to work with than the WordPress interface, which allows for easy uploading of images as well as referencing to videos already online. 


Professional Website examples using Drupal

Planet Design

Eventbrite: Kiwi Style Bike Tours

Concrete 5 CMS

This CMS differs from most other ones in that it does NOT support posts, RSS feeds, articles, etc. It is a static page only CMS. That said, they do boast that design is their focus, and they have “drag & drop” functionality with editing, being able to move elements around in the page edit view from dashboard. It is not immediately apparent how to work with it, however, and after watching several videos, and installing a demo version on their temporary server, I did have some trouble getting things to work as well as the video showed (I had trouble changing colors of things, and was not able to get anything to re-position successfully), so this one has a learning curve greater than WordPress, but possibly less than Get Simple, Joomla or Drupal.


The core module is free, whereas the add-ons could add a little expense, but any add-on that costs money will receive support, and they test them all to make sure that they don’t conflict with one another. It comes with several themes with the core, all of which have a corresponding mobile version. Many more themes are available, and anyone who can code html or css is supposed to be able to create their own themes very easily, with a minimal use of php, which makes this CMS worth looking into further for web designers. Pages are customizable to the point that they could start to look dissimilar to one another as they can use different “templates” of organization, which could add variety.

Professional Website examples using Concrete 5

Cambridge University Press

Vancouver Aquarium

Get Simple CMS

This is an extremely “lightweight” CMS that seems to be more of a webpage builder than have all of the functionality listed above. It is the only CMS that I have come across so far that does not require a database to store information (MySQL), but rather stores information in XML. It boasts that it has an “Undo” button for every action–which makes it more user-friendly. Like Concrete 5, it also does not support posts or articles, so would not make a good “blogging” site, but is rather more geared towards small to medium “brochure” sites which have information, but do not need a lot of functionality.


It is not as user-friendly as the name suggests. It takes some savvy (or frustration) to navigate around the dashboard–or to figure out how to preview the site, and the site starts off so plain as to make it a bit more difficult to customize, unless you know some php. You have to know php in order to add plug-ins, which need to be added by manually writing them into the code. Not simple.

Professional Website examples using Get Simple

Wasabi Asheville (This site is done by Jonathan Ross, who teaches Digital Media at AB Tech, and who is also a fine opera singer)

Malá Praha Café (Czech Republic)

In Conclusion

As you can see, Content Management Systems are an extremely powerful tool to build elaborate and even unique websites, adding functionality and ease of use. By far, WordPress is the most popular one for bloggers and small businesses, whereas Drupal is preferred by larger companies that need lots of extra functionality.


1. “The Absolute Beginners Guide to Drupal.” Video presentation by OS Training. DrupalCon, July 2012.


Posted in Content Management Systems, Programming, Web Design | Tagged , , , , , | 12 Comments