Showing posts with label subsites. Show all posts
Showing posts with label subsites. Show all posts

Monday, 10 November 2008

Install Silverstripe 'Subsites' module

The following steps worked for me when installing the Silverstripe Subsites module:

1. Create a directory in your root silverstripe installation. '~/Sites/silverstripe/subsites'

Download, and unzip the code into this directory. I deleted the 'trunk' directory to keep things tidy.

2. Ensure every folder in your silverstripe hierarchy has the user '_www' read/write access

3. There is a problem linking the Group table in the database, so for now comment it out in 'silverstripe/subsites/_config.php' so it looks like this:
<?php

/**
* The subsites module modifies the behaviour of the CMS - in the SiteTree and Group databases - to store information
* about a number of sub-sites, rather than a single site.
*/


Object::add_extension('SiteTree', 'SiteTreeSubsites');
// Hack - this ensures that the SiteTree defineMethods gets called before any of its subclasses...
new SiteTree();
Object::add_extension('ContentController', 'ControllerSubsites');
Object::add_extension('LeftAndMain', 'LeftAndMainSubsites');
Object::add_extension('LeftAndMain', 'ControllerSubsites');
//Object::add_extension('Group', 'GroupSubsites');
Object::add_extension('File', 'FileSubsites');

?>


Then visit http://localhost/silverstripe/db/build?flush=1 This will set up the initial database tables for the subsites module.


5. We need to manually modify the Group table using the following SQL. Note that 'Group' is a reserved keyword in mysql so make sure you wrap it in backquotes:

alter table `Group` add SubsiteID int(11) not null default 0;

6. We also need to manually insert the first 'Template' into the Subsite table:

insert into Subsite (ID, ClassName, Created, LastEdited, Subdomain, Title, Domain)
values ("", "Subsite_Template", NOW(), NOW(), "newsubdomain", "newtitle", "mysite.com");

7. Now you can uncomment your 'silverstripe/subsites/_config.php' file and add the following two lines so that it looks like this:

<?php

Object::add_extension('SiteTree', 'SiteTreeSubsites');
// Hack - this ensures that the SiteTree defineMethods gets called before any of its subclasses...
new SiteTree();
Object::add_extension('ContentController', 'ControllerSubsites');
Object::add_extension('LeftAndMain', 'LeftAndMainSubsites');
Object::add_extension('LeftAndMain', 'ControllerSubsites');
Object::add_extension('Group', 'GroupSubsites');
Object::add_extension('File', 'FileSubsites');

Director::addRules(100, array(
'admin/subsites/$Action/$ID/$OtherID' => 'SubsiteAdmin',
)
);
Object::addStaticVars( 'LeftAndMain', array( 'extra_menu_items' => array(
'Sub-sites' => array("intranets", "admin/subsites/", 'SubsiteAdmin')
)
)
);

?>


For good measure, visit http://localhost/silverstripe/?flush=1 to make sure any database changes have been picked up.

8. Then visit http://localhost/silverstripe/admin?flush=1 to reload your CMS.
You should now have the 'Sub-Sites' tab in the Silverstripe admin CMS along with a dropdown in the top right hand corner that allows you to select which subsite you are currently working on.

Documentation for this module is in alpha ;-) , so if anyone has any tips on refining these installation instructions please let me know.