基于子域剥离不同的微站点

时间:2011-05-27 21:29:30

标签: plone xdv

摘要

根据请求中使用的URL,查找有关如何使用xdv将不同皮肤应用于同一网站的建议。

文本

要求

我们需要几个微型站点,每个站点都有自己的皮肤,与主站点不同。 微站点应具有主站点内容的子集。部分主站点内容在微站点上不可见,但这可以通过简单地隐藏导航,站点地图和portlet这些部分的链接来实现。如果用户通过URL黑客找到隐藏的内容,这是可以的。微网站的HTML应该是可定制的。 每个微站点都应通过主站点的子域访问。 即让主网站为http://site.com,微网站位于http://a.site.comhttp://b.site.com等。

客户希望能够激活一个没有额外开发的新微站点,只需要一些html,css和图像文件,并为apache配置添加虚拟主机。

可能的解决方案

collective.xdv听起来不错,但是我们无法弄清楚如何让它根据网址选择不同的theme.html文件。大多数解决方案似乎都专注于创建基于Plone站点的子文件夹的子站点。我们不希望微网站有不同的内容,只是一个不同的皮肤(以及一些隐藏在导航中的内容),所以我们不想为每个微网站创建一个新的文件夹。

我们想要尝试的几个想法是:a)自定义主模板,让它为每个子域的html主体添加不同的类,然后使用寻找该类的xdv规则,以及b)修补发布商根据子域名做某事。

另一种方法是将collective.xdv分支以修改其“备用主题”,因此它将使用URL来选择主题。

我们可能错过了什么?

谢谢!

1 个答案:

答案 0 :(得分:5)

您应该考虑迁移到最后一个Plone 4.1版本。使用新的闪亮plone.app.theming(仅适用于Plone> 4.1),您可以在您的diazo(以前的xdv)规则文件中使用theme parameters (consult the documentation here),例如$host变量(或您可能要为您的用例设置的任何自定义参数 - 可通过plone.app.theming控制面板进行配置)。如果您遇到Plone3.x/collective.xdv,那么您最好的选择就是在您的网络服务器中设置标题,例如(Nginx示例)。

location / {
...
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-XDV "true";
proxy_set_header X-Subsite "sub-a";
}

并从请求中访问这些内容。