From 245fe2a0479819543e3f71499daada138c43377c Mon Sep 17 00:00:00 2001 From: jeffreytse Date: Fri, 25 Jun 2021 14:13:00 +0800 Subject: fix: get value from site config incorrectly When the value is stored in a dictionary and the value isn't presented in front matter, the get_value function can not get value from the site config instead. --- _includes/functions/get_value.html | 50 +++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 20 deletions(-) (limited to '_includes/functions/get_value.html') diff --git a/_includes/functions/get_value.html b/_includes/functions/get_value.html index bbd1815..6d9ac81 100644 --- a/_includes/functions/get_value.html +++ b/_includes/functions/get_value.html @@ -2,31 +2,41 @@ {%- assign name = include.params.name -%} {%- endif -%} +{%- assign return = nil -%} + {%- assign keys = name | split:'.' -%} {%- assign name = keys.first -%} +{%- assign keys = keys | shift -%} -{%- if page[name] != nil -%} - {%- assign return = page[name] -%} -{%- elsif site[name] != nil -%} - {%- assign return = site[name] -%} -{%- elsif site.data[name] != nil -%} - {%- assign return = site.data[name] -%} -{%- elsif site.defaults[page.layout][name] != nil -%} - {%- assign return = site.defaults[page.layout][name] -%} -{%- elsif site.data.defaults[page.layout][name] != nil -%} - {%- assign return = site.data.defaults[page.layout][name] -%} -{%- elsif layout[name] != nil -%} - {%- assign return = layout[name] -%} -{%- else -%} - {%- assign return = include.params.default -%} -{%- endif -%} +{%- for step in (1..7) -%} -{%- assign keys = keys | shift -%} -{%- for key in keys -%} - {%- assign return = return[key] -%} - {%- if return == nil -%} - {%- assign return = include.params.default -%} + {%- case step -%} + {%- when 1 -%} + {%- assign return = page[name] -%} + {%- when 2 -%} + {%- assign return = site[name] -%} + {%- when 3 -%} + {%- assign return = site.data[name] -%} + {%- when 4 -%} + {%- assign return = site.defaults[page.layout][name] -%} + {%- when 5 -%} + {%- assign return = site.data.defaults[page.layout][name] -%} + {%- when 6 -%} + {%- assign return = layout[name] -%} + {%- else -%} + {%- assign return = include.params.default -%} + {%- endcase -%} + + {%- for key in keys -%} + {%- assign return = return[key] -%} + {%- if return == nil -%} + {%- break -%} + {%- endif -%} + {%- endfor -%} + + {%- if return != nil -%} {%- break -%} {%- endif -%} + {%- endfor -%} -- cgit v1.2.3