簡體   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