2016-03-27 41 views
0

如何更改佈局以重複使用模板上其他標籤上的相同標題文本,避免重複模板文件上的文本?見例如:如何重新使用帶有佈局的Thymeleaf的標題標籤?

有了這個佈局:

<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> 
    <head> 
     <meta charset="UTF-8"> 
     <title>Title from LAYOUT</title> 
    </head> 
    <body> 
     <h1>Title from LAYOUT</title> 
     <th:block layout:fragment="content">Default content</th:block> 
    </body> 
</html> 

而這個模板:

<html xmlns:th="http://www.thymeleaf.org" 
     xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" 
     layout:decorator="layout"> 
    <head> 
     <title>Title from TEMPLATE</title> 
    </head> 
    <body> 
     <th:block layout:fragment="content"><p>My content</p></th:block> 
    </body> 
</html> 

期望呈現的頁面是:

<html> 
    <head> 
     <meta charset="UTF-8"> 
     <title>Title from TEMPLATE</title> 
    </head> 
    <body> 
     <h1>Title from TEMPLATE</title> 
     <p>My content</p> 
    </body> 
</html> 

回答

0

我發現解決方案在h1中添加了一個片段塊並在標題元素中包含layout:include="this :: title"屬性。

佈局:

<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> 
    <head> 
     <meta charset="UTF-8"> 
     <title layout:include="this :: title">Title from LAYOUT</title> 
    </head> 
    <body> 
     <h1><th:block layout:fragment="title">Title from LAYOUT</th:block></h1> 
     <th:block layout:fragment="content">Default content</th:block> 
    </body> 
</html> 

模板:

<html xmlns:th="http://www.thymeleaf.org" 
     xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" 
     layout:decorator="layout"> 
    <th:block layout:fragment="title">Title from TEMPLATE</th:block> 
    <th:block layout:fragment="content"><p>My content</p></th:block> 
</html> 
0

你不應該有2個多(HTML & Head & Body &標題)標籤在同一頁面上,你應該刪除它們,並保持每個東西在一個身體內,

+1

約定,佈局和模板實際上應該是在同一個,而應該有一個文件,它是沿東西線「 desiredPageContent.html「,它被放置在它應該進入身體的地方......除非我理解錯誤的情況,但是你的def。 right @Noor Adnan! :) – Metroidaron

+0

在兩個文件上都有多個head,body,ecc標籤是靜態原型的常見做法,當瀏覽器打開html文件時,允許查看正確呈現的html頁面。 Thymeleaf使用元素合併功能(請參閱https://github.com/ultraq/thymeleaf-layout-dialect#head-element-merging)。 –

-1

這樣做需要的不僅僅是HTML/CSS。我將以PHP(服務器端語言)的形式提供我的示例,但請注意,您可以使用Javascript或任何其他編譯的腳本Web語言,如python,pearl,Ruby on rails(可能以前從未使用過),JSP(Java Server Side Pages)以及更多...所以這裏是可以回答你的問題的代碼,如果你的服務器上安裝了PHP。 :)

<?php $myTitle = "This is my title!"; ?> 

<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> 
<head> 
    <meta charset="UTF-8"> 
    <title><?php echo $myTitle; ?></title> 
</head> 
<body> 
    <h1><?php echo $myTitle; ?></title> 
    <th:block layout:fragment="content">Default content</th:block> 
</body> 

發生了什麼事嗎?在第1行的PHP中,您聲明一個變量等於一些文本......在您的html中,使用以下代碼行:執行一點PHP來輸出變量$ myTitle中的任何內容。 PHP是在服務器上執行的,並且不會發送給查看頁面的用戶,所以如果你在任何網站上查找,你都不會找到它...

+0

謝謝你的回答。在動態語言中重用相同的變量很容易歸檔結果,但問題是使用Thymeleaf的模板繼承功能。 –