[英]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.html
: verify_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.