Мультидоменность в OctoberCMS

Реализация поддержки поддоменов в OctoberCms в 2 шага

Часто нужны поддомены для сайта, например для вывода разных контактов, контента в зависимости от города. На этом примере и будем реализовывать.

Шаг 1

Реализация простая. Первым шагом создаем модель City контроллер Cities для добавления новых городов в админке. В настройках хостинга все поддомены направляем на одну папку с сайтом.

Шаг 2

Вторым шагом в коде страницы CMS добавим php код с подключением нашей модели.

<?php
use Site21\Cities\Models\City;

function onInit()
{
    $parts =  explode('.', $_SERVER['HTTP_HOST']);
    $city = city::where('slug', $parts[0])->first();
    if($city) {
        $this['city'] = $city;
    }
}
?>

Далее мы уже можем использовать в шаблонах или partial'ах можем использовать:

{{ city.phone }}

Бонус

Если в своих моделях, например новостях, мы используем связь с городом, а на странице новостей поддомена нужно вывести новости этого города, то используем похожую кострукцию:

<?php
use Site21\News\Models\News;
use Site21\Cities\Models\City;

function onInit() {
    $news = News::orderBy('created_at', 'desc');
    
    $parts =  explode('.', $_SERVER['HTTP_HOST']);
    $city = City::where('slug', $parts[0])->first();
    if($city) {
        $news->where('site', 'city')->where('City_id', $city->id);
    } 
    
    $this['items'] = $news->get();
}

Опубликовано 25 июля 2022 г. в категории: October CMS

Если Вам необходимо внедрить данную разработку на свой проект, свяжитесь со мной, обсудим цену и срок.

Связаться со мной Fill 1