26 ноября 2015, 11:36

Сетка сателитов на MODX Revo

Всем доброго дня! Сегодня я хочу поделиться с вами своими наработками в области сайтостроения. Мы рассмотрим как можно сделать сетку сателитов и благодаря ей зарабатывать. Свои сайты я палить не буду, но покажу как сделать свою сетку используя одну установленную версию MODX Revo и панель ISPmanager 5 Lite. Для начала мы должны определиться, на каком домене мы развернём нашу версию MODX Revo. Скажем это будет site.ru (наш главный сайт с контекстом по умолчанию web). После установки MODX Revolution нам нужно установить следующие компоненты:

или

А затем настроить псевдонимы (алиасы), которые легко настраиваются в панели ISPmanager:

Сетка сателитов и парсер контента на MODX Revo + ISPmanager 5 Lite

После того как мы добавили домены в псевдонимы (алиасы), можем приступить к настройке мультисайтовости в MODX Revo. Для начала нам нужно будет создать новый контекст с названием нашего добавляемого домена к примеру site2.su и создаём вот такие параметры:

Сетка сателитов и парсер контента на MODX Revo + ISPmanager 5 Lite

Ещё нам нужно от этого контекста создать разделы, по умолчанию правильная структура сайта на MODX Revo для SEO:

Сетка сателитов и парсер контента на MODX Revo + ISPmanager 5 Lite

Важно!

У вас должен быть включён .htaccess который по умолчанию, без 301-ых редиректов, а в системных настройках у core нужно включить ЧПУ и настроить его + важно установить из официального репозитория translit либо через репозиторий modstore.pro компонент yTranslit (он нужен для генерации ссылок).

Сетка сателитов и парсер контента на MODX Revo + ISPmanager 5 Lite

Сетка сателитов и парсер контента на MODX Revo + ISPmanager 5 Lite

Затем нам нужно создать плагин MultiDomains с таким содержимым:

<?php
// Работаем только на фронтенде
if ($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr') {return;}

// Определяем запрашиваемый хост
$host = $_SERVER['HTTP_HOST'];

// Выбираем контекст с настройкой base_url
$q = $modx->newQuery('modContextSetting', array('key' => 'http_host', 'value' => $host));
$q->select('context_key');

$tstart = microtime(true);
if ($q->prepare() && $q->stmt->execute()) {
    // Учитываем наш запрос в БД
    $modx->queryTime += microtime(true) - $tstart;
    $modx->executedQueries++;
    // Получаем ключ контекста
    if ($context = $q->stmt->fetch(PDO::FETCH_COLUMN)) {
        // Web инициализируется в index.php - на него переключаться не нужно
        if ($context != 'web') {
            $modx->switchContext($context);
        }
    }
}

И повесить на системное событие OnHandleRequest. Иногда нужно делать для каких-то доменов 301-ые редиректы на www, для чего мы в .htaccess добавляем такие строчки:

# Редирект site2.su -> www.site2.su 
RewriteCond %{HTTP_HOST} ^site2\.su [NC] 
RewriteRule ^/?(.*) http://www.site2.su/$1 [R=301,L] 

# Редирект всех остальных www -> non-www, кроме site2.su 
RewriteCond %{HTTP_HOST} !^www\.site2\.su [NC] 
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

После чего идём в настройки контекста и редактируем параметры, чтобы получилось следующее:

http_host www.site2.su 
site_url http://www.site2.su/ 

Наша заготовка под сателиты готова. Теперь можно копировать контексты с настройками и изменять нужные параметры. По мимо http_host и site_url ещё нужно не забыть об установке нужного id главной страницы и 404ой ошибки.

Сетка сателитов и парсер контента на MODX Revo (часть 2)

SEQUEL.ONE
1    5159    0
+1

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.