Jekyll для портфолио с использованием данных, коллекций и т.д.

#jekyll #portfolio

#Джекилл #Портфолио

Вопрос:

Я использую Jekyll для создания портфолио, демонстрирующего мои дизайнерские работы. Я запутался в том, должен ли я использовать файл «данных» (yml) и просматривать содержимое в своих шаблонах или использовать «коллекции».

Мой контент структурирован следующим образом:

Домашняя страница:

  • Рекомендуемый элемент
  • Клиентский герой 1
  • Клиентский герой 2
  • Клиентский герой 3
  • Клиентский герой 4
  • Клиентский герой 5

Все они ссылаются на соответствующую страницу «Клиента», где у меня будут изображения в формате JPG в том же формате для всех тематических исследований.

Я не понимаю, как наилучшим образом использовать данные, коллекции и т. Д. Для создания моего сайта, сохраняя при этом максимально эффективное обновление.

Мое текущее решение использует _data / projects.yml, где я определил для 5 клиентов:

  • категория: Подача
  • description: «Lorem Ipsum Dolar Erat»
  • название: «Клиент Джон Смит»
  • краткое имя: «Джон-Смит»
  • опубликовать: false
  • рекомендуемый: верно

Все это повторяется и отображается на главной странице. Теперь я могу создавать каждый пост самостоятельно и добавлять контент вручную, но я считаю, что есть лучший способ. Как я могу использовать коллекции и / или несколько отдельных файлов данных проекта, чтобы наилучшим образом решить эту проблему?

Моя идея заключалась бы в определении содержимого в yml или файлах данных для каждого отдельного клиента и наличии 10 изображений, пронумерованных от 1 до 10, которые автоматически вводятся из / client name / в макет клиента.

Комментарии:

1. К сожалению, данные не могут быть выведены на страницы, см.: github.com/jekyll/jekyll/issues/2983 . Надеюсь, что это может измениться в будущем…

Ответ №1:

  1. коллекция является бета-версией, поэтому не готова к производству. Просто не используйте их, поскольку они могут сломаться без предупреждения.
  2. данные не создают страницы, и если вы хотите обратиться к файлу данных со страницы / публикации, вам нужно выполнить цикл, чтобы получить соответствие между site.data.client и page.client или post.client. Это вариант, но у вас будут данные на странице / публикации и в файлах данных. повсюду.
  3. создание страницы / публикации с использованием пользовательских переменных front-matter гарантирует, что вы получите все данные в одном месте. И вы можете легко перебирать переменные страницы / публикации, чтобы добиться цели.

Я предпочитаю #3 и в любом client/clientName.html Я лично делаю :

 ---
category: Pitch
description: "Lorem Ipsum Dolar Erat"
title: "Client John Smith"
shortname: "john-smith"
publish: false
featured: true
img:
    - img-02.jpg
    - img-03.jpg
---
{% include _client.html %}
  

Вот и все: все в одном месте.
И на домашней странице вы можете выполнить цикл с :

 {% for page in site.pages %}
    {% if page.category == 'Pitch' and page.featured = 'true' %}
  

А также цикл по странице / post.img

Идея состоит в том, чтобы собрать все в одном месте. Но это действительно зависит от вас.

Счастливый Джекилл!

Комментарии:

1. Хорошая идея. Я слишком много думал над решением. Чтобы было ясно, вы предлагаете отдельный client.html для каждого клиента с соответствующими метаданными? Для чего нужно включить? Разве я не использовал бы layout: client?

2. Да, по одной странице на клиента. Включить включает _includes/_client.html . Макет заботится обо всей структуре страницы. Если для создаваемого контента требуется особая структура страницы, выберите другой макет. Если нет, используйте включить, чтобы избежать ненужного дублирования кода.

3. Я последовал за ответом — он работает хорошо. Одна вещь, которую я не получаю, — это YAML для clientName.html файлы. Я включаю _client.html но «макет» не отображается. Нужно ли мне «включать» папку «клиенты» в мой config.yml, чтобы она отображалась как разметка jekyll? Я не уверен, чего мне не хватает.