[pl][blog] expose relevant posts on /neutratywy and /osobatywy

This commit is contained in:
Andrea Vos 2022-08-20 11:06:39 +02:00
parent f3e52940bc
commit 7037379c8b
4 changed files with 47 additions and 11 deletions

View File

@ -1,6 +1,6 @@
<template>
<div class="columnist-wall row">
<div v-for="post in posts" class="columnist-column col-12 col-sm-6 col-md-4 mb-3">
<div v-for="post in postsFull" class="columnist-column col-12 col-sm-6 col-md-4 mb-3">
<div class="card shadow">
<nuxt-link v-if="post.hero" :to="generateLink(post.slug)" class="">
<img :src="post.hero" class="w-100"/>
@ -47,15 +47,35 @@
}
}
return { shortcuts };
return {
shortcuts,
postsFull: [],
};
},
mounted() {
async mounted() {
this.postsFull = await this.loadFullPosts(this.posts);
console.log(this.postsFull);
if (!process.client) { return; }
const columnist = new Columnist(this.$el);
columnist.start();
},
methods: {
async loadFullPosts(posts) {
if (!posts.length) {
return [];
}
if (typeof(posts[0]) === 'object') {
return posts;
}
return await this.$axios.$get(`/blog`, {
params: {
slugs: posts,
},
})
},
generateLink(slug) {
return this.shortcuts[slug] !== undefined
? `/${this.shortcuts[slug]}`

View File

@ -18,6 +18,10 @@
</figure>
</div>
<section>
<BlogEntriesList :posts="['etymologia-odmiana-neutratywów', 'neutratywy-zdrobnienia']"/>
</section>
<details class="border mb-3">
<summary class="bg-light p-3">
<h4 class="h5 d-inline"><T>nouns.neuterNouns.extended.header</T></h4>

View File

@ -13,6 +13,10 @@
<p><Share :title="$t('nouns.personNouns.header')"/></p>
</div>
<section>
<BlogEntriesList :posts="['krótka-notka-o-osobatywach', 'osobatywy-nie-takie-straszne']"/>
</section>
<details open class="border mb-3">
<summary class="bg-light p-3">
<h4 class="h5 d-inline"><T>nouns.examples</T></h4>

View File

@ -66,18 +66,26 @@ router.get('/blog', handleErrorAsync(async (req, res) => {
return posts;
})
if (req.query.shortcuts !== undefined) {
const postsShortcuts = [];
if (global.config.blog && global.config.blog.shortcuts) {
for (let slug of Object.values(global.config.blog.shortcuts)) {
postsShortcuts.push(posts.filter(p => p.slug === slug)[0])
return res.json(posts.filter(post => {
if (req.query.shortcuts !== undefined) {
if (!global.config.blog || !global.config.blog.shortcuts) {
return false;
}
if (!Object.values(global.config.blog.shortcuts).includes(post.slug)) {
return false;
}
}
return res.json(postsShortcuts);
}
if (req.query.slugs !== undefined) {
const slugs = Array.isArray(req.query.slugs) ? req.query.slugs : [req.query.slugs];
if (!slugs.includes(post.slug)) {
return false;
}
}
return res.json(posts);
return true;
}));
}));
export default router;