Skip to content

Latest commit

 

History

History
83 lines (66 loc) · 2.06 KB

display-random-posts1.md

File metadata and controls

83 lines (66 loc) · 2.06 KB


Create file search.json in your root Jekyll directory with the following contents:

The JSON File

---
---
[
    {% for post in site.posts %}
    {
      "title"    : "{{ post.title }}",
      "href"     : "{{ post.url }}",
      "date"     : {
         "day"   : "{{ post.date | date: "%d" }}",
         "month" : "{{ post.date | date: "%B" }}",
         "year"  : "{{ post.date | date: "%Y" }}"
      }
    }
    {% unless forloop.last %},{% endunless %}
    {% endfor %}
]

The jQuery Code

function generateRandomPosts()
    {
        $.getJSON("/search.json", function(data) {
            console.log("[search.json loaded for random posts]");

            var postsCount = data.length;
            var posts = data;

            var randomIndexUsed = [];
            var counter = 0;
            var numberOfPosts = 5;

            var divRandomPosts = $("#random_posts");

            divRandomPosts.append('<h2>other posts</h2><hr />');

            while (counter < numberOfPosts)
            {
                var randomIndex = Math.floor(Math.random() * postsCount);

                if (randomIndexUsed.indexOf(randomIndex) == "-1")
                {
                    var postHREF = posts[randomIndex].href;
                    var postTitle = posts[randomIndex].title;

                    if (counter == (numberOfPosts - 1))
                    {
                        divRandomPosts.append('<p><a href="' + postHREF + '">' + postTitle + '</a></p>');
                    }
                    else
                    {
                        divRandomPosts.append('<p><a href="' + postHREF + '">' + postTitle + '</a></p><hr />');
                    }

                    randomIndexUsed.push(randomIndex);

                    counter++;
                }
            }
        });
    }

    $(document).ready(function() {
        generateRandomPosts();
    });

The HTML Markup

<div id="random_posts">
</div>