#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:
- коллекция является бета-версией, поэтому не готова к производству. Просто не используйте их, поскольку они могут сломаться без предупреждения.
- данные не создают страницы, и если вы хотите обратиться к файлу данных со страницы / публикации, вам нужно выполнить цикл, чтобы получить соответствие между site.data.client и page.client или post.client. Это вариант, но у вас будут данные на странице / публикации и в файлах данных. повсюду.
- создание страницы / публикации с использованием пользовательских переменных 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? Я не уверен, чего мне не хватает.