'With vue-head head title is added on events page
I added https://github.com/ktquez/vue-head to vuejs app for head settings and it works differently I expect. When I open home page I have in title : “home page title” But When I open events page I have in title : “events title | home page title”
I define head on events page :
head: {
title: function () {
return {
inner: “events title", id: 'app_head',
}
},
meta: function () {
return [
{ name: 'description', content: 'Events description ' }
]
},
link: [
{ rel: 'canonical', href: '/', id: 'canonical' },
],
},
Looks like head title is added on events page and I do not need this. How can I fix it ?
MODIFIED BLOCK: I found a possible decision if in source file /node_modules/vue-head/vue-head.js To set empty init values:
},
var opt = {
complement: '',
separator: ''
}
And I do not see any possibility to set default values and it is not clear why my settings are not applied. My page has :
import VueHead from 'vue-head' // https://github.com/ktquez/vue-head
Vue.use(VueHead)
export default {
name: 'eventsTimelinePage',
mixins: [appMixin],
components: {},
data() {
return {
site_name:'!!', // I need to set to head these values
site_heading:'??',
site_description:'TTT',
}
}, // data () {
head: {
title: function () {
return { // Use page values for head
inner: 'Events of ' + this.site_name, id: 'app_head',
complement: '', // THAT IS NOT APPLIED
separator: '', // THAT IS NOT APPLIED
}
},
meta: function () {
return [
{
name: 'description',
content: 'Events of '+ this.site_name+' : '+ this.site_description,
id: 'description'
}
]
},
link: [
{ rel: 'canonical', href: '/', id: 'canonical' },
],
}, // head: {
created() {
}, // created() {
mounted() {
this.setAppTitle('Events', 'Events', bus)
retrieveAppDictionaries('eventsTimelinePage', ['events_per_page', 'site_name', 'site_heading', 'site_description']) // I read the data from db
bus.$on('appDictionariesRetrieved', (data) => {
if (data.request_key === 'eventsTimelinePage') {
this.events_per_page = data.events_per_page
this.site_name = data.site_name // ASSIGN VALUES FROM DB
this.site_heading = data.site_heading
this.site_description = data.site_description
this.$emit('updateHead') // REFRESH HEAD PROPS
}
})
this.loadEventsTimeline()
}, // mounted() {
Thanks!
Solution 1:[1]
If you check their documentation, there's a 'custom title' section. In there they talk about 'separator' and 'complement' having defaults - sounds like you'll need to set those to empty strings to get rid of them.
Solution 2:[2]
I made my own simple script
const useHead = (props) => {
const { title, meta: metas } = props
document.title = title
metas.forEach(({ name, property, content }) => {
if (name) document.head.querySelector(`meta[name="${name}"]`).content = content
if (property) document.head.querySelector(`meta[property="${property}"]`).content = content
})
}
export default useHead
<template>
...
</template>
<script>
import useHead from '../mixins/useHead';
export default {
name: '...',
mounted() {
useHead({ title: '...' meta: [...] })
}
}
</script>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | coedycode |
Solution 2 | Samculo |