【问题标题】:Display different sidebar content based on page url - October CMS根据页面 url 显示不同的侧边栏内容 - October CMS
【发布时间】:2016-11-19 05:17:57
【问题描述】:

我有 2 页 index.htm 和 links.htm 以及部分 sidebar.htm。

我试图让我的侧边栏根据 index.htm 或 links.htm 是否处于活动状态显示不同的内容。

通读文档,您似乎可以使用 param.tab 执行此操作,但我无法使其工作,并且不确定这是否是完成此操作的最佳方法,因为它是部分的。

sidebar.htm

description = "sidebar"
url = "/sidebar/:{% this.page.url %}"
==
{% if this.param.tab == 'links' %}
Display this if page = links
{% elseif this.param.tab == 'index' %}
Display this is page = index
{% endif %}

在我使用的刀片中 - @elseif(isset($guidesslugs) && $guidesslugs->guidesslug == 'area-guide') 但我不确定如何使用 twig 完成同样的事情,或者是否可以使用部分的 param.tab?

【问题讨论】:

    标签: php symfony twig octobercms


    【解决方案1】:

    有多种方法可以做到这一点。


    首先,部分可能没有url 参数进入配置部分。

    配置部分对于部分是可选的,可以包含 可选description参数,显示在后台用户 界面。

    Partials - Introduction


    如果侧边栏基于同一页面具有不同的内容,您可以使用param。示例:

    pages/home.htm

    url = "/home/:type"
    ==
    {% partial 'sidebar' type=this.param.type %}
    

    partials/sidebar.htm

    {% if type == 'foo' %}
      {# foo type #}
    {% elseif type == 'bar' %}
      {# bar type #}
    {% else %}
      {# anything... #}
    {% endif %}
    

    当包含部分时,您可以传递变量,在这种情况下,我们将 type 注入为 this.param.type 值。您还可以访问部分内部的this.param(全局)变量:

    partials/sidebar.htm

    {% if this.param.type == 'foo' %}
      {# foo type #}
    {% endif %}
    

    如果我理解您的问题,您有两个不同的页面,每个页面都有自己独特的 url,因此 param 属性似乎不是这样。


    使用this.page 变量。

    您可以使用以下方法访问页面配置部分中定义的页面url

    {{ this.page.url }} 
    

    此属性似乎对 docs 隐藏。

    所以考虑你的结构:

    页面/主页

    url = "/home"
    layout = "default"
    ==
    {% partial 'sidebar' %}
    

    页面/链接

    url = "/links"
    layout = "default"
    ==
    {% partial 'sidebar' %}
    

    部分/侧边栏

    {% if this.page.url == '/home' %}
      {# home page #}
    {% elseif this.page.url == '/links' %}
      {# links page #}
    {% else %}
      {# other pages #}
    {% endif %}
    

    正如我所说,有很多方法可以通过定义变量、将参数传递给部分和其他方法来做到这一点。

    【讨论】:

    • 谢谢,使用 {% if this.page.url == '/home' %} 似乎可行,所以我会继续尝试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多