<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MaisonBisson.com &#187; cms</title>
	<atom:link href="http://maisonbisson.com/blog/post/tag/cms/feed/" rel="self" type="application/rss+xml" />
	<link>http://maisonbisson.com</link>
	<description>A bunch of stuff I would have emailed you about.</description>
	<lastBuildDate>Sat, 14 Nov 2009 20:14:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WordPress Hacks: Nested Paths For WPMU Blogs</title>
		<link>http://maisonbisson.com/blog/post/14052/wordpress-hacks-nested-paths-for-wpmu-blogs/</link>
		<comments>http://maisonbisson.com/blog/post/14052/wordpress-hacks-nested-paths-for-wpmu-blogs/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 16:23:10 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Libraries & Networked Information]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[information architecture]]></category>
		<category><![CDATA[url path]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WordPress MU]]></category>
		<category><![CDATA[wpmu]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14052</guid>
		<description><![CDATA[
Situation: you&#8217;ve got WordPress Multi-User setup to host one or more domains in sub-directory mode (as in site.org/blogname), but you want a deeper directory structure than WPMU allows&#8230;something like the following examples, perhaps:

site.org/blogname1
site.org/departments/blogname2
site.org/departments/blogname3
site.org/services/blogname3

The association between blog IDs and sub-directory paths is determined in wpmu-settings.php, but the code there knows nothing about nested paths. So a [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14052"><!-- &nbsp; --></abbr>
<p><strong><span style="font-weight: normal"><div class="contents innerindex"><h3>Contents</h3><ol><li><a href="http://maisonbisson.com/blog/post/14052/wordpress-hacks-nested-paths-for-wpmu-blogs/#14052_hack-the-path-mappin_1">Hack The Path Mapping</a><ol><li><a href="http://maisonbisson.com/blog/post/14052/wordpress-hacks-nested-paths-for-wpmu-blogs/#14052_optimization-note_1">Optimization note</a></li></ol></li><li><a href="http://maisonbisson.com/blog/post/14052/wordpress-hacks-nested-paths-for-wpmu-blogs/#14052_setting-up-new-blogs_1">Setting Up New Blogs</a></li><li><a href="http://maisonbisson.com/blog/post/14052/wordpress-hacks-nested-paths-for-wpmu-blogs/#14052_hack-the-htaccess_1">Hack The .htaccess</a></li></ol></div></span>Situation:</strong> you&#8217;ve got WordPress Multi-User setup to <a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/">host one or more domains</a> in sub-directory mode (as in <code>site.org/blogname</code>), but you want a deeper directory structure than WPMU allows&#8230;something like the following examples, perhaps:</p>
<ul>
<li><code>site.org/blogname1</code></li>
<li><code>site.org/departments/blogname2</code></li>
<li><code>site.org/departments/blogname3</code></li>
<li><code>site.org/services/blogname3</code></li>
</ul>
<p>The association between blog IDs and sub-directory paths is determined in <a href="http://trac.mu.wordpress.org/browser/tags/2.8.4a/wpmu-settings.php"><code>wpmu-settings.php</code></a>, but the code there knows nothing about nested paths. So a person planning to use WordPress MU as a CMS must either flatten his/her information architecture, or do some hacking.<br />
<span id="more-14052"></span><br />
<strong>Challenge: hacking WordPress MU to support arbitrary directory paths for each blog<br />
</strong></p>
<p>As with my <a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/">multi-domain hack</a>, the following assumes that you’re using the <code>vhost=no</code> setting, that you have access to and know how to manipulate your MySQL, that you have control over your DNS and know how to use it, and that you know how to configure Apache or similar. You’d also be smart to turn off any object caching you may have running, at least until we’re done doing direct database manipulation. The following also assumes that your <code>wp-config.php</code> sets the <code>DOMAIN_CURRENT_SITE</code> and <code>PATH_CURRENT_SITE</code> constants &#8212; if you&#8217;ve done a fresh install recently, it probably does, or you can <a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_reconfigure-wp-confi_1">check my domain mapping hack</a>.</p>
<h3 id="14052_hack-the-path-mappin_1">Hack The Path Mapping</h3>
<p>Right at the top of <a href="http://trac.mu.wordpress.org/browser/tags/2.8.4a/wpmu-settings.php#L28"><code>wpmu-settings.php</code></a> you can see how it strips all but the base of the URL path, but rather than mod that file, we can take advantage of an obscure MU hack: <code>sunrise.php</code>, which gets executed after some important WordPress components like the database class get loaded and before <a href="http://trac.mu.wordpress.org/browser/tags/2.8.4a/wpmu-settings.php"><code>wpmu-settings.php</code></a>. </p>
<p>To use <code>sunrise.php</code>, create a PHP file at <code>/wp-content/sunrise.php</code> and set <code>define('SUNRISE', TRUE);</code> in your <code>wp-config.php</code>.</p>
<p>Here&#8217;s the <code>sunrise.php</code> code I&#8217;m using:</p>
<pre class="brush: php;">if( defined( 'DOMAIN_CURRENT_SITE' ) &amp;&amp; defined( 'PATH_CURRENT_SITE' ) ) {
	$current_site-&gt;id = (defined( 'SITE_ID_CURRENT_SITE' ) ? constant('SITE_ID_CURRENT_SITE') : 1);
	$current_site-&gt;domain = $domain = DOMAIN_CURRENT_SITE;
	$current_site-&gt;path  = $path = PATH_CURRENT_SITE;
	if( defined( 'BLOGID_CURRENT_SITE' ) )
		$current_site-&gt;blog_id = BLOGID_CURRENT_SITE;

	$url = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );

	$patharray = (array) explode( '/', trim( $url, '/' ));
	$blogsearch = '';
	if( count( $patharray )){
		foreach( $patharray as $pathpart ){
			$pathsearch .= '/'. $pathpart;
			$blogsearch .= $wpdb-&gt;prepare(&quot; OR (domain = %s AND path = %s) &quot;, $domain, $pathsearch .'/' );
		}
	}

	$current_blog = $wpdb-&gt;get_row( $wpdb-&gt;prepare(&quot;SELECT *, LENGTH( path ) as pathlen FROM $wpdb-&gt;blogs WHERE domain = %s AND path = '/'&quot;, $domain, $path) . $blogsearch .'ORDER BY pathlen DESC LIMIT 1');

	$blog_id = $current_blog-&gt;blog_id;
	$public  = $current_blog-&gt;public;
	$site_id = $current_blog-&gt;site_id;
	$current_site = sl_get_current_site_name( $current_site );
}

function sl_get_current_site_name( $current_site ) {
	global $wpdb;
	$current_site-&gt;site_name = wp_cache_get( $current_site-&gt;id . ':current_site_name', &quot;site-options&quot; );
	if ( !$current_site-&gt;site_name ) {
		$current_site-&gt;site_name = $wpdb-&gt;get_var( $wpdb-&gt;prepare( &quot;SELECT meta_value FROM $wpdb-&gt;sitemeta WHERE site_id = %d AND meta_key = 'site_name'&quot;, $current_site-&gt;id ) );
		if( $current_site-&gt;site_name == null )
			$current_site-&gt;site_name = ucfirst( $current_site-&gt;domain );
		wp_cache_set( $current_site-&gt;id . ':current_site_name', $current_site-&gt;site_name, 'site-options');
	}
	return $current_site;
}</pre>
<p>The first few lines of the code do pretty much the same as the start of the <a href="http://trac.mu.wordpress.org/browser/tags/2.8.4a/wpmu-settings.php#L44"><code>wpmu_current_site()</code></a> function in <code>wpmu-settings.php</code>, but starting with line 8 it takes a big departure.</p>
<p>That&#8217;s where it splits the requested URL path like <code>/path/to/blog/and/stuff/</code> into pieces and constructs an SQL query against the <code>wp_blogs</code> table to identify the correct blog to serve the request. The following example shows how:</p>
<pre class="brush: sql;">SELECT *, LENGTH( path ) as pathlen
	 FROM wp_blogs
	 WHERE domain = 'domain.org' AND path = '/'&quot;
	  	 OR (domain = 'domain.org' AND path = '/path/')
	 	 OR (domain = 'domain.org' AND path = '/path/to/')
	 	 OR (domain = 'domain.org' AND path = '/path/to/blog/')
	 	 OR (domain = 'domain.org' AND path = '/path/to/blog/and/')
	 	 OR (domain = 'domain.org' AND path = '/path/to/blog/and/stuff/')
	 ORDER BY pathlen DESC
	 LIMIT 1</pre>
<h4 id="14052_optimization-note_1">Optimization note</h4>
<p>Setting a maximum depth (and <code>array_slice( $patharray, 0, $maxdepth )</code>) would allow the query to be cached up to that depth. Otherwise, the query must be executed for every page load. The <code>$maxdepth</code> could either be set arbitrarily, or could be determined automatically based on the maximum path length of registered blogs.</p>
<h3 id="14052_setting-up-new-blogs_1">Setting Up New Blogs</h3>
<p>Once you&#8217;ve hacked the path mapping (and tested that it didn&#8217;t break your current site), you can add a new blog at a nested path.</p>
<div id="attachment_14063" class="wp-caption aligncenter" style="width: 553px"><a href="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-12-at-10.37.24-AM.png"><img src="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-12-at-10.37.24-AM.png" alt="Create a new blog in the MU blog admin." width="543" height="235" class="size-full wp-image-14063" /></a><p class="wp-caption-text">Create a new blog in the MU blog admin.</p></div>
<p>Unfortunately, MU strips the slashes from the URL path you just tried to set.</p>
<div id="attachment_14064" class="wp-caption aligncenter" style="width: 499px"><a href="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-12-at-10.39.02-AM.png"><img src="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-12-at-10.39.02-AM.png" alt="The new blog you just tried to create, but with a very different path." width="489" height="125" class="size-full wp-image-14064" /></a><p class="wp-caption-text">The new blog you just tried to create, but with a very different path.</p></div>
<p>Fortunately, you can set the path correctly in the MU blog editor, and it won&#8217;t break the path when you save there.</p>
<div id="attachment_14065" class="wp-caption aligncenter" style="width: 497px"><a href="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-12-at-10.39.42-AM.png"><img src="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-12-at-10.39.42-AM.png" alt="Set the blog path in the MU blog editor, MU won&#39;t break it when you save it this time." width="487" height="123" class="size-full wp-image-14065" /></a><p class="wp-caption-text">Set the blog path in the MU blog editor, MU won't break it when you save it this time.</p></div>
<p>Once you create the new blog, try to load it in your browser. You&#8217;ll quickly notice the stylesheet is missing, though the blog works and functions properly.</p>
<h3 id="14052_hack-the-htaccess_1">Hack The .htaccess</h3>
<p>WPMU uses the following <code>.htaccess</code> rewrite rule to properly direct requests for files on the real filesystem:</p>
<pre class="brush: plain;">RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-.*) $2 [L]</pre>
<p>Obviously, that rule won&#8217;t work for deep paths, so I&#8217;ve replaced it with this rule:</p>
<pre class="brush: plain;">RewriteRule  ^(.+)?/(wp-.*) /$2 [L]</pre>
<p>And with that, you should be done.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14052/wordpress-hacks-nested-paths-for-wpmu-blogs/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>WordPress Hacks: Serving Multiple Domains</title>
		<link>http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/</link>
		<comments>http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 17:41:57 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[cookies]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[sub-domains]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WordPress MU]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14028</guid>
		<description><![CDATA[
strong>Situation: using WordPress MU (possibly including BuddyPress) on multiple domains or sub-domains of a large organization with lots of users.
WordPress MU is a solid CMS to support a large organization. Each individual blog has its own place in the organization&#8217;s URL scheme (www.site.org/blogname), and each blog can have its own administrators and other users. Groups [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14028"><!-- &nbsp; --></abbr>
<div class="contents innerindex"><h3>Contents</h3><ol><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_challenge-setting-up_1">Challenge: setting up service on multiple (sub-) domains</a><ol><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_set-up-your-web-serv_1">Set up your web server</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_set-up-your-dns_1">Set up your DNS</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_create-a-new-blog-in_1">Create a new blog in WPMU</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_reconfigure-wp-confi_1">Reconfigure wp-config.php</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_set-up-your-new-site_1">Set up your new Site</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_set-up-the-admins-of_1">Set up the admins of the new site</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_sub-domains-or-just-_1">Sub-domains or just different domains?</a></li></ol></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_challenge-unified-lo_1">Challenge: unified log in cookies</a><ol><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_set-your-cookie-path_1">Set your cookie path</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_avoid-conflicts-with_1">Avoid conflicts with other WordPress installations at your domain</a></li></ol></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_challenge-unified-lo_2">Challenge: unified log in location/URL</a><ol><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_filter-login_url-and_1">Filter login_url and logout_url</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_filter-allowed_redir_1">Filter allowed_redirect_hosts</a></li></ol></li></ol></div><strong>Situation:</strong> using WordPress MU (possibly including BuddyPress) on multiple domains or sub-domains of a large organization with lots of users.</p>
<p>WordPress MU is a solid CMS to support a large organization. Each individual blog has its own place in the organization&#8217;s URL scheme (<code>www.site.org/blogname</code>), and each blog can have its own administrators and other users. Groups of blogs in WPMU make up a &#8220;Site&#8221; and one or more Sites can be hosted with a single implementation. (I&#8217;m capitalizing Site for the same reason WordPress docs capitalize <a href="http://codex.wordpress.org/Pages">Page</a>) Each Site has a defined set of administrators and options controlling various features. You might, for instance, lock down the plugins on your <code>blogs.site.org</code>, while keeping it open on your <code>www.site.org</code>. Or maybe you&#8217;d like to let your helpdesk staff create new blogs at <code>blogs.site.org</code>, but not at <code>www.site.org</code>. That&#8217;s what WPMU&#8217;s notion of Site can help you control.<br />
<span id="more-14028"></span></p>
<h3 id="14028_challenge-setting-up_1">Challenge: setting up service on multiple (sub-) domains</h3>
<p>WordPress MU makes it easy to host both blogs.site.org and www.site.org within a single implementation, but there&#8217;s little documentation for how to do it.</p>
<p>Once you get WPMU up and running on one of your domains you can add another. The following assumes that you&#8217;re using the <code>vhost=no</code> setting (correct: I really mean vhost=no), that you have access to and know how to manipulate your MySQL, that you have control over your DNS and know how to use it, and that you know how to configure Apache or similar. You&#8217;d also be smart to turn off any object caching you may have running, at least until we&#8217;re done doing direct database manipulation.</p>
<p>Some might ask why I&#8217;m not simply using <a href="http://wordpress.org/extend/plugins/wordpress-mu-domain-mapping/">Donncha&#8217;s plugin</a>, and the answer is simple: it only works for <code>vhost=yes</code> sites. For my own use, I find that sub-directories are easier for users to make sense of (go ahead, try to tell your mom to go to &#8220;<code>myblog.sub.domain.org</code>&#8220;).</p>
<h4 id="14028_set-up-your-web-serv_1">Set up your web server</h4>
<p>If you&#8217;re using Apache, you&#8217;ll either need to create an <a href="http://httpd.apache.org/docs/2.2/vhosts/ip-based.html">IP-based virtual host</a> or <a href="http://maisonbisson.com/blog/post/12781/apache-virtual-hosting-black-magic/">manually configure</a> your name-based virtual host for every (sub-)domain you plan to serve. Why: WordPress will handle the domain mapping for you, so it&#8217;s better to keep Apache out of the way and let WPMU own the entire IP.</p>
<h4 id="14028_set-up-your-dns_1">Set up your DNS</h4>
<p>Point each subdomain you plan to host in WordPress to your webserver. You can use a wildcard domain, but you don&#8217;t have to.</p>
<h4 id="14028_create-a-new-blog-in_1">Create a new blog in WPMU</h4>
<p>It doesn&#8217;t matter what you call it or what the path is, just create one. Now go edit it in the Site Admin:</p>
<p><div id="attachment_14029" class="wp-caption aligncenter" style="width: 310px"><a href="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-02-at-8.41.56-PM.png"><img class="size-medium wp-image-14029" src="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-02-at-8.41.56-PM-300x69.png" alt="edit blog 1" width="300" height="69" /></a><p class="wp-caption-text">Change the domain and path to match your new domain.</p></div>
<p style="text-align: left">One quirk of WPMU is that it strips &#8220;www&#8221; from any domain name you enter (or is requested), so don&#8217;t bother trying to enter it (unless you&#8217;re willing to do some hacking to make it work). WPMU stores domain and path information in three locations: the wp_#_options table for the blog, the wp_blogs table, and the wp_sites table. When you edit a blog in the Site Admin, you&#8217;ll get a chance to edit the domain and path for both the wp_#_options and the wp_blogs tables. Clicking the helpful checkbox above will do most of that for you, but you&#8217;ll need to manually update the Upload Path.</p>
<div id="attachment_14030" class="wp-caption aligncenter" style="width: 310px"><a href="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-02-at-8.42.34-PM.png"><img class="size-medium wp-image-14030" src="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-02-at-8.42.34-PM-300x48.png" alt="Now make sure the new domain is shown in the blog's options as well." width="300" height="48" /></a><p class="wp-caption-text">Now make sure the new domain is shown in the blog&#39;s options as well.</p></div>
<p>You might be able to load the blog at the new URL as soon as you update those settings, but recent versions of WPMU set some constants in <code>wp-config.php</code> that can get in your way.</p>
<h4 id="14028_reconfigure-wp-confi_1">Reconfigure wp-config.php</h4>
<p>Your <code>wp-config.php</code> might have something like this:</p>
<pre class="brush: php;">$base = '/';
define('DOMAIN_CURRENT_SITE', 'sub.site.org' );
define('PATH_CURRENT_SITE', '/' );
define('SITE_ID_CURRENT_SITE', 1);
define('BLOGID_CURRENT_SITE', '1' );</pre>
<p>Those constants override the database checking that goes on in <code>wpmu-settings.php</code> to map the requested domain to a site. You have three choices: leave it as it is (and use only one &#8220;Site&#8221;), remove it and have WPMU do the mapping against the database, or expand the hard-coded mapping to include other sites.</p>
<p>I&#8217;ve used code like the following to do just that:</p>
<pre class="brush: php;">if( preg_match( '/(.+?\.)?([^\.]+?)\.site.org/i', 'www'. $_SERVER['SERVER_NAME'] , $matchedsubdomains ))
{
	switch( array_pop( $matchedsubdomains )){
		case 'connect':
			define('DOMAIN_CURRENT_SITE', 'blogs.site.org' );
			define('PATH_CURRENT_SITE', '/' );
			define('BLOGID_CURRENT_SITE', '1' );
			break;
		case 'www':
		default:
			define('DOMAIN_CURRENT_SITE', 'site.org' );
			define('PATH_CURRENT_SITE', '/' );
			define('BLOGID_CURRENT_SITE', '2' );
			break;
}
}
else
{
	define('DOMAIN_CURRENT_SITE', 'site.org' );
	define('PATH_CURRENT_SITE', '/' );
	define('BLOGID_CURRENT_SITE', '2' );
}</pre>
<h4 id="14028_set-up-your-new-site_1">Set up your new Site</h4>
<p>Once you have your new sub-domain working with one blog, you can create your new Site. Even if you don&#8217;t plan to create separate management policies for the different sites, it&#8217;s easier to create new blogs at each sub-domain if they each have their own Site.</p>
<p>Go in to your MySQL tool of choice and browse the <code>wp_site</code> table. There you&#8217;ll see just one row, but if you&#8217;ve made it this far you can also probably figure out how to create a new row representing the site at the new sub-domain. And once you do that, you can change the entry in the <code>wp_blogs</code> table to associate it with your new Site.</p>
<h4 id="14028_set-up-the-admins-of_1">Set up the admins of the new site</h4>
<p>Creating the new entry in <code>wp_site</code> doesn&#8217;t set the options for the new Site, and that means there are no Site administrators yet. Once again in your MySQL tool of choice, open up the <code>wp_sitemeta</code> table and look for an entry with <code>meta_key = 'site_admins'</code>. The <code>meta_value</code> for that entry is a serialized array containing WordPress usernames of the people who have site-wide administration privileges on the first Site. I&#8217;m assuming that if you have MySQL access you&#8217;re also a Site admin, so the easy thing to do is copy that row and change the <code>site_id</code> to match the auto-increment value from the new <code>wp_site</code> entry you made in the last step.</p>
<p>With the database manipulation done, you should now be able to go to the WP dashboard at your new Site, visit the WPMU admin options screen, and set the other options as necessary. You could decide to make one of your Sites open registration (remember, however, that users are shared across all Sites), while making other Sites more closed. And, obviously, you can delegate different Site admins for each Site. </p>
<h4 id="14028_sub-domains-or-just-_1">Sub-domains or just different domains?</h4>
<p>It&#8217;s worth noting that the instructions so far apply to both sub-domains and domains. You can use a single implementation of WPMU to manage content at both <code>lolzors.org</code> and <code>tehsite.org</code>. The detail about sub-domains really only applies to the next part. It&#8217;s also worth noting that you can support an arbitrary number of blogs, sites, and domains; I&#8217;m just using two sub-domains as an example.</p>
<h3 id="14028_challenge-unified-lo_1">Challenge: unified log in cookies</h3>
<p>What&#8217;s the point of hosting multiple sub-domains with one WPMU implementation if you&#8217;ll need to log in separately at each one?</p>
<h4 id="14028_set-your-cookie-path_1">Set your cookie path</h4>
<p>Setting a cookie path that that&#8217;s broad enough to cover the entire domain will solve this:</p>
<pre class="brush: php;">define('COOKIE_DOMAIN', 'site.org');
define('ADMIN_COOKIE_PATH', '/');
define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');</pre>
<h4 id="14028_avoid-conflicts-with_1">Avoid conflicts with other WordPress installations at your domain</h4>
<p>But having such a broad cookie domain can interfere with other WordPress implementations. You&#8217;ll have to solve that by setting a unique cookiehash:</p>
<pre class="brush: php;">define( 'COOKIEHASH', 'asdf_arbitrary_string' );</pre>
<p>You&#8217;d do better to keep it shorter than that, though.</p>
<h3 id="14028_challenge-unified-lo_2">Challenge: unified log in location/URL</h3>
<p>WordPress MU is happy to handle authentication requests wherever it hosts a blog, but some organizations prefer to funnel all authentication requests through a single location. The idea is to provide some protection against fishing (assuming users can ever be taught to look at URLs) and make it easer to integrate external applications.</p>
<h4 id="14028_filter-login_url-and_1">Filter login_url and logout_url</h4>
<p>Set the log in and log out path to whatever you want, just make sure the destination knows how to create (or destroy) the WordPress cookies.</p>
<pre class="brush: php;">
$hack_base_domain = 'site.org';

function hack_login_url( $path ){
	global $hack_base_domain;

	return preg_replace( '/^.+?\/wp-login.php/' , 'https://login.'. $hack_base_domain .'/wp-login.php', $path );
}
add_filter( 'login_url' , 'hack_login_url' , 10 );
add_filter( 'logout_url' , 'hack_login_url' , 10 );
</pre>
<h4 id="14028_filter-allowed_redir_1">Filter allowed_redirect_hosts</h4>
<p>WP will normally block redirects outside the web root of the active blog, so you&#8217;ll need to tell it about your other sub-domains.</p>
<pre class="brush: php;">
function hack_allowed_redirect_hosts( $allowed_domains ){
	global $hack_base_domain;

	$allowed_domains[] = $hack_base_domain;
	$allowed_domains[] = 'www.'. $hack_base_domain;
	$allowed_domains[] = 'blogs.'. $hack_base_domain;

	return $allowed_domains;
}
add_filter( 'allowed_redirect_hosts' , 'hack_allowed_redirect_hosts' , 10 );
</pre>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tricky Uses of bSuite</title>
		<link>http://maisonbisson.com/blog/post/12934/tricky-uses-of-bsuite/</link>
		<comments>http://maisonbisson.com/blog/post/12934/tricky-uses-of-bsuite/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 16:55:14 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[bsuite]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[content management]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=12934</guid>
		<description><![CDATA[
After writing the project page for wpSMS I didn&#8217;t have much more to say in a blog post announcing it. The cool thing about writing Pages in WordPress is that I can create a taxonomy like /projects/wpsms/ to place them in. The downside is that new pages never appear in the RSS feed.
So I need [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-12934"><!-- &nbsp; --></abbr>
<p>After writing the <a href="http://maisonbisson.com/projects/wpsms/">project page for wpSMS</a> I didn&#8217;t have much more to say in <a href="http://maisonbisson.com/blog/post/12911/wpsms-wordpress-plugin-sends-sms-messages/">a blog post announcing it</a>. The cool thing about <a href="http://codex.wordpress.org/Pages">writing Pages in WordPress</a> is that I can create a taxonomy like <code>/projects/wpsms/</code> to place them in. The downside is that new pages never appear in the RSS feed.</p>
<p>So I need both the page and a blog post to announce it. I could have simply copied the content from the wpSMS page into a blog post, but that creates confusion and splits the audience between the two pages. Instead, I&#8217;m using two bSuite features: the <code>[inclu</code><code>de]</code> <a href="http://maisonbisson.com/bsuite/shortcodes/">shortcode</a> and the post redirection support.</p>
<ol>
<li>Create the page.</li>
<li>Start a new post.
<ol>
<li>In the post body put the <a href="http://maisonbisson.com/bsuite/shortcodes/#12141_include_1"><code>include</code> shortcode</a> like this: <code>[inclu</code><code>de post_id="123" field="post_content"]</code>.</li>
<li>In the custom fields put an entry with the key: &#8220;redirect&#8221; and the full URL to to your page.</li>
</ol>
</li>
<li>Relax, you&#8217;re done.</li>
</ol>
<p>The include shortcode will copy all the content from the page (so you don&#8217;t have to manage it twice), and the redirect custom field will tell bSuite to redirect anybody trying to read that post to your page.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/12934/tricky-uses-of-bsuite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Do WordPress Pages Better With bSuite</title>
		<link>http://maisonbisson.com/blog/post/12651/do-wordpress-pages-better-with-bsuite/</link>
		<comments>http://maisonbisson.com/blog/post/12651/do-wordpress-pages-better-with-bsuite/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 19:27:14 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Libraries & Networked Information]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[bsuite]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[features]]></category>
		<category><![CDATA[innerindex]]></category>
		<category><![CDATA[list_pages]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[shortcodes]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WordPress as CMS]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=12651</guid>
		<description><![CDATA[
a href=&#8221;http://wordpress.org/&#8221;>WordPress&#8216; Pages feature makes the popular blogging platform a sophisticated CMS. bSuite adds a few features to make it even better.
   
Write excerpts, tag, and categorize your pages
WordPress excerpts are an underused but powerful feature that allow you to explain to your readers why they should read the page you wrote. Tagging [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-12651"><!-- &nbsp; --></abbr>
<p><div class="contents innerindex"><h3>Contents</h3><ol><li><a href="http://maisonbisson.com/blog/post/12651/do-wordpress-pages-better-with-bsuite/#12651_write-excerpts-tag-a_1">Write excerpts, tag, and categorize your pages</a></li><li><a href="http://maisonbisson.com/blog/post/12651/do-wordpress-pages-better-with-bsuite/#12651_automatically-insert_1">Automatically insert anchors in your page</a></li><li><a href="http://maisonbisson.com/blog/post/12651/do-wordpress-pages-better-with-bsuite/#12651_automatically-list-s_1">Automatically list sub-pages</a></li><li><a href="http://maisonbisson.com/blog/post/12651/do-wordpress-pages-better-with-bsuite/#12651_automatically-list-s_2">Automatically list sub-pages with excerpts</a></li></ol></div><a href="http://wordpress.org/">WordPress</a>&#8216; <a title="Pages « WordPress Codex" href="http://codex.wordpress.org/Pages">Pages</a> feature makes the popular blogging platform a sophisticated CMS. <a href="http://maisonbisson.com/bsuite/">bSuite</a> adds a few features to make it even better.</p>
<p><a title="excerpt by misterbisson, on Flickr" href="http://www.flickr.com/photos/maisonbisson/2885151603"><img class="alignnone" title="Use excerpts to help readers quickly understand your content" src="http://farm4.static.flickr.com/3064/2885151643_143679b546_t.jpg" alt="excerpt" width="100" height="100" /></a> <a title="bSuite cms small by misterbisson, on Flickr" href="http://www.flickr.com/photos/maisonbisson/1959579190/"><img class="alignnone" title="This table of contents links to anchors within the page" src="http://farm3.static.flickr.com/2313/2541990070_c20c030532_t.jpg" alt="bSuite cms small" width="100" height="100" /></a> <a title="list_pages by misterbisson, on Flickr" href="http://www.flickr.com/photos/maisonbisson/2885163657/"><img class="alignnone" title="Each staff member gets her own page, the list_pages shortcode brings them together" src="http://farm4.static.flickr.com/3014/2885163697_81049399bb_t.jpg" alt="list_pages" width="100" height="100" /></a> <a title="list_pages shortcode with excerpts by misterbisson, on Flickr" href="http://www.flickr.com/photos/maisonbisson/2885986260/"><img class="alignnone" title="Here's the list_pages shortcode showing excerpts in conjunction with the innerindex shortcode on each sub-page" src="http://farm4.static.flickr.com/3107/2885986286_b396ca5117_t.jpg" alt="list_pages shortcode with excerpts" width="98" height="100" /></a></p>
<h3 id="12651_write-excerpts-tag-a_1" >Write excerpts, tag, and categorize your pages</h3>
<p>WordPress excerpts are an underused but powerful feature that allow you to explain to your readers why they should read the page you wrote. Tagging and categorization of pages help improve the findability of those pages, especially in search engines. Native WordPress doesn&#8217;t support excerpts, tags, or categories for pages, but bSuite does. Whenever you edit a page you&#8217;ll see the same tools that you do when writing posts.</p>
<h3 id="12651_automatically-insert_1" >Automatically insert anchors in your page</h3>
<p>There&#8217;s nothing wrong with long pages, but you can make it easier for your readers to navigate them by if you break it up into sections. When you use the <a href="http://maisonbisson.com/bsuite/shortcodes/#12141_innerindex_1">innerindex</a> shortcode, bSuite will insert an automatically index of all the headings (the <a href="http://en.wikipedia.org/wiki/HTML_element#Headings">h1 through h6 tags</a>) in your page. This also works in regular blog posts.</p>
<h3 id="12651_automatically-list-s_1" >Automatically list sub-pages</h3>
<p>You can easily <a href="http://codex.wordpress.org/Pages#Organizing_Your_Pages">organize pages</a> into any structure that suits your content, but having to manually manage all the links into that hierarchy can be tiresome. The <a title="» Shortcodes MaisonBisson.com" href="http://maisonbisson.com/bsuite/shortcodes/#12141_list_pages_1">list_pages</a> shortcode solves that in a jiffy. Options to the shortcode allow you to set how deep the list is and other features.</p>
<h3 id="12651_automatically-list-s_2" >Automatically list sub-pages with excerpts</h3>
<p>One especially useful feature of the <a title="» Shortcodes MaisonBisson.com" href="http://maisonbisson.com/bsuite/shortcodes/#12141_list_pages_1">list_pages</a> shortcode is the ability to include the excerpt from each of the listed pages. You can even put the <a href="http://maisonbisson.com/bsuite/shortcodes/#12141_innerindex_1">innerindex</a> shortcode in the excerpt (see that at work <a title="» bSuite 4 MaisonBisson.com" href="http://maisonbisson.com/bsuite/#12138_details_1">here</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/12651/do-wordpress-pages-better-with-bsuite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>People Ask Me Questions: Web Design Software (or is it Website Management Software?)</title>
		<link>http://maisonbisson.com/blog/post/11779/people-ask-me-questions-web-design-software-or-is-it-website-management-software/</link>
		<comments>http://maisonbisson.com/blog/post/11779/people-ask-me-questions-web-design-software-or-is-it-website-management-software/#comments</comments>
		<pubDate>Tue, 15 May 2007 23:44:20 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[content management]]></category>
		<category><![CDATA[questions]]></category>
		<category><![CDATA[site management]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/blog/post/11779/#people-ask-me-questions-web-design-software-or-is-it-website-management-software</guid>
		<description><![CDATA[
The question:
What&#8217;s a good user-friendly Macintosh web development program? A friend called. She&#8217;s thinking of buying Dreamweaver, but is afraid it will be overkill. She found Frontpage to be easy and needs something similar.
My answer:
If the intent is to design individual pages on an unknown number of sites, then I don&#8217;t have a recommendation.
If the [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-11779"><!-- &nbsp; --></abbr>
<p>The question:</p>
<blockquote><p>What&#8217;s a good user-friendly Macintosh web development program? A friend called. She&#8217;s thinking of buying Dreamweaver, but is afraid it will be overkill. She found Frontpage to be easy and needs something similar.</p></blockquote>
<p>My answer:</p>
<blockquote><p>If the intent is to design individual pages on an unknown number of sites, then I don&#8217;t have a recommendation.</p>
<p>If the intent is to build a site (or any number of sites), then I&#8217;d suggest looking at WordPress. It&#8217;s an open source CMS, and there&#8217;s a hosted version that makes it easy to try out at WordPress.com.</p></blockquote>
<p>What I didn&#8217;t say, well, it was buried in my answer, was that I see a big difference between designing a page and building a site. The tools are very different.</p>
<p><tags>wordpress, web design, site management, cms, content management, questions</tags></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/11779/people-ask-me-questions-web-design-software-or-is-it-website-management-software/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Quickly Noted: MooFlex CMS</title>
		<link>http://maisonbisson.com/blog/post/11035/mooflex-cms/</link>
		<comments>http://maisonbisson.com/blog/post/11035/mooflex-cms/#comments</comments>
		<pubDate>Thu, 26 Jan 2006 20:15:14 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Blink]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ajaxian]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[content management system]]></category>
		<category><![CDATA[mooflex]]></category>
		<category><![CDATA[opensource cms]]></category>
		<category><![CDATA[web application]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/blog/?p=11035</guid>
		<description><![CDATA[
New AJAX-happy CMS: MooFlex, more info at Ajaxian (and in their podcast).
cms, opensource cms, web application, mooflex, ajaxian, content management system
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-11035"><!-- &nbsp; --></abbr>
<p>New AJAX-happy CMS: <a href="http://www.mooflex.net/" title="mooflex (webapplication)²">MooFlex</a>, more info at <a href="http://ajaxian.com/archives/mooflex-cms-demo" title="Ajaxian: MooFlex CMS Demo">Ajaxian</a> (and in <a href="http://ajaxian.com/archives/audible-ajax-episode-11-state-of-ajax-in-belgium">their podcast</a>).</p>
<p><tags>cms, opensource cms, web application, mooflex, ajaxian, content management system</tags></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/11035/mooflex-cms/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Serena Collage Customer Sites</title>
		<link>http://maisonbisson.com/blog/post/11051/serena-collage-customer-sites/</link>
		<comments>http://maisonbisson.com/blog/post/11051/serena-collage-customer-sites/#comments</comments>
		<pubDate>Wed, 21 Dec 2005 21:03:26 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[collage]]></category>
		<category><![CDATA[commercial cms]]></category>
		<category><![CDATA[content management]]></category>
		<category><![CDATA[content management system]]></category>
		<category><![CDATA[serena]]></category>
		<category><![CDATA[serena collage]]></category>
		<category><![CDATA[vendor]]></category>
		<category><![CDATA[web content management]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/blog/?p=1337824</guid>
		<description><![CDATA[
Zach got a call from the Serena Collage rep who rattled off this list of customers in New England:

Boston College
Northeastern
Bristol Community College
UMass Lowell

cms, content management, web content management, serena, collage, serena collage, content management system, vendor, commercial cms
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-11051"><!-- &nbsp; --></abbr>
<p><a href="http://nosheep.net/">Zach</a> got a call from the <a href="http://www.serena.com/" title="Serena Software (SRNA): Change Management Software, Enterprise Change Management Software ECM/SCM Applications Lifecycle Software Tools">Serena</a> <a href="http://www.serena.com/Products/Collage/" title="Web Content Management Software Serena Collage Web Change Management Software Tools">Collage</a> rep who rattled off this list of customers in New England:</p>
<ul>
<li><a href="http://www.bc.edu/">Boston College</a></li>
<li><a href="http://www.northeastern.edu/">Northeastern</a></li>
<li><a href="http://srvweb.bristol.mass.edu/">Bristol Community College</a></li>
<li><a href="http://www.uml.edu/">UMass Lowell</a></li>
</ul>
<p><tags>cms, content management, web content management, serena, collage, serena collage, content management system, vendor, commercial cms</tags></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/11051/serena-collage-customer-sites/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The Sungard/SCT Luminis Content Management Suite Demo</title>
		<link>http://maisonbisson.com/blog/post/11046/notes-on-lcms-demo/</link>
		<comments>http://maisonbisson.com/blog/post/11046/notes-on-lcms-demo/#comments</comments>
		<pubDate>Wed, 21 Dec 2005 14:34:33 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[content management]]></category>
		<category><![CDATA[content management system]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[lcms]]></category>
		<category><![CDATA[luminis]]></category>
		<category><![CDATA[luminis cms]]></category>
		<category><![CDATA[luminis content management suite]]></category>
		<category><![CDATA[sales demo]]></category>
		<category><![CDATA[sct]]></category>
		<category><![CDATA[sungard]]></category>
		<category><![CDATA[sungard sct]]></category>
		<category><![CDATA[web content management]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/blog/?p=11046</guid>
		<description><![CDATA[
We got the demo yesterday of Sungard/SCT&#8217;s Luminis Content Management Suite (sales video). I mentioned previously that the sales rep thinks Pima Community College and Edison College show it off well. 
Here&#8217;s what we learned in the demo:
It started with the explanation that data is stored as XML, processed by JSP, and rendered to the [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-11046"><!-- &nbsp; --></abbr>
<p>We got the demo yesterday of <a href="http://www.sungardsct.com/">Sungard/SCT</a>&#8217;s <a href="http://www.sungardsct.com/Education/products/p_l_content_suite.html">Luminis Content Management Suite</a> (<a href="http://www.sct.com/Education/demos/SunGard_SCT_Luminis_CMS_Demo_06_09_04/shell.html">sales video</a>). I <a href="http://maisonbisson.com/blog/post/11016/" title="Sungard/SCT Luminis Content Management Suite « MaisonBisson.com">mentioned previously</a> that the sales rep thinks <a href="http://pima.edu/" title="Pima Community College : Home">Pima Community College</a> and <a href="http://edison.edu/" title="Edison College">Edison College</a> show it off well. </p>
<p>Here&#8217;s what we learned in the demo:</p>
<p>It started with the explanation that data is stored as XML, processed by JSP, and rendered to the browser as XHTML according to templates, layouts, and “web views.” It was later explained that the product was “web server agnostic” and could run under Apache, IIS, SunOne, or others. This works because the only relationship between the web server and LCMS is on the file system. LCMS works up the pages, then spits them out onto the filesystem to be picked up by the webserver. LCMS does not dynamically generate the pages, and it has no features to support dynamic content.</p>
<p>LCMS supports three modes for admins and content authors to view and edit content: in-context, “site studio,” and some other mode that wasn&#8217;t demonstrated. WYSIWYG editing was via the <a href="http://www.realobjects.com/">Real Objects editor</a>. They were proud of the editor&#8217;s ability to accept content, including a table, pasted in from MS Word, but a look at the code revealed some of the same ugliness that we&#8217;ve seen from an export directly from Word.</p>
<p>The software is workflow heavy and our demonstrator had to “manually promote” content with every example. He assured us this would not be necessary under production circumstances, but the product had the appearance of having been designed to slow or prevent changes to web content rather than streamline the process.</p>
<p>From now on I&#8217;ll be asking the following question at all demos:</p>
<blockquote><p>The <a href="http://www.plymouth.edu/library/">library</a> is hosting <a href="http://www.plymouth.edu/library/?news/arcticpeoples/">an exhibition</a> next week. Please walk us through the process of creating a new page to describe and promote the event and then integrate that page in the library&#8217;s site taxonomy.</p></blockquote>
<p>I mention this because the demo didn&#8217;t show us anything like that. We saw only the editing of pages and it looked frustratingly cumbersome, with one example requiring several return visits to the site studio to promote an edited page from in-progress to approved to live (three is the minimum number of steps, but we were told we can have 15 or 20 or more if we wanted). If the content author didn&#8217;t have promotion authority, then the process could require the involvement and coordination of two or more people. It&#8217;s easy to imagine days passing before page corrections went live and weeks passing before new content could be put online.</p>
<p>That said, the site admins have it a little easier (if only because one assumes they have supreme permissions for everything). The templating didn&#8217;t look bad, but because the product doesn&#8217;t generate any dynamic pages, it couldn&#8217;t take advantage of some automation opportunities (the demonstrator was excited to tell us the footer text &#8212; “copyright 2005” &#8212; could be globally changed by editing a singe file, but we were curious why the copyright date wasn&#8217;t dynamically generated).</p>
<p>Permissions can be assigned per object by user or group. These details are stored in the Luminis LDAP, but they&#8217;re not shared with or based on any group or permission we&#8217;re already managing. That is, we&#8217;ll have to pay attention to provisioning (and de-provisioning) specific to the CMS. It&#8217;s amusing that vendors claim LDAP integration but remain ignorant of identity management issues.</p>
<p>There are seven levels of permission for each user or group on each object: </p>
<ul>
<li>none</li>
<li>browse</li>
<li>read</li>
<li>relate</li>
<li>version</li>
<li>write</li>
<li>delete</li>
</ul>
<p>And then there are these extended permissions:</p>
<ul>
<li>exec</li>
<li>change location</li>
<li>change state</li>
<li>change perms</li>
<li>change owner</li>
</ul>
<p>It&#8217;s worth noting that the product maintains versioned copies of each content object, making it very easy to revert to any previous saved edit or simply review prior content.</p>
<p>Somewhere along the line we were told “at its core you get a document management system.” And then we saw a demo of the product working as a document repository. The demos showed a content author “checking out” a Word file via the browser, downloading it for editing, then checking the edited version back in, entering metadata and version info, and viewing the changed document in the repository.</p>
<p>APIs?</p>
<ul>
<li>Web Development Kit<br /> &#8212; Java apps that create the content authoring/management interface</li>
<li>Documentum Foundation Classes<br /> &#8212; C++ API that runs the show</li>
</ul>
<p>There are no SOAP or other webservices-based APIs, and it didn&#8217;t seem like there was much movement toward them.</p>
<p>Implementation?<br />
A claimed three to six month implementation process including four or more weeks of service from SCT.</p>
<p><tags>cms, lcms, sct, sungard, luminis, luminis cms, content management system, sungard sct, luminis content management suite, content management, web content management, demo, sales demo</tags></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/11046/notes-on-lcms-demo/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Kim&#8217;s CMS Shortlist</title>
		<link>http://maisonbisson.com/blog/post/11005/cms/</link>
		<comments>http://maisonbisson.com/blog/post/11005/cms/#comments</comments>
		<pubDate>Mon, 19 Dec 2005 15:00:54 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[collage]]></category>
		<category><![CDATA[commercial]]></category>
		<category><![CDATA[content management system]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[omniupdate]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web management]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/blog/?p=11005</guid>
		<description><![CDATA[
With 1,800 CMS vendors in the marketplace, we&#8217;re mining what we know or know-of as a way to shorten the list. Kim named the following four:

Joomla, a derivative of Mambo&#160;
Collage appears to have good content reuse features&#160;
OmniUpdate has a good list of higher ed clients&#160;
Drupal: open source and turning heads

cms, content management system, joomla, collage, [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-11005"><!-- &nbsp; --></abbr>
<p>With <a href="http://maisonbisson.com/blog/post/10993/">1,800 CMS vendors</a> in the marketplace, we&#8217;re mining what we know or know-of as a way to shorten the list. Kim named the following four:</p>
<ul>
<li><a href="http://www.joomla.org/">Joomla</a>, a derivative of Mambo<br />&nbsp;</li>
<li><a href="http://www.serena.com/Products/Collage/home.asp">Collage</a> appears to have good content reuse features<br />&nbsp;</li>
<li><a href="http://www.omniupdate.com/">OmniUpdate</a> has a good list of higher ed clients<br />&nbsp;</li>
<li><a href="http://drupal.org/">Drupal</a>: open source and turning heads</li>
</ul>
<p><tags>cms, content management system, joomla, collage, omniupdate, drupal, commercial, open source, oss, web, web management</tags></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/11005/cms/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sungard/SCT Luminis Content Management Suite</title>
		<link>http://maisonbisson.com/blog/post/11016/sungardsct-luminis-content-management-suite/</link>
		<comments>http://maisonbisson.com/blog/post/11016/sungardsct-luminis-content-management-suite/#comments</comments>
		<pubDate>Mon, 12 Dec 2005 10:40:30 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[content management system]]></category>
		<category><![CDATA[lcms]]></category>
		<category><![CDATA[luminis]]></category>
		<category><![CDATA[luminis cms]]></category>
		<category><![CDATA[sct]]></category>
		<category><![CDATA[sungard]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/blog/?p=11016</guid>
		<description><![CDATA[
We&#8217;re looking at the Sungard/SCT Luminis Content Management Suite (sales video). The real demo comes later, but the sales rep thinks Pima Community College and Edison College show it off well. Hmm.
cms, lcms, sct, sungard, luminis, luminis cms, content management system
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-11016"><!-- &nbsp; --></abbr>
<p>We&#8217;re looking at the <a href="http://www.sungardsct.com/">Sungard/SCT</a> <a href="http://www.sungardsct.com/Education/products/p_l_content_suite.html">Luminis Content Management Suite</a> (<a href="http://www.sct.com/Education/demos/SunGard_SCT_Luminis_CMS_Demo_06_09_04/shell.html">sales video</a>). The real demo comes later, but the sales rep thinks <a href="http://pima.edu/" title="Pima Community College : Home">Pima Community College</a> and <a href="http://www.edison.edu/" title="Edison College">Edison College</a> show it off well. Hmm.</p>
<p><tags>cms, lcms, sct, sungard, luminis, luminis cms, content management system</tags></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/11016/sungardsct-luminis-content-management-suite/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>1,800 CMS Vendors!</title>
		<link>http://maisonbisson.com/blog/post/10993/1800-cms-vendors/</link>
		<comments>http://maisonbisson.com/blog/post/10993/1800-cms-vendors/#comments</comments>
		<pubDate>Thu, 01 Dec 2005 20:40:17 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Blink]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[1800]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[cms vendors]]></category>
		<category><![CDATA[competition]]></category>
		<category><![CDATA[content management system]]></category>
		<category><![CDATA[content management systems]]></category>
		<category><![CDATA[feisty]]></category>
		<category><![CDATA[marketplace]]></category>
		<category><![CDATA[vendor]]></category>
		<category><![CDATA[vendors]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/blog/?p=10993</guid>
		<description><![CDATA[
CMS Market Watch tells us that there are 1,800 CMS vendors, and some of them are getting a little feisty.
cms, content management system, content management systems, vendor, vendors, 1800, cms vendors, feisty, marketplace, competition
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-10993"><!-- &nbsp; --></abbr>
<p><a href="http://www.cmswatch.com/">CMS Market Watch</a> tells us that there are <a href="http://www.cmswatch.com/Trends/570-Tridion-scrounging-for-dirt?source=RSS">1,800 CMS vendors</a>, and some of them are getting <a href="http://blogs.cocoondev.org/mpo/archives/003566.html">a little feisty</a>.</p>
<p><tags>cms, content management system, content management systems, vendor, vendors, 1800, cms vendors, feisty, marketplace, competition</tags></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/10993/1800-cms-vendors/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CMS Pitfalls</title>
		<link>http://maisonbisson.com/blog/post/10985/cms-pitfalls/</link>
		<comments>http://maisonbisson.com/blog/post/10985/cms-pitfalls/#comments</comments>
		<pubDate>Mon, 28 Nov 2005 17:45:20 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[broadvision]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[cms pitfalls]]></category>
		<category><![CDATA[cms project]]></category>
		<category><![CDATA[cmss]]></category>
		<category><![CDATA[commerical vs. open source]]></category>
		<category><![CDATA[content management]]></category>
		<category><![CDATA[content management system]]></category>
		<category><![CDATA[editorial authority]]></category>
		<category><![CDATA[interwoven]]></category>
		<category><![CDATA[pitfalls]]></category>
		<category><![CDATA[vignette]]></category>
		<category><![CDATA[web content]]></category>
		<category><![CDATA[web designers]]></category>
		<category><![CDATA[web site management]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/blog/?p=10985</guid>
		<description><![CDATA[
Everybody wants a content management system, but there&#8217;s little agreement about what a CMS is or what it should do. Even knowledgeable people often find themselves struggling for an answer before giving up and defining a CMS by example.
The problem is that we know we want better websites, and we know technology should help, but [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-10985"><!-- &nbsp; --></abbr>
<p>Everybody wants a content management system, but there&#8217;s little agreement about what a CMS is or what it should do. Even knowledgeable people often find themselves struggling for an answer before giving up and defining a CMS by example.</p>
<p>The problem is that we know we want better websites, and we know technology should help, but how.</p>
<p><a href="http://www.adaptivepath.com/publications/essays/archives/000315.php">Jeffery Veen</a> offers some sage advice to those who would ignore the non-technical facets of the problem:</p>
<blockquote><p>Over and over I’ve heard the same complaint about [CMS implementations], “Turns out, after all the budget and time we spent, we really didn’t need a content management system at all. We just needed some editors.”</p></blockquote>
<p>That is, software can&#8217;t build good websites. The web lives on text, well written text, and that has to be at the center of any CMS project. Veen&#8217;s suggestion that companies put more editorial staff on the job may seem at odds with my own recommendations that companies encourage blogging and distributed authorship, but I see them as complementary. Every site needs strong leadership, editors, not web designers, should be driving that.</p>
<p>Still, organizations go looking for software solutions to the problem. Big name commercial solutions in this space include Vignette, Broadvision, nCompass, Interwoven, and Open Market Content Server, but all of these six-digit price-tag CMSs appear to suffer a gap between buyer&#8217;s expectations and actual product functionality, according to <a href="http://www.shorewalker.com/section2/cms_summary.html">Shorewalker</a>.</p>
<p>Among other salient quotes from Jupiter Resarch reports on CMSs, the <a href="http://www.shorewalker.com/section2/cms_summary.html">Shorewalker</a> story offers this:</p>
<blockquote><p>Today, more than 60 percent of companies that have deployed Web content management solutions still find themselves manually updating their sites&#8230;</p></blockquote>
<p>That&#8217;s a huge risk for a product with such a high price tag, but where Shorewalker&#8217;s story rings my bell is here:</p>
<blockquote><p>[T]he real cost isn&#8217;t in the box of software. It&#8217;s in the cheques you write to the people who install, adapt and maintain the software.</p></blockquote>
<p>Remember, <strong>the cost of any software product is be broken into three categories: acquisition, integration, and maintenance</strong>. Some product categories have relatively low integration costs, but CMS are too immature and our needs are too diverse to be among them. And this is why home-grown and open-source CMS solutions are worth a good look: you may have to invest more on integration, but the result will probably be better than with a commercial product, and the total investment will most likely be lower because it eliminates the acquisition costs.</p>
<p><!-- technorati tags start -->
<p style="text-align:right;font-size:10px;">tags: <a href="http://www.technorati.com/tag/broadvision" rel="tag">broadvision</a>, <a href="http://www.technorati.com/tag/cms" rel="tag">cms</a>, <a href="http://www.technorati.com/tag/cms pitfalls" rel="tag">cms pitfalls</a>, <a href="http://www.technorati.com/tag/cms project" rel="tag">cms project</a>, <a href="http://www.technorati.com/tag/cmss" rel="tag">cmss</a>, <a href="http://www.technorati.com/tag/commerical vs. open source" rel="tag">commerical vs. open source</a>, <a href="http://www.technorati.com/tag/content management" rel="tag">content management</a>, <a href="http://www.technorati.com/tag/content management system" rel="tag">content management system</a>, <a href="http://www.technorati.com/tag/editorial authority" rel="tag">editorial authority</a>, <a href="http://www.technorati.com/tag/interwoven" rel="tag">interwoven</a>, <a href="http://www.technorati.com/tag/pitfalls" rel="tag">pitfalls</a>, <a href="http://www.technorati.com/tag/vignette" rel="tag">vignette</a>, <a href="http://www.technorati.com/tag/web content" rel="tag">web content</a>, <a href="http://www.technorati.com/tag/web designers" rel="tag">web designers</a>, <a href="http://www.technorati.com/tag/web site management" rel="tag">web site management</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/10985/cms-pitfalls/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Editing WordPress “Pages” Via XML-RPC</title>
		<link>http://maisonbisson.com/blog/post/10834/editing-wordpress-pages-via-xml-rpc/</link>
		<comments>http://maisonbisson.com/blog/post/10834/editing-wordpress-pages-via-xml-rpc/#comments</comments>
		<pubDate>Thu, 22 Sep 2005 15:51:44 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[blogg as cms]]></category>
		<category><![CDATA[blogg as content management system]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[content management system]]></category>
		<category><![CDATA[ecto]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[hacking wordpress]]></category>
		<category><![CDATA[php code]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress hack]]></category>
		<category><![CDATA[wordpress hacks]]></category>
		<category><![CDATA[wordpress pages]]></category>
		<category><![CDATA[xml-rpc]]></category>
		<category><![CDATA[xmlrpc]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/blog/?p=10834</guid>
		<description><![CDATA[
WordPress&#8217;s Pages open the door to using WP as a content management system. Unfortunately, Pages can&#8217;t be edited via XML-RPC blogging apps like Ecto. This might be a good thing, but I&#8217;m foolhardy enough to try working around it.
Here&#8217;s how:
Find a text editor you like and open up the wp-includes/functions-post.php file.
in the wp_get_recent_posts() function, change [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-10834"><!-- &nbsp; --></abbr>
<p><a href="http://wordpress.org/">WordPress</a>&#8217;s <a href="http://codex.wordpress.org/Pages">Pages</a> open the door to using WP as a content management system. Unfortunately, Pages can&#8217;t be edited via XML-RPC blogging apps like <a href="http://ecto.kung-foo.tv/">Ecto</a>. This might be a good thing, but I&#8217;m foolhardy enough to try working around it.</p>
<p>Here&#8217;s how:</p>
<p>Find a text editor you like and open up the <code>wp-includes/functions-post.php</code> file.</p>
<p>in the <code>wp_get_recent_posts()</code> function, change this:</p>
<p><code>$sql = “SELECT * FROM $wpdb-&gt;posts WHERE post_status IN ('publish', 'draft', 'private') ORDER BY post_date DESC $limit”;</code></p>
<p>to this:</p>
<p><code>$sql = “SELECT * FROM $wpdb-&gt;posts WHERE post_status IN ('publish', 'draft', 'private', 'static') ORDER BY post_date DESC $limit”;</code></p>
<p>Now, in the <code>wp_update_post()</code> function, look for this block of code:</p>
<p><code>// Escape data pulled from DB.<br />
$post = add_magic_quotes($post);<br />
extract($post);</code></p>
<p>and insert this block underneath it:</p>
<p><code>// XML-RPCs apps can't return “static” post status,<br />
// so we have to work around it<br />
$page_status = NULL;<br />
if($post_status == “static”)<br />
$page_status = “static”;</code></p>
<p>And follow that up by looking for this block:</p>
<p><code>// Now overwrite any changed values being passed in. These are<br />
// already escaped.<br />
extract($postarr);</code></p>
<p>and insert this block underneath it:</p>
<p><code>// set post_status static if this is a page<br />
if($page_status)<br />
$post_status = $page_status;</code></p>
<p><strong>Fair warning:</strong> this works in my <em>limited</em> testing, but don&#8217;t blame me if you try it and it breaks something. You&#8217;d be a fool to mess with this on a live install, so don&#8217;t.</p>
<p><!-- technorati tags start -->
<p style="text-align:right;font-size:10px;">tags: <a href="http://www.technorati.com/tag/blog" rel="tag">blog</a>, <a href="http://www.technorati.com/tag/blogg as cms" rel="tag">blogg as cms</a>, <a href="http://www.technorati.com/tag/blogg as content management system" rel="tag">blogg as content management system</a>, <a href="http://www.technorati.com/tag/blogging" rel="tag">blogging</a>, <a href="http://www.technorati.com/tag/cms" rel="tag">cms</a>, <a href="http://www.technorati.com/tag/content management system" rel="tag">content management system</a>, <a href="http://www.technorati.com/tag/ecto" rel="tag">ecto</a>, <a href="http://www.technorati.com/tag/hack" rel="tag">hack</a>, <a href="http://www.technorati.com/tag/hacking" rel="tag">hacking</a>, <a href="http://www.technorati.com/tag/hacking wordpress" rel="tag">hacking wordpress</a>, <a href="http://www.technorati.com/tag/php code" rel="tag">php code</a>, <a href="http://www.technorati.com/tag/wordpress" rel="tag">wordpress</a>, <a href="http://www.technorati.com/tag/wordpress hack" rel="tag">wordpress hack</a>, <a href="http://www.technorati.com/tag/wordpress hacks" rel="tag">wordpress hacks</a>, <a href="http://www.technorati.com/tag/wordpress pages" rel="tag">wordpress pages</a>, <a href="http://www.technorati.com/tag/xml rpc" rel="tag">xml rpc</a>, <a href="http://www.technorati.com/tag/xmlrpc" rel="tag">xmlrpc</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/10834/editing-wordpress-pages-via-xml-rpc/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>WordPress As CMS</title>
		<link>http://maisonbisson.com/blog/post/10757/wordpress-as-cms/</link>
		<comments>http://maisonbisson.com/blog/post/10757/wordpress-as-cms/#comments</comments>
		<pubDate>Thu, 25 Aug 2005 16:43:57 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[affirmation]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[content management system]]></category>
		<category><![CDATA[content networks]]></category>
		<category><![CDATA[job ad]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/blog/?p=10757</guid>
		<description><![CDATA[
A friend and I have been talking about what it would take to turn WordPress into a CMS. We both have our doubts, but today I found this job ad that suggests we&#8217;re not alone in at least thinking of the possibility.
Needed: Web Designer/Programmer For Our Sites
We&#8217;re growing very fast, and have outgrown our current [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-10757"><!-- &nbsp; --></abbr>
<p>A <a href="http://nosheep.net/">friend</a> and I have been talking about what it would take to turn <a href="http://wordpress.org/">WordPress</a> into a <a href="http://en.wikipedia.org/wiki/Content_management_system">CMS</a>. We both have our doubts, but today I found this job ad that suggests we&#8217;re not alone in at least thinking of the possibility.</p>
<blockquote><p>Needed: Web Designer/Programmer For Our Sites</p>
<p>We&#8217;re growing very fast, and have outgrown our current CMS and design. We&#8217;re looking for a designer and/or programmer to redesign our rapidly growing network and implement a CMS that ties it all together. The network includes our planned ContentNext hub, <a href="http://www.paidcontent.org/">paidContent.org</a>, <a href="http://www.moconews.net/">MocoNews.net</a>, and <a href="http://www.contentsutra.com/">ContentSutra</a>, along with <a href="http://www.billboardpostplay.com/">BillboardPostplay</a>, our joint venture with Billboard. In addition to redesigning the front end, we&#8217;re migrating all of the sites to a common platform with an integrated database. Our preference is WordPress with enhancements to make it more of CMS; we&#8217;ve also explored Drupal as a CMS and we&#8217;re open to another open-source CMS if it can achieve our objective. We&#8217;re planning a mid-fall relaunch.</p>
<p>In addition to WordPress, the right person/team will be well versed in PHP, web standards, MYSQL and experienced in deployment of multi-site content networks as well as taxonomy.</p>
<p>We are not averse to a team consisting of a lead developer with high-level experience and a person or persons with less experience as long as it doesn&#8217;t affect our timeline or the quality of the project.</p>
<p>Contact me, <a href="mailto:rali@paidcontent.org">Rafat Ali</a>, with your portfolio/skills and we can discuss further.</p></blockquote>
<p>Anyway, I forwarded this to Zach with the subject: “affirmation.”</p>
<p><!-- technorati tags start -->
<p style="text-align:right;font-size:10px;">tags: <a href="http://technorati.com/tag/affirmation" rel="tag">affirmation</a>, <a href="http://technorati.com/tag/cms" rel="tag">cms</a>, <a href="http://technorati.com/tag/content management system" rel="tag">content management system</a>, <a href="http://technorati.com/tag/content networks" rel="tag">content networks</a>, <a href="http://technorati.com/tag/job ad" rel="tag">job ad</a>, <a href="http://technorati.com/tag/wordpress" rel="tag">wordpress</a>, <a href="http://technorati.com/tag/wp" rel="tag">wp</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/10757/wordpress-as-cms/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Most CMSs Suck</title>
		<link>http://maisonbisson.com/blog/post/10526/most-cmss-suck/</link>
		<comments>http://maisonbisson.com/blog/post/10526/most-cmss-suck/#comments</comments>
		<pubDate>Mon, 11 Apr 2005 07:30:07 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[complex software]]></category>
		<category><![CDATA[geeks]]></category>
		<category><![CDATA[hard coding]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[lax security]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[phpnuke]]></category>
		<category><![CDATA[pmachine]]></category>
		<category><![CDATA[switched]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">/?p=10526</guid>
		<description><![CDATA[
I&#8217;ve been slowly struggling with the question of how to replace pMachine, my CMS engine here. I haven&#8217;t really liked any of the alternatives that others I know are using (link link link link), though I&#8217;ve been hard pressed to identify exactly what my complaints are. Among the points in Making A Better Open Source [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-10526"><!-- &nbsp; --></abbr>
<p>I&#8217;ve been slowly struggling with the question of <a href="/blog/?p=10426" title="how to replace pMachine">how to replace pMachine</a>, my CMS engine here. I haven&#8217;t really liked any of the alternatives that others I know are using (<a href="http://spiralbound.net/" title="link">link</a> <a href="http://nosheep.net/" title="link">link</a> <a href="http://callblog.net/" title="link">link</a> <a href="http://noumenon.roderickrussell.com/" title="link">link</a>), though I&#8217;ve been hard pressed to identify exactly what my complaints are. Among the points in <a href="http://www.veen.com/jeff/archives/000622.html" title="Making A Better Open Source CMS">Making A Better Open Source CMS</a>, Jeffrey Veen names a few of the most frustrating for me: hard-coding of site layout in the CMS, mixing of content with site administration in the interface, and, sometimes, lax security.</p>
<p>He had spent some time at <a href="http://www.opensourcecms.com/" title="OpenSourceCMS">OpenSourceCMS</a>, which allows anybody to fiddle with a variety of CMS installations without the time and trouble of figuring out how to install and configure them.</p>
<blockquote><p>What I experienced was obtuse and complex software that was packed with gratuitous features at the expense of usability and user experience. It was software written by geeks, for geeks. This whole category of software desperately needs to be redesigned with writers, editors, designers, and site owners in mind.</p></blockquote>
<p>&#8230;which is about exactly what my complaint against PHPNuke is. While he doesn&#8217;t actually identify anything that he&#8217;d recommend, I&#8217;m glad to know I&#8217;m not alone.</p>
<p><strong>Update:</strong> of the four sites offered as examples above, three have switched to WordPress.<br />
<!-- technorati tags start -->
<p style="text-align:right;font-size:10px;">tags: <a href="http://technorati.com/tag/cms" rel="tag">cms</a>, <a href="http://technorati.com/tag/complex software" rel="tag">complex software</a>, <a href="http://technorati.com/tag/geeks" rel="tag">geeks</a>, <a href="http://technorati.com/tag/hard coding" rel="tag">hard coding</a>, <a href="http://technorati.com/tag/http" rel="tag">http</a>, <a href="http://technorati.com/tag/lax security" rel="tag">lax security</a>, <a href="http://technorati.com/tag/open source" rel="tag">open source</a>, <a href="http://technorati.com/tag/phpnuke" rel="tag">phpnuke</a>, <a href="http://technorati.com/tag/pmachine" rel="tag">pmachine</a>, <a href="http://technorati.com/tag/switched" rel="tag">switched</a>, <a href="http://technorati.com/tag/usability" rel="tag">usability</a>, <a href="http://technorati.com/tag/wordpress" rel="tag">wordpress</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/10526/most-cmss-suck/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>