Templates 允许用户更改模板的最佳方式是什么?
在我的一个项目中,我的用户将拥有我的网站({username}.example.org)的一个专用部分。在该子域中,我计划允许他们轻松地更改设计。 我看了一些已经在做这件事的在线网站,比如,和 关于这个应用程序的语言,我从Django开始,我成功地实现了“基于url名称的模板呈现,默认为回退”(http://someuser.example.com 将在templates/someuser/*或templates/generic/*中加载模板(如果在第一个文件中找不到)。 但我可以将它导出到PHP或Play!框架,如果它们更适合我的需要 使用的模板引擎非常简单,因为它与Django模板引擎一样简单、易学且安全(没有Python代码可以(通常应该!)执行) 下面是我找到的每个解决方案的优缺点。我真的很感激你的想法,你会怎么做,为什么。谢谢 注意:用户将对HTML/CSS有很好的了解 更改变量(如标题颜色等)Templates 允许用户更改模板的最佳方式是什么?,templates,static-files,Templates,Static Files,在我的一个项目中,我的用户将拥有我的网站({username}.example.org)的一个专用部分。在该子域中,我计划允许他们轻松地更改设计。 我看了一些已经在做这件事的在线网站,比如,和 关于这个应用程序的语言,我从Django开始,我成功地实现了“基于url名称的模板呈现,默认为回退”(http://someuser.example.com 将在templates/someuser/*或templates/generic/*中加载模板(如果在第一个文件中找不到)。 但我可以将它导出到PH
- 优点:
- 简单安全
- 缺点:
- 由于太有限,想要个性化其网站的用户无法使用此解决方案
- 优点:
- 易于集成
- 稳妥
- 缺点:
- 有限的
- 用户图像存储在哪里?(徽标、背景、一些渐变等)
- 优点:
- 变化更重要
- 用户(几乎)可以随心所欲(实现GA、FeedBurner等)
- 缺点:
- 他们把静态文件(徽标、背景图像、一些特殊效果(渐变))放在哪里
- 模板存储在数据库中,每个显示的页面都需要一个SQL请求
- 优点:
- 变化更重要
- 用户(几乎)可以随心所欲(实现GA、FeedBurner等)
- 可以启用FTP访问,使用户在其模板目录中生根
- 缺点:
- 静态文件也有同样的问题
谢谢你的帮助,我很感激 好的,我会根据我所做的和我的研究来回答我自己 正如Steve提到的,在让用户定制页面布局时必须非常小心 必须对风险进行良好评估强> 在我的例子中,允许用户更改完整的HTML/CSS/JS是可能的,在某种程度上,就像或确实是这样 风险是:
- 用户可以添加一个javascript代码来收集其他用户的身份验证cookie。这样,该用户就可以访问其他用户的管理部分的任何令牌身份验证。一个简单的解决方案是避免管理员部分和用户网站之间的交叉cookie
- 用户可以尝试在模板中执行代码,如Python、PHP、Java、Ruby等(关于使用的内容)。这里的解决方案是使用一个模板引擎,它完全不允许使用代码,只允许使用标记。对于python来说,这是一个完美的选择
- 确保用户无法访问他可以访问的模板目录的其他文件夹。您可以通过设置一个FTP服务器来实现这一点,该服务器使用数据库进行用户访问(如ProFTPd with MySQL),并在其模板目录中显示用户。配额设置也非常重要,以避免用户将其模板目录用作库存设备;)李>
嗯,我想我解决了整个问题。我可能遗漏了一些要点,如果是这样的话,请添加评论或新帖子,我将完成回答。您必须非常小心让用户自定义页面布局(使用原始HTML)当你以后想要重新设计基础站点时,你可能会遇到一个令人头疼的支持问题。我想了想,这就是为什么我选择了一个模板引擎(Jinja2,我更新了我的帖子)。那你建议做什么?我需要允许他们改变整个设计,以满足他们的需要,并添加新的页面(平面的)。我有点卡住了:/