Files
vue-journal-layer/app/components/Journal/Pagination.vue
Jakub Zych 98904b8fbd feat: breadcrumbs, CMS pagination and pillar content on page one
- post, index, category, tag and author pages render <SeoBreadcrumbs>
  at the top of their content while journal.breadcrumbs is on (default);
  false leaves the trail to the site's layout, the BreadcrumbList data
  is unchanged
- JournalPagination renders <SeoPagination class-prefix="journal-pagination">
  with the journal's labels: the same class names, plus page 1, the last
  page, gap items, aria labels and head rel prev/next, with links in the
  CMS's pagination form
- with vue-seo-layer's seo.pagination.form 'path' the module registers
  <listing>/<segment>/:page routes (journalPagedRoutes), and the listing
  pages read the page from the :page param or ?page (pageFromRoute)
- the category pillar text renders on page 1 only, the description on
  every page; an h1 in it becomes h2 while the category row's
  content_h1_to_h2 is on (absent counts as on)
2026-11-04 13:54:46 +01:00

20 lines
811 B
Vue

<script setup lang="ts">
// Previous/next, page 1, the last page and a window of page links for the
// current listing: vue-seo-layer's <SeoPagination> (UI-SPEC L2) with the
// journal's labels and class names (journal-pagination, __prev, __pages,
// __current, __gap, __next), so app CSS keeps applying. Links follow the
// CMS's pagination form (?page=N or the path form) and page 1 is the
// unnumbered URL; the head gets rel prev/next.
defineProps<{ current: number; last: number }>()
const { t } = useI18n()
const labels = computed(() => ({
label: t('journal.pagination.label'),
previous: t('journal.pagination.previous'),
next: t('journal.pagination.next'),
}))
</script>
<template>
<SeoPagination class-prefix="journal-pagination" :current="current" :last="last" :labels="labels" />
</template>