Do you use server side rendering? If not you might have to use a different approach to add these meta tags in the page head.
Feb 26, 2024
5
Level 6
why inertia head did not work for twitter
Hi, I added below code in the template and import the Head component from inertia. The meta tags are in the head but twitter card did not appear when the page is shared.
<template>
<Head>
<title> {{ story.title }}</title>
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@makerstorage">
<meta name="twitter:title" :content="story.title">
<meta name="twitter:image" :content="imageUrl">
</Head>
...
<script setup>
import { Head } from '@inertiajs/vue3'
Level 6
thanks @gych I want to share what I did for the others
in app.blade.php
@if(isset($page['props']['event']))
<meta name="twitter:card" content="{{ (isset($page['props']['event']['card'])) ? $page['props']['event']['card'] : '' }}" />
<meta name="twitter:site" content="{{ (isset($page['props']['event']['site'])) ? $page['props']['event']['site'] : '' }}" />
<meta property="og:url" content="{{ (isset($page['props']['event']['url'])) ? $page['props']['event']['url'] : '' }}" />
<meta property="og:title" content="{{ (isset($page['props']['event']['twitterTitle'])) ? $page['props']['event']['twitterTitle'] : '' }}" />
<meta property="og:description" content="Story created by story-blocks" />
<meta property="og:image" content="{{ (isset($page['props']['event']['image'])) ? $page['props']['event']['image'] : '' }}" />
@endif
then in the controller
return Inertia::render('Story', [
'event' => [
'card' => 'summary',
'site' => '@makerstorage',
'url' => url('/') . '/stories/' . $story->story_id,
'twitterTitle' => $story->title,
'image' => url('/') . $url,
],
'story' => $story,
'imageUrl' => $url
]);
Please or to participate in this conversation.