根据页面网址显示不同的侧边栏内容 - 10月CMS

时间:2016-07-15 21:56:44

标签: php symfony twig octobercms

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

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

阅读文档,看起来好像你可以用param.tab做到这一点,但是我无法让它工作,也不确定这是否是实现这一目标的最佳方式,因为它是' sa部分。

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')但我不知道如何完成同样的事情使用树枝或是否可以在部分使用param.tab?

1 个答案:

答案 0 :(得分:4)

有多种方法可以做到。

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

  

“部分”的“配置”部分是可选的,可以包含   可选的description参数,显示在后端用户中   接口

Partials - Introduction

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

信息页/ home.htm

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

<强>泛音/ sidebar.htm

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

当包含部分内容时,您可以传递变量,在这种情况下,我们将type注入this.param.type值。您还可以在partial:

中访问this.param(全局)变量

<强>泛音/ sidebar.htm

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

如果我理解你的问题,你有两个不同的页面,每个页面都有自己独特的网址,所以似乎不是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 %}

正如我所说,有很多方法可以通过定义变量,将参数传递给partial和其他来实现。