我对Twig相当新鲜。我正在创建一个用户可以设置Google字体系列的模板。他们为三种不同的选项设置了这些字体系列。
正文 标题 导航
所选值将加载到模板中,如:
<link href='//fonts.googleapis.com/css?family={{ theme.headings_google_webfonts | url_encode }}:400,300,600,800' rel='stylesheet' type='text/css'>
<link href='//fonts.googleapis.com/css?family={{ theme.body_google_webfonts | url_encode }}:400,300,600,800' rel='stylesheet' type='text/css'>
<link href='//fonts.googleapis.com/css?family={{ theme.navigation_google_webfonts | url_encode }}:400,300,600,800' rel='stylesheet' type='text/css'>
现在,当人们为所有选项选择相同的字体时,模板会将字体加载三次,这绝对是绝对的。
如何制定规则或测试以检查是否已存在相同的字体值,如果是,则不加载它?
我认为这样做会有所作为,但这显然不起作用:
{% set fonts = theme.body_google_webfonts in [theme.navigation_google_webfonts, theme.navigation_google_webfonts] ? ...... %}
答案 0 :(得分:1)
记录您已包含在阵列中的内容:
<link href='//fonts.googleapis.com/css?family={{ theme.headings_google_webfonts | url_encode }}:400,300,600,800' rel='stylesheet' type='text/css'>
{% set fonts_done = [ theme.headings_google_webfonts ] %}
{% if theme.body_google_webfonts not in fonts_done %}
<link href='//fonts.googleapis.com/css?family={{ theme.body_google_webfonts | url_encode }}:400,300,600,800' rel='stylesheet' type='text/css'>
{% set fonts_done = fonts_done|merge([ theme.body_google_webfonts ]) %}
{% endif %}
{% if theme.navigation_google_webfonts not in fonts_done %}
<link href='//fonts.googleapis.com/css?family={{ theme.navigation_google_webfonts | url_encode }}:400,300,600,800' rel='stylesheet' type='text/css'>
{% set fonts_done = fonts_done|merge([ theme.navigation_google_webfonts ]) %}
{% endif %}