Add metadata_only to get_section
This commit is contained in:
parent
957c6bed9d
commit
86c418372f
|
@ -268,6 +268,10 @@ impl Section {
|
|||
pub fn to_serialized<'a>(&'a self, library: &'a Library) -> SerializingSection<'a> {
|
||||
SerializingSection::from_section(self, library)
|
||||
}
|
||||
|
||||
pub fn to_serialized_basic<'a>(&'a self, library: &'a Library) -> SerializingSection<'a> {
|
||||
SerializingSection::from_section_basic(self, Some(library))
|
||||
}
|
||||
}
|
||||
|
||||
/// Used to create a default index section if there is no _index.md in the root content directory
|
||||
|
|
|
@ -75,11 +75,17 @@ pub fn make_get_page(library: &Library) -> GlobalFn {
|
|||
|
||||
pub fn make_get_section(library: &Library) -> GlobalFn {
|
||||
let mut sections = HashMap::new();
|
||||
let mut sections_basic = HashMap::new();
|
||||
for section in library.sections_values() {
|
||||
sections.insert(
|
||||
section.file.relative.clone(),
|
||||
to_value(library.get_section(§ion.file.path).unwrap().to_serialized(library)).unwrap(),
|
||||
);
|
||||
|
||||
sections_basic.insert(
|
||||
section.file.relative.clone(),
|
||||
to_value(library.get_section(§ion.file.path).unwrap().to_serialized_basic(library)).unwrap(),
|
||||
);
|
||||
}
|
||||
|
||||
Box::new(move |args| -> Result<Value> {
|
||||
|
@ -89,7 +95,19 @@ pub fn make_get_section(library: &Library) -> GlobalFn {
|
|||
"`get_section` requires a `path` argument with a string value"
|
||||
);
|
||||
|
||||
match sections.get(&path) {
|
||||
let metadata_only = args
|
||||
.get("metadata_only")
|
||||
.map_or(false, |c| {
|
||||
from_value::<bool>(c.clone()).unwrap_or(false)
|
||||
});
|
||||
|
||||
let container = if metadata_only {
|
||||
§ions_basic
|
||||
} else {
|
||||
§ions
|
||||
};
|
||||
|
||||
match container.get(&path) {
|
||||
Some(p) => Ok(p.clone()),
|
||||
None => Err(format!("Section `{}` not found.", path).into())
|
||||
}
|
||||
|
|
|
@ -92,6 +92,12 @@ Takes a path to a `_index.md` file and returns the associated section
|
|||
{% set section = get_section(path="blog/_index.md") %}
|
||||
```
|
||||
|
||||
If you only need the metadata of the section, you can pass `metadata_only=true` to the function:
|
||||
|
||||
```jinja2
|
||||
{% set section = get_section(path="blog/_index.md", metadata_only=true) %}
|
||||
```
|
||||
|
||||
### ` get_url`
|
||||
Gets the permalink for the given path.
|
||||
If the path starts with `./`, it will be understood as an internal
|
||||
|
@ -108,11 +114,11 @@ we want to link to the file that is located at `static/css/app.css`:
|
|||
{{/* get_url(path="css/app.css") */}}
|
||||
```
|
||||
|
||||
For assets it is reccommended that you pass `trailing_slash=false` to the `get_url` function. This prevents errors
|
||||
when dealing with certain hosting providers. An example is:
|
||||
By default, assets will not have a trailing slash. You can force one by passing `trailing_slash=true` to the `get_url` function.
|
||||
An example is:
|
||||
|
||||
```jinja2
|
||||
{{/* get_url(path="css/app.css", trailing_slash=false) */}}
|
||||
{{/* get_url(path="css/app.css", trailing_slash=true) */}}
|
||||
```
|
||||
|
||||
In the case of non-internal links, you can also add a cachebust of the format `?t=1290192` at the end of a URL
|
||||
|
|
Loading…
Reference in a new issue