【发布时间】:2020-05-08 14:35:51
【问题描述】:
所以我正在尝试为我自己的项目制作一个 OctoberCMS 主题。目标是根据用户所在的页面使整个导航标题具有不同的颜色。看起来很简单,但经过数小时的尝试仍然无法管理。
所以我的想法是根据用户所在的页面添加不同的 css 类。对于 https://example.com/foo/bar,应该显示这样的类:navbar-foo
我发现OctoberCMS Twig 有一个名为this.param.tab 的选项应该准确返回"foo",所以我想到了这个:
{% if this.param.tab == 'foo' %}
<nav class="navbar-foo">
{% if this.param.tab == 'bar' %}
<nav class="navbar-bar">
等等。问题是,这会占用很多空间,我不认为这是一种干净的方式。此外,该类需要位于多个元素上,这会使其有点不可读。所以我想我会像这样解决它:
{% set slug = this.param.tab %}
<nav class="navbar-{ slug }">
<div class="navbar-menu-{ slug }
这不起作用。首先,我认为它不起作用,因为我没有正确插入树枝以使其在 html 中被计为字符串。我认为我做错的另一件事是this.param.tab 返回一个数组而不是字符串。因此,当我意识到this.param.tab 是空的时,我尝试了不同的想法将其插入到类属性中并将其从数组更改为字符串。所以我尝试将它包装到一个 div 中并像那样显示它。但这只是空的。我试过{{ dump(this.param.tab) }},结果也是空的。
所以在我看来this.param.tab实际上没有返回任何东西。由于代码在 header.htm 中,我认为它可能需要在主调用文件中,因为 header.htm 只是插入的部分。所以我尝试了 layout.htm 并尝试了 home.htm (layout 是文件,它定义页面的布局,插入部分/页面和主页.htm 是实际包含 slug 和用户正在访问的页面的其他代码的文件)。但这也没有任何作用。
所以我不完全确定这里出了什么问题。 this.param.tab 是否真的有效?还是有更好的方法我应该这样做?
如果您需要更多信息,请询问,但我认为这无关紧要,因为它只是 10 月的基本设置,主题只是 twig、javascript 和 scss。
【问题讨论】:
-
你能分享你的页面 slug 信息吗
-
当然。页面slug信息是什么意思?它就在我写的 htm 文件的开头: url = "/foo/bar"
-
hmmm 好的,现在我不确定您如何期望
this.param.tab填充正确的数据,因为您没有设置它或为它做任何事情,或者它以任何方式连接,我们错过了任何东西 -
你应该先通过:octobercms.com/docs/cms/pages 然后你就可以正确使用 slug
params并且你可以正确设置你的类:) -
是的,但我就是这样做的。它甚至在页面上说您不需要通过 PHP,但可以使用“this.page”,所以我假设“this.param”也应该在没有 PHP 的情况下工作。
标签: html css twig octobercms slug