OctoberCMS中Placeholder与Partial的使用
由于不同页面直接的呈现样式的差别,因此我们在日常Web开发中经常需要处理一些变量传入控制各个页面的Style,OctoberCMS的placeholder
和partial
的功能可以轻松实现我们需要的变量传递功能。
Placeholder 占位符
下面这段代码首先判断了名为header
的placeholder
是否存在,如果存在输出内容
{% if placeholder('header') %} {% placeholder header type="html"%} {% page %} {% else %} {% page %} {% endif %}
这里需要注意的是header
后面的参数type="html"
,指定了该placeholder
的类型,type
支持text
和html
两种类型。
在layout
中使用placeholder
之后page编辑选项会自动生成出对应的内容编辑区域,如下图
需要注意的是,编辑器默认会过滤一些html tag和attribute,如svg
,path
等等,如果需要保留这些标签和属性,还需要在系统中做一些设置,打开Settings -> Editor settings->Markup Tags
,在这里添加上需要保留的tag和attribute即可
默认值的处理
{% if placeholder('navbarStyles') %} {% placeholder navbarStyles type="text" %} {% else %} defaultNavbarStyles {% endif %}
Partial 小部件
partial适合存放代码片段,如公共的header、footer、navbar等等
引入partial
{% partial "site/navbar" %}
引入带变量的partial
{% partial "site/navbar" color="red" %}
在site/navbar
这个partial
中可以使用twig语法{{ color }}
来使用。
接下来需要做的事情更复杂一些,有这样的一种应用场景:根据不同的页面Path设置navbar中不同的标题颜色,这时候我们把一个变量myColor
作为值传给color
中使用,并且根据不同的Path
来修改myColor
的值,在Markup中
{% partial "site/navbar" color=myColor %}
在Code中
function onStart() { $color = "text-dark"; switch($this->page->url){ case "/about": $color = "text-white"; break; } $this['myColor'] = $color; }
同样,在site/navbar
的partial
中使用{{ myColor }}
传入变量即可,这就完成了不同页面直接的动态设置。