Я делаю нечто подобное, но храню всю информацию в базе данных.Это значительно упрощает добавление новых веб-сайтов и не требует никаких изменений кода для каждого нового клиента или шаблона.
Вот мой код из application.cfc:
<cffunction name="OnApplicationStart">
<cfset application.websites = structNew()>
<cfquery name="sites">
SELECT websiteID, url FROM websites
</cfquery>
<cfloop query="sites">
<cfset application.websites["#url#"] = CreateObject("component", "websites").init(websiteID)>
</cfloop>
</cffunction>
Теперь яиметь коллекцию веб-сайтов, на которые настроено приложение.Каждый сайт загружает свой шаблон.Шаблоны также сохраняются в базе данных, поэтому каждый сайт может быть легко настроен на любой шаблон.
Для каждого запроса нам просто нужно найти правильный веб-сайт:
<cffunction name="OnRequestStart">
<cfargument name="targetPage">
<cfif structKeyExists(application.websites, cgi.SERVER_NAME)>
<cfset request.website= application.websites["#cgi.SERVER_NAME#"]>
<cfelse>
<cfabort>
</cfif>
<cfset request.template = request.website.template>
</cffunction>
Теперь каждыйВ запросе есть веб-сайт и шаблон, доступные через него.
Я использую это для запуска 3 сайтов электронной коммерции с 3 различными шаблонами из одной базы кодов и базы данных.