Создание страницы индекса тегов
Теперь, когда у вас есть отдельные страницы для каждого тега, давайте создадим ссылки на них.
Приготовьтесь к...
- Добавить новую страницу, используя шаблон маршрутизации
/my-folder/index.astro
- Отобразить список всех ваших уникальных тегов, сделав ссылку на каждую страницу тега
- Обновить ваш сайт, добавив навигационные ссылки на эту новую страницу Теги
Используйте шаблон маршрутизации /folder/index.astro
Чтобы добавить страницу индекса тегов на ваш веб-сайт, вы можете создать новый файл src/pages/tags.astro
.
Однако, поскольку у вас уже есть каталог /tags/
, вы можете воспользоваться другим шаблоном маршрутизации в Astro и хранить все свои файлы, связанные с тегами, вместе.
Попробуйте сами - Создайте страницу индекса тегов
-
Создайте новый файл
index.astro
в каталогеsrc/pages/tags/
. -
Перейдите по адресу
http://localhost:4321/tags
и убедитесь, что ваш сайт теперь содержит страницу по этому URL. Она будет пустой, но она будет существовать. -
Создайте минимальную страницу в
src/pages/tags/index.astro
, которая использует ваш макет. Вы уже делали это раньше!Раскройте, чтобы увидеть шаги
-
Создайте новый компонент страницы в
src/pages/tags/
.Показать имя файла
-
Импортируйте и используйте
<BaseLayout>
.Показать код
-
Определите заголовок страницы и передайте его в ваш макет в качестве атрибута компонента.
Показать код
-
-
Проверьте предварительный просмотр в браузере еще раз, и у вас должна быть отформатированная страница, готовая к добавлению контента!
Создайте массив тегов
Ранее вы отображали элементы в списке из массива с помощью map()
. Как бы вы определили массив всех ваших тегов и затем отобразили их в списке на этой странице?
Посмотрите код
Вы можете сделать это, но вам придется возвращаться к этому файлу и обновлять свой массив каждый раз, когда вы используете новый тег в будущей записи в блоге.
К счастью, у вас уже есть способ получить данные из всех ваших файлов Markdown в одной строке кода, а затем вернуть список всех ваших тегов.
-
В файле
src/pages/tags/index.astro
добавьте строку кода в скрипт frontmatter, которая даст вашей странице доступ к данным из каждого файла блога.md
.Посмотрите код
-
Затем добавьте следующую строку JavaScript в ваш компонент страницы. Это то же самое, что мы использовали в
src/pages/tags/[tag].astro
, чтобы вернуть список уникальных тегов.
Создайте свой список тегов
Вместо создания элементов в неупорядоченном списке на этот раз создайте один <p>
для каждого элемента внутри <div>
. Шаблон должен вам быть знакомым!
-
Добавьте следующий код в ваш шаблон компонента:
В предварительном просмотре в браузере убедитесь, что вы видите свои теги в списке.
-
Чтобы сделать каждый тег ссылкой на свою собственную страницу, добавьте следующую ссылку
<a>
для каждого имени тега:
Добавьте стили к вашему списку тегов
-
Добавьте следующие CSS-классы, чтобы стилизовать как ваш
<div>
, так и каждый<p>
, который будет сгенерирован. Примечание: Astro использует синтаксис HTML для добавления имен классов! -
Определите эти новые CSS-классы, добавив следующий тег
<style>
на этой странице: -
Проверьте предварительный просмотр в браузере по адресу
http://localhost:4321/tags
, чтобы убедиться, что у вас есть новые стили и что каждый из тегов на странице имеет рабочую ссылку на свою собственную страницу тега.
Проверка кода
Вот как должна выглядеть ваша новая страница:
Добавьте эту страницу в вашу навигацию
В данный момент вы можете перейти по адресу http://localhost:4321/tags
и увидеть эту страницу. С этой страницы вы можете переходить по ссылкам на отдельные страницы тегов.
Но вам все еще нужно сделать эти страницы доступными с других страниц вашего веб-сайта.
-
В вашем компоненте
Navigation.astro
добавьте ссылку на эту новую страницу индекса тегов.Покажи мне код
Задание: Включите теги в макет вашей записи блога
Теперь у вас есть весь необходимый код, чтобы также отображать список тегов на каждой странице блога и связывать их со страницами тегов. У вас уже есть готовая работа, которую вы можете использовать повторно!
Следуйте инструкциям ниже, а затем проверьте свою работу, сравнив ее с финальным образцом кода.
- Скопируйте
<div class="tags">
…</div>
и<style>...</style>
изsrc/pages/tags/index.astro
и используйте их внутриMarkdownPostLayout.astro
:
Перед тем, как этот код заработает, вам нужно внести одну небольшую правку в код, который вы вставили в MarkdownPostLayout.astro
. Можете понять, что это за правка?
Дайте мне подсказку
Как другие свойства (например, заголовок, автор и т. д.) записаны в вашем макете шаблона? Как ваш макет получает свойства от отдельной записи блога?
Дайте мне еще одну подсказку!
Чтобы использовать свойства (переданные значения) из файла .md
в вашем макете, например, теги, вам нужно добавить префикс к значению.
Покажите мне код!
Проверка кода: РазметкаПостаMarkdown
Чтобы проверить свою работу, или если вы просто хотите скопировать полный, корректный код в MarkdownPostLayout.astro
, вот как должен выглядеть ваш компонент Astro:
Проверьте свои знания
Сопоставьте каждый файловый путь со вторым файловым путем, который создаст страницу по тому же маршруту.
-
src/pages/categories.astro
-
src/pages/posts.astro
-
src/pages/products/shoes/index.astro