Silvio S.
Silvio S.

Reputation: 547

Right way to use the data in Jekyll

The goal is to use the variables defined in the front-matter section in a particular page.

Here my structure of the file system:

_Components

Here I have defined the attributes in the front-matters.

_Includes > Components

Here I want to use a loop to refer to a variable defined in the _Components > c1.html page.

How can I achieve this goal ?

In my _Includes > Components > c1.html I have the following code:

<body class="full">
    {% assign fullcomponents = site.components %}
        {% for component in fullcomponents | where:"title","c1html" %}
        {% component.title %}
    {% endfor %}
    <div class="container-fluid" id="componentscontainer">
        <div class="col-md-12">                 
            <div class="panel panel-primary" id ="panelcomponentlarge">
                <div class="panel-heading" >
                    Chart C3 Line
                </div>
etc...

Surely I'm missing some trivial things.

SECOND ATTEMPT

I figured out that I can provide a data layer for that so, I tried to split this information into a new data file.

Here the content of components.json

   {

    "Components": [
    "ChartC3Line":{
            "component":"ChartC3Line",
            "description":"This is an attempt"

        },
        "ChartC3Lines":{
            "component":"ChartC3Lines",
            "description":"This is an attempt"

        }
    ]

}

And I'm trying to get this information with the following code:

    {% assign comp = site.data.components.Components[ChartC3Line] %}   

        HTML:

                        {% highlight html linenos%}

                            <p> Description: {{ comp.description }} </p>

but anything is coming up.

THIRD ATTEMPT I found a solution but I don't like it at all here my new json file

{

    "ChartC3":[ 
        {
            "component":"ChartC3Line",
            "description":"This is an attempt"

        }],
    "ChartC4":[ 
        {
            "component":"ChartC3Line",
            "description":"This is an attemptSSSSSSS"

        }]


}

I don't want to have an object of several arrays of one element! Here the code to retrieve the right information:

{% assign comp = site.data.components.ChartC4[0] %}   

            HTML:

                            {% highlight html linenos%}

                                <p> Description: {{ comp.description }} </p>

Upvotes: 3

Views: 95

Answers (1)

Silvio S.
Silvio S.

Reputation: 547

SOLVED Following the structure of a json file, I changed my structure in an easier way:

{

"ChartC3":
    {
        "component":"ChartC3Line",
        "description":"This is an attempt"

    },
"ChartC4": 
    {
        "component":"ChartC3Line",
        "description":"This is an attemptSSSSSSS"

    }

} Now I can easily have access to the right object.

{% assign comp = site.data.components.ChartC3 %}

        HTML:

                        {% highlight html linenos%}

                            <p> Description: {{ comp.description }} </p>

Upvotes: 0

Related Questions