diff --git a/app/Service/SeoMetaResolver.php b/app/Service/SeoMetaResolver.php index a49ff4d..7b415ae 100644 --- a/app/Service/SeoMetaResolver.php +++ b/app/Service/SeoMetaResolver.php @@ -160,9 +160,16 @@ class SeoMetaResolver { $form = Form::whereSlug($this->patternData['slug'])->firstOrFail(); - return [ + $meta = [ 'title' => $form->title . $this->titleSuffix(), ]; + if($form->description){ + $meta['description'] = Str::of($form->description)->limit(160); + } + if($form->cover_picture){ + $meta['image'] = $form->cover_picture; + } + return $meta; } private function getTemplateShowMeta(): array diff --git a/resources/js/pages/forms/show-public.vue b/resources/js/pages/forms/show-public.vue index a9cfc03..4f5c768 100644 --- a/resources/js/pages/forms/show-public.vue +++ b/resources/js/pages/forms/show-public.vue @@ -46,6 +46,7 @@ import { mapState } from 'vuex' import OpenCompleteForm from '../../components/open/forms/OpenCompleteForm' import Cookies from 'js-cookie' import sha256 from 'js-sha256' +import SeoMeta from '../../mixins/seo-meta' const isFrame = window.location !== window.parent.location || window.frameElement @@ -106,6 +107,7 @@ function loadForm (slug) { export default { components: { OpenCompleteForm }, + mixins: [SeoMeta], beforeRouteEnter (to, from, next) { if (window.$crisp) { @@ -172,6 +174,12 @@ export default { metaTitle () { return this.form ? this.form.title : 'Create beautiful forms' }, + metaDescription () { + return (this.form && this.form.description) ? this.form.description.substring(0,160) : null + }, + metaImage () { + return (this.form && this.form.cover_picture) ? this.form.cover_picture : null + }, metaTags () { return (this.form && this.form.can_be_indexed) ? [] : [{ name: 'robots', content: 'noindex' }] }