Codeingniter: dynamic default controller for multisite

In Codeigniter default controller is set on the routes.php configuration file. Default controller is the controller that handles request when the controller is specified on the url. The main purpose is to open home page.

But sometimes you may want to open multiple different home pages if you have configured your single application to handle multiple sites.

That means you have to set default controller dynamically based on the host url. This can be done directly puting some logic on the routes.php files.

Here is the sample code

$route['default_controller'] = "page";
if (isset($_SERVER['HTTP_HOST'])) {

    if ($_SERVER['HTTP_HOST'] == "links.cp.local:88") {

        $route['default_controller'] = 'link';
    } else {
        $route['default_controller'] = 'page';
    }
} else {
    $route['default_controller'] = 'page';
} 

Another approach is to select the default controller from the database. The table sites has default controller information for each site. On the top of the routes.php file determine the default controller and assign it.

Here is the code

require_once( BASEPATH .'database/DB'. EXT );
$db =& DB();
$dc='page';
$url = $_SERVER['HTTP_HOST'];
$pos = strpos($url, ":");
if ($pos > 0) {
    $url = substr($url, 0, $pos - strlen($url));
}
$db->where('name', $url);
$q = $db->get("sites");
if ($q->num_rows() > 0) {
    $r = $q->result();
    $dc= $r[0]->defaultcontroller;
}

$route['default_controller'] = $dc;

Create sites table schema

CREATE TABLE `sites` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL DEFAULT '',
  `title` varchar(100) NOT NULL DEFAULT '',
  `defaultcontroller` varchar(50) DEFAULT 'page',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

Like us

See also

CRUDL tasks on codeigniter

Complete tutorial on how to create simple CRUDL forms and action handlers on codeigniter.

Codeigniter: MongoDB

- SETUP MONGODB ON CODEGINITER PROJECT - EFFECIENT PAGING METHOD ON MONGODB WITH CODEIGNITER.

Facebook feed using codeigniter

How to use FaceBook Php Sdk in CodeIgniter to call Facebook Graph Api and render your and your friends feed