Фильтр случайных сообщений в 11ty: методы и примеры кода

В этой статье мы рассмотрим различные методы реализации фильтра случайных сообщений в 11ty, популярном генераторе статических сайтов. Мы предоставим примеры кода для каждого метода, что позволит вам реализовать тот, который лучше всего соответствует вашим потребностям. Давайте погрузимся!

Метод 1: случайная сортировка
Один из простых подходов — случайная сортировка массива сообщений каждый раз при создании сайта. Это приведет к разному порядку публикаций в каждой сборке, что фактически создаст фильтр случайных сообщений. Вот пример того, как этого можно добиться в файле конфигурации 11ty:

// .eleventy.js
module.exports = function (eleventyConfig) {
  eleventyConfig.addCollection("randomPosts", function (collectionApi) {
    let posts = collectionApi.getFilteredByTag("post"); // Assuming you have a "post" tag
    // Randomly sort the posts array
    posts.sort(() => Math.random() - 0.5);
    return posts;
  });
};

Метод 2: случайная подгруппа
Другой подход заключается в выборе случайной подгруппы сообщений из доступной коллекции. Этот метод позволяет контролировать количество отображаемых случайных сообщений. Вот пример реализации:

// .eleventy.js
module.exports = function (eleventyConfig) {
  eleventyConfig.addCollection("randomPosts", function (collectionApi) {
    let posts = collectionApi.getFilteredByTag("post"); // Assuming you have a "post" tag
    let numRandomPosts = 5; // Number of random posts to display
    // Shuffle the posts array
    for (let i = posts.length - 1; i > 0; i--) {
      const j = Math.floor(Math.random() * (i + 1));
      [posts[i], posts[j]] = [posts[j], posts[i]];
    }
// Select the first `numRandomPosts` from the shuffled array
    return posts.slice(0, numRandomPosts);
  });
};

Метод 3: Плагин случайных сообщений
Если вы предпочитаете более модульный подход, вы можете создать собственный плагин 11ty специально для обработки случайных сообщений. Вот пример реализации:

// randomPostsPlugin.js
module.exports = function (eleventyConfig) {
  eleventyConfig.addPlugin("randomPosts", function (collectionApi) {
    eleventyConfig.addCollection("randomPosts", function () {
      let posts = collectionApi.getFilteredByTag("post"); // Assuming you have a "post" tag
      // Randomly sort the posts array
      posts.sort(() => Math.random() - 0.5);
      return posts;
    });
  });
};

Чтобы использовать плагин, вам необходимо зарегистрировать его в файле конфигурации 11ty:

// .eleventy.js
const randomPostsPlugin = require("./randomPostsPlugin");
module.exports = function (eleventyConfig) {
  eleventyConfig.addPlugin(randomPostsPlugin);
};

Реализовать фильтр случайных сообщений в 11ty можно различными способами, включая случайную сортировку, выбор случайного подмножества или создание собственного плагина. Выберите метод, который лучше всего соответствует вашим потребностям, и интегрируйте его в свой проект 11ty. Наслаждайтесь динамичностью и интересом своих читателей!

Не забудьте оптимизировать свою веб-страницу для SEO, предоставив соответствующие метатеги, описательные заголовки и хорошо структурированный контент.