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

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



Всем доброго дня! Сегодня я хочу поделиться с вами своими наработками в области сайтостроения. Мы рассмотрим как можно сделать сетку сателитов и благодаря ей зарабатывать. Свои сайты я палить не буду, но покажу как сделать свою сетку используя одну установленную версию MODX Revo и панель ISPmanager 5 Lite.

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

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



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



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



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


Затем нам нужно создать плагин 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    934    0
+1

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

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

    Топики

    Андрей Копп 03 октября 2018, 11:55
    Компоненты MODX Обзор компонента SEO Pro 0
    Андрей Копп 02 октября 2018, 11:18
    MODX Настройка MySQL 5.7 для работы pdoTools 0
    Андрей Копп 27 сентября 2018, 20:49
    MODX MinifyX в Fenom 0
    Андрей Копп 01 июля 2018, 15:13
    Другое Fenom в MODX (шпаргалки) 0

    Комментарии

    Андрей Копп 02 октября 2018, 09:04
    ComboBox с данными из другой таблицы modExtra 1
    Андрей Копп 08 сентября 2017, 20:24
    Всевозможная очистка кэша в Laravel 5 1