From 75ebf882953c0957cb15ab7eec22d0fa53082325 Mon Sep 17 00:00:00 2001 From: Tinuola 'Tinu' Awopetu <24995224+tinuola@users.noreply.github.com> Date: Wed, 15 Jan 2025 14:46:15 -0800 Subject: [PATCH] feat: APPS 3108 Add Article Listing GQL query (#95) * wip: add gql query for page data * wip: load placeholder page data, add useHead * Update article queries with listing image field --------- Co-authored-by: tinuola --- gql/queries/FTVAArticleDetail.gql | 4 +++ gql/queries/FTVAArticleList.gql | 31 ++++++++++++++++--- pages/blog/index.vue | 51 +++++++++++++++++++++++-------- 3 files changed, 70 insertions(+), 16 deletions(-) diff --git a/gql/queries/FTVAArticleDetail.gql b/gql/queries/FTVAArticleDetail.gql index bbe5226d..2b2e0b3c 100644 --- a/gql/queries/FTVAArticleDetail.gql +++ b/gql/queries/FTVAArticleDetail.gql @@ -11,6 +11,10 @@ query FTVAArticleDetail($slug: [String!]) { title uri + ftvaImage { + ...Image + } + imageCarousel { ... on imageCarousel_imageCarousel_BlockType { image { diff --git a/gql/queries/FTVAArticleList.gql b/gql/queries/FTVAArticleList.gql index 54be6d8e..a6e7b0d0 100644 --- a/gql/queries/FTVAArticleList.gql +++ b/gql/queries/FTVAArticleList.gql @@ -1,9 +1,32 @@ -query FTVAArticleList { - entries(section: ["ftvaArticle"], orderBy: "postDate") { +#import "../gql/fragments/Image.gql" + +query FTVAArticleList($slug: [String!]) { + entry(section: ["ftvaListingArticles"], slug: $slug) { + id + typeHandle + sectionHandle + title: titleGeneral + summary + ftvaFeaturedArticles { + title + postDate + ftvaHomepageDescription + uri + ftvaImage { + ...Image + } + } + } + entries(section: ["ftvaArticle"], orderBy: "postDate DESC") { typeHandle id title - to: slug - text: summary + postDate + ftvaHomepageDescription + uri + ftvaImage { + ...Image + } } } + diff --git a/pages/blog/index.vue b/pages/blog/index.vue index 9855c21b..b48a24f6 100644 --- a/pages/blog/index.vue +++ b/pages/blog/index.vue @@ -8,6 +8,9 @@ import _get from 'lodash/get' // GQL import FTVAArticleList from '../gql/queries/FTVAArticleList.gql' +// COMPOSABLE +import { useContentIndexer } from '~/composables/useContentIndexer' + const { $graphql } = useNuxtApp() const { data, error } = await useAsyncData('article-list', async () => { @@ -30,15 +33,34 @@ if (!data.value.entries) { }) } -const page = ref(_get(data.value, 'entries', {})) - -// const recent = ref(_get(data.value, 'entries[0]', {})) - -// const people = ref(_get(data.value, 'entries[0]', {})) +// This is creating an index of the content for ES search +if (data.value.entry && import.meta.prerender) { + try { + // Call the composable to use the indexing function + const { indexContent } = useContentIndexer() + // Index the event data using the composable during static build + await indexContent(data.value.entry, route.params.slug) + // console.log('Article indexed successfully during static build') + } catch (error) { + console.error('FAILED TO INDEX ARTICLES during static build:', error) + } +} -// const interviews = ref(_get(data.value, 'entries[0]', {})) +const page = ref(_get(data.value, 'entry', {})) +const featuredArticles = page.value.ftvaFeaturedArticles +const articleList = ref(_get(data.value, 'entries', {})) +console.log(data.value) -// const preservation_restoration = ref(_get(data.value, 'entries[0]', {})) +useHead({ + title: page.value ? page.value.title : '... loading', + meta: [ + { + hid: 'description', + name: 'description', + content: removeTags(page.value.summary) + } + ] +})