web-tip.top
WTT

Зміна теми в залежності від домену

23.02.2024

На декількох проектах мені доводилося створювати 2 чи 3 (бувало і 10) тем для одного сайту. Це корисно коли, наприклад, є основний сайт і декілька дочірніх сайтів (які використовують одну базу даних). Найбільш простий спосіб - переключати активну тему в залежності від того на який домен заходить користувач.

Слідуючий код необхідно додати в boot() метод в файлі Plugin.php свого плагіну. Тут ми перевіряємо чи запит до домену був з сайту (а не адмін панелі) і повертаємо код потрібної теми. Замість domain1.com, domain2.com, theme-code-1, theme-code-2, theme-code-3 необхідно підставити свої дані.


/*
 * Switch active theme depends on damin name requested
*/
if(!$this->app->runningInBackend()) {
   \Event::listen('cms.theme.getActiveTheme', function () {
       if (strpos(\Request::getHost(), 'domain1.com') === 0) {
           return 'theme-code-1';
       } elseif(strpos(\Request::getHost(), 'domain2.com') === 0) {
           return 'theme-code-2';
       } else {
           return 'theme-code-3';
       }
    });
}

Можливо для складних сайтів таке рішення не підійде, але в мене проблем поки що не було.