3

概括

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

文本

要求

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

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

可能的解决方案

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

我们想尝试的几个想法是 a) 自定义主模板,让它为每个子域的 html 正文添加一个不同的类,然后使用 xdv 规则来查找该类,b) 修补发布者做基于子域的东西。

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

还有什么我们可能错过的吗?

谢谢!

4

1 回答 1

5

您应该考虑迁移到最后一个 Plone 4.1 版本。使用新的和闪亮的plone.app.theming(仅适用于 Plone > 4.1),您可以在重氮(以前的 xdv)规则文件中使用theme parameters(在此处查阅文档),例如$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";
}

并从请求中访问这些。

于 2011-05-27T23:23:35.527 回答