SilverStripe 布局和模板

SilverStripe layout and templates

给出下面的代码

Test.ss(在模板中)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    Templates
    $Layout
</body>
</html>

Test.ss(布局中)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Layout</title>
</head>
<body>
    Layout
</body>
</html>

SilverStripe 中的输出:

模板 布局

我的问题是 SilverStripe 是否在布局中剥离了 html 标签?

不,SilverStripe 不会从您的布局模板中删除 html 标签。您模板中的 html 将按原样打印。

因此您的示例模板将产生以下 html 输出:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    Templates
    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Layout</title>
</head>
<body>
    Layout
</body>
</html>
</body>
</html>

您可以通过查看您的页面源代码自行查看。在 chrome 中 URL 将是 view-source:http://your-website-url

避免在 layout 模板中使用 htmlheadbody 标签,因为这在主模板中得到处理。

相反,您的 template/layouts/test.ss 文件应如下所示:

    <p>Layout</p>

用你原来的 template/test.ss 这会给你一个输出:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    Templates
    <p>Layout</p>
</body>
</html>