gpt4 book ai didi

java - 包括某些页面的特定内容

转载 作者:行者123 更新时间:2023-11-30 11:06:22 25 4
gpt4 key购买 nike

我有一个 layout.tml,我在其中定义了我希望每个页面都具有的通用内容。但是,现在我遇到了一个问题,当我想为某个页面包含特定内容(例如营销)时。我想这是错误的想法,但在我的 layout.tml 中我创建了 marketingBlock。我希望这个隐藏起来,直到我在某个地方调用它,例如 page2.tml,我希望该页面包含此 block 。问题是,它没有出现。

那我该怎么做呢?

<t:block id="marketingBlock">
<div class="row marketing">
<h4>Marketing Name</h4>
<img />
<p></p>
</div>
</t:block>

Layout.tml

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" >
<head>
<title>${title}</title>
...
</head>

<body>
<div class="container">
<div class="header">
<nav>
...
</nav>
<h3 class="text-muted">Site Name</h3>
</div>

<t:body />

<!-- i want this portion to be included for some specific pages only -->
<t:block id="marketingBlock">
<div class="row marketing">
<h4>Marketing Name</h4>
<img />
<p></p>
</div>
</t:block>

<footer class="footer">
<p>&copy; Company 2015</p>
</footer>
</div>
</body>
</html>

Page2.tml

<html t:type="layout" title="TapestryTest Index"
t:sidebarTitle="Framework Version"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
xmlns:p="tapestry:parameter">

<body>
<div class="content">
...
</div>

<t:block id="marketingBlock" />

</html>

最佳答案

反过来想想。您的 Layout 类是一个组件,与任何 Tapestry 组件一样,它可以有参数,并且参数可以是来自父页面的 HTML block 。因此,如果您希望每个页面向 Layout 组件提供不同的营销内容,您需要的方法是通过 Layout 组件的“marketing”参数将一个 block 从包含页面传递到 Layout 组件。

请参阅 http://tapestry.apache.org/layout-component.html 底部的示例-- 在该示例中,一个 CSS block 被传递到 Layout 组件中,但它也可以很容易地成为一个 HTML block 。

因此您的 Page2.tml 将如下所示:

<html t:type="layout" title="TapestryTest Index"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
xmlns:p="tapestry:parameter">
<p:marketing>
<div class="row marketing">
<h4>Marketing Name</h4>
<img />
<p></p>
</div>
</p:marketing>
<body>
<div class="content">
...
</div>
</body>

</html>

或者,如果您希望多个页面具有相同营销内容但允许某些页面根本没有营销内容,那么您应该将营销 div 放在布局模板中(如在例如),并让每个父页面只传递一个 boolean 参数(“showMarketing”)来控制该 div 是否应该出现。然后,您可以在布局中放置一个组件来测试该 boolean 值。

所以你的布局模板应该是这样的:

<t:if test="showMarketing">
<div class="row marketing">
<h4>Marketing Name</h4>
<img />
<p></p>
</div>
</t:if>

每个页面的顶部都有一个像这样的“showMarketing”参数,设置为“true”或“false”:

<html t:type="layout" showMarketing="true" title="TapestryTest Index"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
xmlns:p="tapestry:parameter">

关于java - 包括某些页面的特定内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29332002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com