Skip to content
Grav 2.0 is officially stable. Read the announcement →
Archive

Yaml syntax and "complex" content

Started by Muut Archive 11 years ago · 9 replies · 365 views
11 years ago

Hi list,

I 'm new to Grav and use skeleton-deliver-theme as based theme and I'd like to get sophisticated text in place of raw text using yaml syntax.

Here is the kind of raw text (lorem ips) inside the bundled text. How could I replace the desc field by html / markdown content. Actually, I want my text on multi lines containing list.

---yaml
title: We would like to hear from you
menu: false
services:

  • icon: cog
    title: My title
    desc: ""
  • icon: inbox
    title: Service Title 3
    desc: "Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Sed posuere consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras mattis consectetur purus sit amet fermentum."
  • icon: headphones
    title: Service Title 4
    desc: "Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum m assa justo sit amet risus. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Sed posuere consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras mattis consectetur purus sit amet fermentum."
  • icon: ticket
    title: Service Title 5
    desc: "Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Sed posuere consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras mattis consectetur purus sit amet fermentum."
MARKDOWN

My wanted result is (as markdown syntax) :

--- markdown
Fusce dapibus, tellus ac cursus commodo, tortor mauris [condimentum](http://www.link.com) nibh, ut fermentum massa justo sit amet risus. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

* list Item 1
* list Item 2
* list Item 3

Sed posuere consectetur est at lobortis. Cras mattis *consectetur* purus sit amet fermentum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras mattis consectetur purus sit amet fermentum.

Many thnaks for your reply !

11 years ago

I'm not really following how the header yaml is supposed to relate to the wanted markdown syntax?

11 years ago

Actually, I don't really want markdown syntax. I would be happy to be able to write html into yaml file.
What would be your advice ?

  1. to write HTML in yaml files, (if possible, of course ?)
  2. or just remove the (default) template loops on items and hard code it manually into HTML format.
  3. others options ?

Thanks for your reply

11 years ago

So it sound like you want to output desc split with a list in the middle? The best way I know to do that is to create two separate fields like this:

YAML
desc1: Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. 
desc2: Sed posuere consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras mattis consectetur purus sit amet fermentum.
item1: list Item 1
item2: list Item 2
item3: list Item 3

And then outputting them in the template like this:

TWIG
{{ page.header.services.desc1 }}
<ul>
<li>{{ page.header.services.item1 }}</li>
<li>{{ page.header.services.item2 }}</li>
<li>{{ page.header.services.item3 }}</li>
</ul>
{{ page.header.services.desc2 }}

Of course, that's assuming that you plan to always have the same number of list items. If you wanted, you could probably use a for loop to create li elements as needed.

11 years ago

Thanks for your reply. The proposed solution is ok, if all services items have list but this is not my case.

One desc item will have 2 paragraphs and no list, another 1 paragraph + 1 list, and so one ...

11 years ago

Any complement or adapted solution for my needs ?

11 years ago

You can use {% if page.header.services.item1 %} (and so on) to determine if you have content to render. See the twig docs for additional flow control statements.

11 years ago

I'm doing something similiar, but I use modules (subpages), instead of a deep nested yaml file. This way files look like

YAML
--
icon: headphones
title: Service Title 4
--
 Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum 

Then in you template put {{ content }} where you need the markdown rendered text. It also makes it easier to work with your images because you put it in the module folder and can access it with pages.media.images|first
http://learn.getgrav.org/content/modular

11 years ago

Thanks Ryan. It is probably the best options regarding my needs.

Actually, I should have named my topic "Is it possible to store html content in yaml var". But from search on Internet and from your answers, I guess the answer is No.

Suggested topics

Topic Participants Replies Views Activity
Archive · by Deleted User, 9 years ago
0 1333 9 years ago
Archive · by Muut Archive, 9 years ago
2 924 9 years ago
Archive · by Muut Archive, 9 years ago
2 4055 9 years ago
Archive · by Muut Archive, 9 years ago
1 2935 9 years ago
Archive · by Muut Archive, 9 years ago
3 1111 9 years ago