private:koding:hostcms:modules:routing:poddomeny_dlja_gorodov

Поддомены для городов

  1. Нужно создать поддомены и указать, что они ссылаются на папку с сайтом. На некоторых хостингах это можно сделать создав псевдонимы к главному домену (Алиасы).
  2. Настроить HostCMS на работу с новыми доменами. Для этого нужно перейти (Сайты → Домены) и добавить * к основному домену (например: *.example.com).
  3. "Научить" HostCMS понимать на каком поддомене он запущен. Для этого создадим наблюдатель Kad_Core_Command_Controller_Default_Observer и добавим перехватчик в конец файла bootstrap.php находящегося в корне сайта. Наблюдатель создает константу с названием города.

Пример наблюдателя и перехватчика.

observer.php
<?php
 
defined('HOSTCMS') || exit('HostCMS: access denied.');
 
 
/**
* Наблюдатель объявляет константу с городом, на основе текущего поддомена
* 
* @author Kozub Boris, KAD Systems (©) 2014	
* @author Shcherbakov Aleksandr, KAD Systems (©) 2015	
* @date 14-06-2015	
* Начало >>
 
Core_Event::attach('Core_Command_Controller_Default.onBeforeShowAction', array('Kad_Core_Command_Controller_Default_Observer', 'onBeforeShowAction'));
 
*/
 
class Kad_Core_Command_Controller_Default_Observer
{
	static public function onBeforeShowAction($object, $operation)
	{
		$sHost = $_SERVER['HTTP_HOST'];
 
		if(strpos($sHost, 'jaluzinof.ru'))
		{
			// вывод городов из ИС
			$informationsystemId = 21;
			$oGroups = Core_Entity::factory("informationsystem_item");
			$oGroups->queryBuilder()
				->where('informationsystem_id', '=', $informationsystemId)
				->where('path', '=', substr($sHost, 0, strpos($sHost, 'jaluzinof.ru')-1))
				->where('active', '=', 1);
			$aoGroups = $oGroups->findAll();
 
			if(count($aoGroups))
			{
				define('TOWN', $aoGroups[0]->name);
			}
			else
			{
				define('TOWN', FALSE);
			}			
		}
		else
		{
			define('TOWN', FALSE);
		}
	}
}

Исправить

Артем Куц 2015/06/30 в 19:02

  • В константе лучше хранить ID, а не текстовое название города.
  • Все настройки: хост, id и т.д. нужно вынести вверх наблюдателя.
private/koding/hostcms/modules/routing/poddomeny_dlja_gorodov.txt · Last modified: 27.06.17 в 14:46 by maximzasorin_gmail.com