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

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



Всем доброго дня! Сегодня я хочу поделиться с вами своими наработками в области сайтостроения. Мы рассмотрим как можно сделать сетку сателитов и благодаря ей зарабатывать. Свои сайты я палить не буду, но покажу как сделать свою сетку используя одну установленную версию 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)
26 ноября 2015, 12:36    SEQUEL.ONE Эксперименты 1    885 +1

Отзывы ()

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