繁体   English   中英

Play Framework 2.0中的主题支持

[英]Theming support in Play Framework 2.0

如何在Play Framework 2中实现主题支持? 我想创建目录结构,例如:views / default <-默认模板目录
views / site1 <-网站1的模板
views / site2 <-网站2的模板

如果模板不存在(即views / site1 / home),则应从默认目录渲染模板。

我已经尝试过cls = Class.forName("views.html.home);但是我没有找到类异常。

解决方案:也许有人会发现这个有用:

 protected static String renderTemplate(final String template, final String action,final ViewData templateParams) { Class<?> cls = null; String ret = "Template not found"; try { cls = Class.forName(template); } catch (ClassNotFoundException e) { ret = e.toString(); } if (cls == null) { try { cls = Class.forName("views.html.default."+action); } catch (ClassNotFoundException e) { ret = e.toString(); } } if (cls != null) { Method htmlRender; try { htmlRender = cls.getMethod("render", ViewData.class); ret = htmlRender.invoke("",templateParams).toString(); } catch (NoSuchMethodException e) { ret = "Method not found"+e.toString(); } catch (IllegalAccessException e) { ret = "illegal access exception"; } catch (InvocationTargetException e) { ret = "InvocationTargetException"; } } return ret; } ViewData vd=new ViewData(); renderTemplate("views.html.custom."+viewname, actionname, vd) 

您必须自己实现它,作为参考,检查Play Authenticate使用示例 ,该示例允许发送ie。 验证电子邮件基于Play的模板,并取决于客户端的语言,因此,对于一个实例,如果您的主要语言是波兰语,则会呈现verify_email_pl.scala.html否则,如果您的浏览器使用的是PA不支持的语言,则会悄悄地回verify_email_pl.scala.htmlverify_email_en.scala.html

检查方法的用法声明

对于您的情况,这将是一个很好的解决方案,当然,选择的标准将有所不同。

此过程称为“品牌推广”。 您要做的是遵循。 在数据库中通过名称“ BRANDING”创建一个表,并针对每个网站实例在其中添加主题名称。 现在,您将按照前面提到的那样在文件夹层次结构中创建文件夹层次结构,并在其中加载css文件的jsp页面中执行以下操作: <link rel="stylesheet" type="text/css" href="/views/${themeName}.css">

其中themeName将是服务器端变量,您将在控制器中进行编程以从db中获取数据,或者第一次将其获取然后缓存它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM