Skip to content

arrtemiy/subdomain-replace

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Создание автоматических поддоменов

Первоначальная подготовка

  • Для нашего сайта необходимо включить поддомены по маске *.yoursite.ru (все поддомены должны ссылаться в папку нашего основного сайта yoursite.ru)
    • Если такой возможности нет, то нужно настроить поддомены самостоятельно

Основные настройки

Все необходимые настройки лежат внутри файла setiings.php, обязательно нужно указать основной домен и то, какие протоколы у нас используются. Если на сайте используется https, а поддомены планируется создавать на http, то рекомендую в файле .htaccess либо убрать редирект на https, либо дополнить его так, чтобы он работал исключительно на основном домене.

Аргументы, которые передаются в скрипт:

Аргумент Описание
$content Переменная, в которой хранится весь контент
$arSettings Настройки из файла settings.php
$explodeTabs Устанавливается true, если наш файл надо разбивать по символу табуляции, а не ; По умолчанию false
$typeReturn Метод возврата обработанного контента. Возможные значения: *echo *return По умолчанию echo

Работа со скриптом

Для функционирования замен на наших поддоменах необходимо выполнить следующие шаги:

  • Сохранить excel файл с заменами в формате csv с разделителем запятая
  • В зависимости от кодировки сайта преобразовать в нужную наш csv файл
  • Закинуть файл на сервер в любое удобное место и указать путь к нему в настройках скрипта (по умолчанию скрипт ищет файл в той же директории)
  • Произвести все необходимые настройки
  • Вызвать нашу функцию перед непосредственным выводом контента. Для этого есть несколько путей:
    • Можно зайти в корневой index.php и найти там функцию для вывода контента. После этого, используя буффер, передать весь вывод в переменную и после этого передать нашей функции.
    • Для Joomla > 3.0 подход выше может не сработать и тогда можно создать плагин, который будет отслеживать событие вывода отрендеренного контента
    • Для 1C Bitrix нужно использовать событие OnEndBufferContent

Примеры вызова функции

Joomla (такой принцип работает на 90% CMS)

ob_start();
  $app->execute(); // Здесь CMS выводила контент
  $content = ob_get_contents(); // Передаём весь наш буффер в переменную
ob_get_clean(); 

include $_SERVER["DOCUMENT_ROOT"]."/regions.php";
replaceRegions($content, $arSettings);

1C Bitrix

Все изменения производятся в файле init.php

AddEventHandler("main", "OnEndBufferContent", "replaceSub");

function replaceSub(&$content) {
  include $_SERVER["DOCUMENT_ROOT"]."/regions.php";
  $content = replaceRegions($content, $arSettings, false, 'return'); // Для 1C Bitrix нужно возвращать контент, а не выводить, поэтому последним параметром стоит return
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%