Thymeleaf применять различные заголовки - PullRequest
0 голосов
/ 30 октября 2019

Я использую последнюю версию макетов страниц с чабрецом .

Я хочу использовать шаблон заголовка $CONTENT_TITLE - $LAYOUT_TITLE для всех своих страниц. Поэтому я создал следующие файлы макета и содержимого.

Мой layout.html файл выглядит как

<!doctype html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.w3.org/1999/xhtml">
<head>
    <title layout:title-pattern="$CONTENT_TITLE - $LAYOUT_TITLE">My Company Name</title>
    <!-- some scripts and styles --->
</head>
<body>
    <!-- some content --->
</body>
</html>

Мой content.html выглядит как

<!DOCTYPE html>
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:th="http://www.thymeleaf.org"
      layout:decorate="~{layout.html}">
<head>
    <title>
        <th:block th:if="${meta.pageTitle}" th:text="${meta.pageTitle}"></th:block>
    </title>
</head>
<body>
    <!-- some content --->
</body>
</html>

Еслистраница содержимого получает Newsletter в качестве значения свойства pageTitle, и я вызываю страницу содержимого в своем браузере, я получаю правильный результат:

<title>Newsletter - My Company Name</title>

Если страница содержимого не имеет заголовка, яхочу отображать $LAYOUT_TITLE в моем теге <title> без начального разделителя -. Но с моим кодом я получаю

<title>- My Company Name</title>

То, что я хочу, это

<title>My Company Name</title>

Как мне этого добиться простым способом? Насколько я знаю, я не могу использовать $CONTENT_TITLE в layout.html и проверить, является ли он пустым, или я могу?

1 Ответ

0 голосов
/ 07 ноября 2019

Так как я не мог найти способ использовать условия для шаблона заголовка, я отошел от этого и использовал параметризуемые фрагменты, как предложено в этом ответе .

layout.html

<!doctype html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.w3.org/1999/xhtml">
<head>
    <!-- some scripts and styles --->
</head>
<body>
    <!-- some content --->
</body>
</html>

content.html

<!doctype html>
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:th="http://www.thymeleaf.org"
      layout:decorate="~{layout.html}">

<head>
    <th:block th:replace="./fragments/page-title.html :: page-title('My Content Title')"></th:block>
</head>

<body>
    <!-- some content --->
</body>
</html>

./fragments/page-title.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:fragment="page-title(pageTitle)" th:remove="tag">
    <title th:text="(${pageTitle}? ${pageTitle} + ' - ' : '') + 'My Company Name'"></title>
</head>
</html>

В результате <title>My Content Title - My Company Name</title> для всех страниц с дополнительным заголовком и <title>My Company Name</title> для всехстраницы без дополнительного заголовка (например, моя стартовая страница).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...