Насколько я понимаю, вы спрашиваете, как загрузить другой файл представления только для определенных "микросайтов", но вы используете один и тот же контроллер и кодовую базу для всех них.
В вашемкаталог views, имеется 1 каталог для тем по умолчанию, а затем для каждого «микросайта», с которым вы хотите сделать что-то свое, создайте другой каталог, который будет содержать уникальные файлы, затем при загрузке файлов - проверьте, существует ли сначала уникальное.
Поспешный пример, предполагающий, что файлы по умолчанию находятся в корне views/
:
// I assume we know which site we're loading
$theme = 'david_site';
// Whatever the current view's name should be
$view = 'page3';
// Path to our custom file if it exists
$custom = APPPATH.'views/'.$theme.'/'.$view;
// Does a custom view exist?
if (file_exists($custom))
{
$view_file = $theme.'/'.$view;
}
else
{
// Use the default
$view_file = $view;
}
$this->load->view($view_file);
Насколько я знаю, в CI нет ничего похожего на view_file_exists()
, поэтому мы просто используем обычныйстарый file_exists()
с полным путем.
Конечно, для этого стоило бы написать функцию, но, надеюсь, это поможет.Вы даже можете применить его для загрузки библиотек, моделей и т. Д. - или даже расширить класс Loader, чтобы сделать это автоматически (возможно, излишним).
CI2 уже имеет версию этой функции в ENVIRONMENT
постоянный, хотя это использование не является его намерением - но это в основном то, что он делает.