【发布时间】:2010-05-04 10:40:58
【问题描述】:
我有一个 kohana v3 应用程序。 2 个指向此应用的子域。如果应用程序使用 subdomain2.example.com 调用,我必须设置 kohana 使用不同的模板吗?
目前所有调用(来自 subdomain1 和 subdomain2)都使用标准模板:'templates/default'
谢谢!
丹尼尔
【问题讨论】:
我有一个 kohana v3 应用程序。 2 个指向此应用的子域。如果应用程序使用 subdomain2.example.com 调用,我必须设置 kohana 使用不同的模板吗?
目前所有调用(来自 subdomain1 和 subdomain2)都使用标准模板:'templates/default'
谢谢!
丹尼尔
【问题讨论】:
首先,从$_SERVER['SERVER_NAME']获取子域名:
list($subdomain) = explode('.', $_SERVER['SERVER_NAME'], 2);
然后根据子域选择使用什么模板:
// Replace this with a switch() statement if you want to choose another way
$this->template = 'templates/'.$subdomain;
在调用parent::before()之前,上面的代码应该放在Controller::before()方法中。这假设您使用的是Controller_Template 或其扩展。
【讨论】:
谁能帮助我:kohana v3: using different templates for different subdomains
danzzz,有几种方法...(我没有时间详细介绍.. 所以我会在这里快速介绍一下..).. A)使用 URL 重写来映射 bla.site.com到 site.com/bla (和 www.bla.com+bla.com 到 bla.com/www)......使用第一个参数作为触发器......然后在堆栈顶部加载一个不同的模块,以便它可以覆盖来自较低模块的任何内容 - 这假设任何可覆盖的内容都保存在模块中,否则,您可以将其用作触发器 代码在哪里... 和 B) 确实是同一件事,但使用该参数作为视图名称或类似名称...... 每当我有类似的东西时,我倾向于将我的应用程序文件夹留空,并在模块堆栈顶部附近放置一个应用程序模块。这样,我可以将“皮肤”模块加载到更高的位置并让级联 FS 完成所有工作辛勤的工作... 请记住,“皮肤”模块等将需要一套严格的规则和接口,如果您对应用程序进行更改,您需要知道所有皮肤仍然有效......
【讨论】: