I believe I’ve found a solution to making contexts act as subdomains that doesn’t require editing or hacking the htaccess file (which is often quite hit and miss), nor creating folders for the subdomain, copying and editing files; rather a quick edit to the root level index.php makes any contexts act as their own subdomain.
Firstly, follow the instructions at
http://rtfm.modx.com/display/revolution20/Creating+a+Subdomain+from+a+Folder+using+Virtual+Hosts to set MODx Revo properties into the contexts. Only follow the instructions under the "Creating the Context" heading; all other instructions become superceded by the following code.
Secondly, set up your subdomains with your DNS. If you’re using a cpanel or server management system, you should be able to add a wildcard (*) "A Record", if you need. Otherwise, specify the name of your subdomain; in this case, make sure the subdomain name you use is exactly the same as the context(s) you’ve created.
Lastly, find the following code in your index.php file:
$modx->initialize('web');
Comment the line, and add the following under it:
$serv = explode('.', $_SERVER['SERVER_NAME']);
$context = ($serv[0] == "www") ? 'web' : $serv[0];
$modx->initialize($context);
That’s it. This doesn’t account for sites that don’t use any prefix, however this has been accounted for in the supplied htaccess shipped with MODx Revo; I’ll also leave that open for others to solve. However, this will fit the requirements of your site to use subdomains in a fairly standard environment.
Side Note: It seems that packages like Wayfinder and getResources don’t operate across contexts; this is most frustrating when testing subdomains. It’s handy then to note that you can set additional context properties for items such as this. In the case of the &startId property for Wayfinder, add &startId=`[[++startId]]` to your snippet call; then edit your context and add a property called startId with the value of the startId for your Wayfinder snippet. If/when you Duplicate the context for later use, simply edit the context property rather than having to use multiple templates for each context.