Multiple Sites with One Library


docs/install.shared.core
/*
title: Multiple Sites with One Library
date: 2014-03-05
chapter: 0.22
*/
## One Phile Multiple Sites

This is not related to errors.  If you are using standard phile install locations, just ignore this.

I wanted several sites using one Phile Install folder.  A structure something like this:

~~~~
-philesystem
   -/datastorage
   -/lib
   -/plugins
   -/temp
   -/themes
   -/vendor
-/SiteONE
   -index.php
   -config.php
   -default_config.php
   -generator.php
   -/content
-/SiteTWO
   -index.php
   -config.php
   -default_config.php
   -generator.php
   -/content  
-/SiteTHREE
   -index.php
   -config.php
   -default_config.php
   -generator.php
   -/content 
~~~~

Each site is accessed with a url

    mysite.com/SiteONE
    mysite.com/SiteTWO
    mysite.com/SiteTHREE

I made these adjustments in `index.php` for the site.  No modifications to core; however, also need plugin to "fix" the theme url.

###FROM
~~~~
define('ROOT_DIR',         realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR);
define('CONTENT_DIR',      ROOT_DIR . 'content' . DIRECTORY_SEPARATOR);
define('CONTENT_EXT',      '.md');
define('LIB_DIR',          ROOT_DIR . 'lib' . DIRECTORY_SEPARATOR);
define('PLUGINS_DIR',      ROOT_DIR . 'plugins' . DIRECTORY_SEPARATOR);
define('THEMES_DIR',       ROOT_DIR . 'themes' . DIRECTORY_SEPARATOR);
define('CACHE_DIR',        LIB_DIR . 'cache' . DIRECTORY_SEPARATOR);
~~~~
###TO
~~~~
define('SYSTEMFOLDER',     'philesystem');
define('ROOTSITE_DIR',     realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR);

define('ROOT_DIR',         realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR);
define('ROOTSYSTEM_DIR',   realpath(dirname(ROOT_DIR)) . DIRECTORY_SEPARATOR .SYSTEMFOLDER. DIRECTORY_SEPARATOR );

define('CONTENT_DIR',      ROOT_DIR . 'content' . DIRECTORY_SEPARATOR);
define('CONTENT_EXT',      '.md');
define('LIB_DIR',          ROOTSYSTEM_DIR . 'lib' . DIRECTORY_SEPARATOR);
define('PLUGINS_DIR',      ROOTSYSTEM_DIR . 'plugins' . DIRECTORY_SEPARATOR);
define('THEMES_DIR',       ROOTSYSTEM_DIR . 'themes' . DIRECTORY_SEPARATOR);
define('CACHE_DIR',        LIB_DIR . 'cache' . DIRECTORY_SEPARATOR);
~~~~

## Theme URL issue
Note the theme url assigned to twig variables also needs revision; however, I was able to do this in a plugin without changing the core.  I just put the following secition in my [Jaccms plugin](plugins/plugin.jaccms).
Basically you just need this in a plugin:
~~~~
if ($eventKey == 'template_engine_registered') {
   $data['data']['theme_url'] = dirname($settings['base_url']).'/'.SYSTEMFOLDER.'/'. basename(THEMES_DIR) .'/'. $settings['theme'];
}   
~~~~


Probably a better way, but for now that works and did not impact any other parts of phile.

Also works for the whole thing being in a subfolder. i.e.


    mysite.com/testsites/SiteONE
    mysite.com/testsites/SiteTWO
    mysite.com/testsites/SiteTHREE


You can also [view my config files](configfile)