There is an interesting discussion in Wordpress Garage about whether or not Wordpress can be considered a CMS (Content Management System). In the comments on this article, Miriam argues that Wordpress compares favorably with both minimalist CMS systems that require a lot of custom coding, as well as full featured but complex CMS systems such as Joomla or Drupal. For many users, Wordpress functions as an easy to use and highly customizable mid-level CMS system.
I have been doing additional work on our church web site, and have been frustrated by the lack of support for user groups. For the members section of the site I would like to have a dedicated section for various co-worker groups and have their posts automatically show up in the right section.
Here’s what I’d like to do:
- Users can be members of one or more groups
- Users can write posts only to categories owned by the group(s) to which they belong. If they are a member of only one group, their posts automatically show up in the right category.
- Posts can (optionally) be restricted to be visible only to group members
- All of this should work with both posts and pages
The purpose of this is to create a private space for various ministry teams and leaders to have their own discussion. Ideally, when they enter the site they would see a series of titles of the latest posts in the group(s) to which they belong.
Wordpress does work pretty well as a CMS, as long as you give editing privileges to a small number of trusted people. But since they can post anywhere, you don’t really want too many people working on it. Inevitably posts will show up in the wrong category, and pages will not be in the correct section. Wordpress does not lend itself very well to managing people as groups. Existing plugins do not really meet this need. Two of the best are:
- Viewlevel lets you restrict viewing of posts to users above a certain level. But it does not let you restrict which categories users can post to, nor does it let you create a number of separate groups at the same level. One advantage of viewlevel over the others is that it lets you restrict access to pages, not just posts. This is essential in a CMS application. I currently use viewlevel to restrict pages in the members section to logged in users. Viewlevel has not yet been updated to take advantage of Wordpress capabilities.
- Post restrictions uses role capabilities to control who can see which posts. This is a step in the right direction, but it does not restrict where you can post, and it presents the entire list of capabilities as choices for setting restrictions. This could be very confusing if there are a lot of people using the site. It would be must better to present only a list of user groups. It also does not work with pages.
It is possible to make use of roles and capabilities to create pseudo-user groups, but Wordpress still lacks support for true user groups. For our public church web site this might be alright, since there are only a few people who really need to be authorized to make changes, but for the more collaborative environment that I would like to have in the members section I may need to consider another CMS package. Either that or hack together my own plugin based on the excellent work already done by others. When I have some spare time. Right.
Update: Here is a list of plugins that restrict posting/viewing in a number of ways.
Blog ministry has a good introduction on how to create a custom header for your blog.
Blogging Pro has an article on 5 Reasons to Use WordPress as CMS by Blogging Pro, including some links to tools useful to those using Wordpress as a CMS.
I have been testing the Croissanga cross-poster for posting Wordpress articles to Xanga. It seems to work perfectly, and does not create a duplicate when you edit a post as the Xanga Crossposter does. If you delete your Wordpress post, the plugin will delete the Xanga cross-post as well.
The only trick to installing it is that you have to manually create a table in the SQL database. My host is Bluehost.com, and they provide phpMyAdmin in the control panel. So adding the table is simple. Here’s how to do it:
- Go into phpMyAdmin and open the database for your Wordpress installation. You do this by selecting the appropriate database from the drop down box on the left side. If you installed Wordpress via Fantastico, it is probably named something like _wpdp1.
- In the database, select the SQL tab at the top of the page.
- Go to the file named croissanga.sql that came with the plugin. Open it up and copy out the CREATE TABLE command (you can omit the two comment lines starting with “–”). The command is on several lines, so be sure not to leave anything out.
- Go to the “Run SQL Query” box and clear out whatever is in there, then paste the CREATE TABLE command in there, then click on “Go.”
- If everything works correctly, you should see a message saying that the table has been created
That’s the only tricky part. Now you just need to open up the file croissanga.php and put in your Xanga user name and password in the place indicated near the top of the file. Then just upload the file and activate the plugin.
I have customized the dmry tree menu plugin by Hakan Demiray so that it will do what I want. It’s a great plugin, but I needed it to work a little differently. I wanted it to automatically open the child nodes of the selected menu item, so that users can see what is there.
I have submitted my modifications to the plugin for possibly inclusion in the next version. In the meantime I will make my version available for download here.
Update: Here is some code to add OpenAll and CloseAll links (in response to the comment by Alby below).
<a href=“#” onclick=“d_0.openAll();return false;” >Open all
</a>
<a href=“#” onclick=“d_0.closeAll();return false;” >Close all
</a>
Just put this code after the menu call in your page template (mine is in sidebar.php). If you want to you can use images or buttons instead of simple text for the link.
My church site is now on line using Wordpress as a CMS. Although we are still making improvements, there has been enough progress to begin to share some of what I have learned.
In order to use Wordpress as a CMS, there are several needs that have to be met. Some of the ones that come to mind are:
- navigation
- custom features
- user management
- ease of updating
In this post I want to share what I have learned about navigation. To make the site user-friendly it is important to put navigation controls where users expect to find them, which is normally either a horizontal menu bar at the top or a menu in the left side bar. I opted to use both. (You can try them out at the church site.)
To make the horizontal nav menu I have seen WP themes that hand code the links, but I wanted to have top level pages automatically appear in the menu. Here is the code I use:
<ul id=“topnav”>
<?php wp_list_pages(’sort_column=menu_order&title_li= &depth=1′); ?>
</ul>
Then you need to define the “topnav” list style to use an in-line list. Here is what I have in my style sheet:
#topnav
{
list-style:
none;
font-size:
1.0em;
margin:
0 0 0 178px;
padding: 3px 0px 3px
0;
text-align:
left;
font-family: Verdana, Arial, Sans-Serif;
font-weight:
bold;
}
#topnav ul
{
margin: 0;
padding: 0;
color: #BBC4A3;
}
#topnav ul li {
display: inline;
margin: 0;
}
#topnav li a:link, #topnav li a:visited
{
text-decoration:none;
color: #BBC4A3;
margin: 0;
border-color: #BBC4A3;
border-left: thin solid;
padding: 0 10px 0 10px;
}
#topnav li a:hover, #topnav li a:active
{
color: #F7F3ED;
}
There are probably a few places that this could be cleaned up, but anyway it works!
Next time I will write about the sidebar menu. . .
Yesterday Wordpress 2.0 was released. I haven’t tried it yet, but hopefully soon I will have time to give it a spin on my test site. The main thing is that some of the plugins that I use might not work yet with WP 2.0, so it might be wise to give the plugin authors a bit of time to update them.
Since my current project is using WP as a CMS for my church web site, I am especially excited about a few of the features.
- WYSIWYG Editor
This new editor will make it even easier for non-techies to create/edit posts or pages. Now they can easily format text without having to insert html tags. One of our design considerations is that ministry leaders should be able to edit pages without knowing any html. But if you don’t like it you can turn it off (sometimes I would rather edit the code).
- User Roles
Here is an explanation of this feature from Asymptomatic:
The “user level” concept of security has now been replaced with Roles. WordPress associates a Role to each user. Roles have Capabilities such as “edit posts” and “activate plugins” that allow certain actions. There is no more concept of hierarchical users, but plugin authors can now create whole new Capabilities to apply proper permission management.
One of the big challenges of a CMS in a volunteer organization like a church is the need to assign limited permissions to different users so that they can edit their section but not mess up the whole site. With WP 2.0 it is possible to define the capabilities of custom designed roles, and to assign more than one role to a user (although there is currently not an interface to support this). This will make Wordpress much more powerful as a multi-user CMS. You can read more here.
Wordpress isn’t just for blogging anymore. I am exploring using Wordpress as a CMS (Content Management System) for our church web site. A number of churches are moving in this direction:
The Village Church and WordPress
Higgins Lake Baptist Church
Lakeshore Community Church [update: not using Wordpress]
There is a theme/plugin combo called Semiologic that significanly changes how Wordpress works. It is being used for the site of Cal Christian Fellowship, the IVFC group at Cal.
So why would anyone want to use a CMS instead of just creating ordinary html? And what is a CMS anyway?
Read this article about what it means to have a “data driven” web site.
I think that for our church web site the key consideration is to make it as easy as possible to update and maintain the content of the site. With a Wordpress based CMS, we could assign different pages/sections of the site to different ministry leaders who then could update the pages as needed. If you can write in a blog, then you can update pages on the web site. We have to make it possible to update information in the site without needing to know html or how to use ftp.
Here is an article on using Wordpress as a CMS
I will add to this post as I learn more about this topic…
Updated: 9/1/05
It’s time to post something in the Technology category…
I was thinking about blogging for quite sometime, and I considered the alternatives. Basically it breaks down into two approaches:
1) Blogging services that provide a ready to use blogging site (Blogger, Xanga, Livejournal, etc.)
2) Blogging software that you run on your own server (Wordpress, B2, Moveable Type, etc.)
The advantage of the first category is that it is very easy to get started and you don’t need web hosting. The second solution offers more powerful software with more flexibility, plus you are in control of your own data.
For a simple introduction to some of the most popular choices read here. For a detailed evaluation of various blogging software solutions see this.
Since I was already getting my own web site, I opted for choice #2, and specifically I decided to go with Wordpress.
A few more thoughts about why I specifically chose Wordpress…
- It is very powerful but easy to use. If you stick with existing templates and plugins it is easy to customize without any programming knowledge
- If you want to go beyond the basics you can create your own templates and go way beyond anything possible with Xanga.
- You can use plugins to extend or modify the operation of Wordpress, and there are a lot of built in tags and hooks that make it easy. Wordpress is designed to be extended by users.
- I like the ability to assign posts to categories, so that readers who are interested a specific type of post (e.g. Technology) can click on the Technology category link and see all those posts. (Those reading the crosspost in my Xanga will need to come to my main site to see what I am talking about.
- Wordpress is a blogging system, but it is more than that. I call it “Blogging on Steroids.” With the ability to define static pages that are not time-dated blog entries, it can function as a CMS (Content Management System). You can create pages and subpages to set up a whole hierarchy of documents. Since I want to write some more serious articles as well this was important to me.
- Wordpress is free
- Wordpress has a great support community. There is great help available and people are always creating new templates and plugins.
I could add more to this list, but I think that you get the idea. If people are interested I could tell you a little more about some of the plugins that I use and what they do.