Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
June 10, 2022 08:01 pm GMT

Data files in Jekyll

By Farrel Burns

Brought to you by CloudCannon, the Git-based CMS for Jekyll.

What youll learn here:

  • Creating Jekyll data files to act as a database alternative

  • Using data files to populate a Google Map

    # Starting repo    git clone https://github.com/CloudCannon/jekyll-learn-blog-template.git    # Starting branch:    git checkout data-intro-start    # Finished branch:    git checkout data-intro-finish

What are Jekyll data files?

Sometimes you also need supplemental data to use on pages, but not as its own page, much like from a database or API. Jekyll allows you to create data files and access them globally, just like collections. This way you can maintain your own mini-databases, but with very little setup needs. A number of file formats are supported, including JSON, YAML, CSV (comma-separated values), and TSV (tab-separated values).

In this example, we will create a page making use of Google Maps. Then we will use a data file to populate the map with real locations of our amazing endangered birds. Read more on data files on Jekylls official site.

Creating data files

First, lets follow the usual conventions. If you havent already guessed it, we need to create a _data folder for our files. Then, we can create a <filename>.yml file with our data. For convenience, in the root of the project, data.zip has been added, with locations.yml (with coordinates of our birds and any supporting information) and staff.yml. Simply unzip these files into _data.

Data use case 1 - location map

Now that we have our data files, we can simply access locations.yml through site.data.locations. No need for any more setup in _config.yml, unlike collections.

To make things easier, a few things have already been set up that arent the focus of this lesson:

  • js/map.jswith the necessary JavaScript code for working with a (development) Google Map (feel free to have a look if you arent familiar with Google Maps setup, or would like to see the marker setup).
  • locations.html with script tags linking map.js and initializing the map.

All we need to do is use the data, which we can transform into JSON with the jsonify filter. Simply add this to the last script tag in locations.html:

    <script>      let markers = {{ site.data.locations | jsonify }};      google.maps.event.addDomListener(window, 'load', initializeMap);    </script>

When we view the page in the browser, all markers should now be visible. We can add more markers to the data file and it will be populated on the next Jekyll build.

Data use case 2 - list of staff

Another great use of data is simple information about people, such as jobs or contacts.

One thing that might make sense here is to provide staff contact details for sightings of rare birds. Then staff members could be contacted to update the locations.yml file. We already have staff.ymlin our _data folder, with some simple contents (randomly generated names and a placeholder image).

Now we can simply add a new block below our map on locations.html:

    <div class="contact">      <h2 class="contact__heading">Report a sighting</h2>      <p>If you think you've spotted an endangered species, please contact one of our friendly staff to let them know.</p>    </div>    <div class="staff">      {% for person in site.data.staff %}        <div class="staff-member">          <img class="staff-member__image" src="{{ person.image }}" alt="Image of {{ person.name }}">          <div>            <p class="staff-member__name">{{ person.name }}</p>            <p>Contact options: </p>            <ul class="staff-member__contacts">              <li><a class="option" href="#">Email</a></li>              <li><a class="option" href="#">Facebook</a></li>              <li><a class="option" href="#">Twitter</a></li>            </ul>          </div>        </div>      {% endfor %}    </div>

This will output all of our staff information, including names, images, and links (just home pages for now) to their email/social media. If we want to add more information or more staff, it is now easier to manage.

Whats next?

This is the end of the Jekyll beginner tutorial. We have dealt with all of the major topics in Jekyll and built a basic but decent-looking site. Hopefully you now feel confident putting together an easily maintainable static site.

Of course, Jekyll is not a CMS. If you wish to deploy your site into the wider world and have other people contribute to it - especially non-technical content editors - CloudCannon offers an easy-to-use and beautiful CMS solution.


Original Link: https://dev.to/cloudcannon/data-files-in-jekyll-32ic

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To