【发布时间】:2021-07-03 14:41:10
【问题描述】:
我是 latte 模板引擎的新手,并且从几天开始就一直在摆弄它。我发现了很多不错且有用的东西,可以让我的项目更轻松、更干净。但是有一件事我没有找到或想念如何处理它。
假设我的网站有这个基本的布局模板:
<header><h1>{$title}</h1></header>
<nav n:inner-foreach="$navigation as $link">
<a href="{$link->url}" n:class="$link->active ? active" n:attr="data-icon: $link->icon">{$link->name}</a>
</nav>
<aside>{include aside}</aside>
<aside>{include aside}</aside>
<aside>{include aside}</aside>
<content>{include content}<content>
<footer>{include footer}</footer>
内容在每个站点的另一个模板中处理。他们每个人看起来都是这样的:
{layout 'layout.tpl'}
{$navigation[3]->active=true}
{$title="this page title"}
{block content}
<p>here comes the content</p>
{/block}
{block aside}
<p>here is f.e. a sidebar</p>
{/block}
{block aside}
<p>this is some adverticement</p>
{/block}
现在我的问题是:如何在我的模板中使用一个或多个定义为“块”的“旁边”块。最好的解决方案应该是这样的:“block放在一边[]”,然后我在主模板中以某种方式通过循环处理它。有没有有用的方法来做到这一点?我不想将它与导航等变量一起使用,因为内容是在模板中定义的。
感谢您的想法和问候 马卡
【问题讨论】:
-
您希望通过拥有多个具有相同名称的块来实现什么?为什么不在包含侧边栏和广告的子模板中只使用一个
aside块? -
因为取决于 css,side-blocks 可以出现在左侧和/或右侧。 html5 允许多个备用部分。
-
当然,但布局中只有一个边。如果你想要多个,你需要以某种方式区分它们(例如通过添加一个类),此时你可以使用不同命名的块。
-
那是我的问题......我怎么能做到这一点,但不使用其他分配方法而不是其他块。 (为了更清楚,我编辑了第一篇文章)
-
好吧,我仍然质疑这样做的好处,而不是使用不同名称的不同块。我发布了一个 hack 的答案,可以实现你所说的你想要的,但听起来仍然像 XY problem。
标签: templates block nette latte