From bd61752be2f574323b05d1d0aee0df55adf9a74e Mon Sep 17 00:00:00 2001 From: Yassine Doghri <yassine@doghri.fr> Date: Mon, 10 Jan 2022 16:05:16 +0000 Subject: [PATCH] feat(meta-tags): add activitypub alternate links to podcast, episode, comment and post pages --- app/Helpers/seo_helper.php | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/app/Helpers/seo_helper.php b/app/Helpers/seo_helper.php index 6c4d9e8325..253711c92a 100644 --- a/app/Helpers/seo_helper.php +++ b/app/Helpers/seo_helper.php @@ -44,7 +44,12 @@ if (! function_exists('get_podcast_metatags')) { ->og('image:width', (string) config('Images')->podcastCoverSizes['large']['width']) ->og('image:height', (string) config('Images')->podcastCoverSizes['large']['height']) ->og('locale', $podcast->language_code) - ->og('site_name', service('settings')->get('App.siteName')); + ->og('site_name', service('settings')->get('App.siteName')) + ->push('link', [ + 'rel' => 'alternate', + 'type' => 'application/activity+json', + 'href' => url_to('podcast-activity', $podcast->handle), + ]); if ($podcast->payment_pointer) { $metatags->meta('monetization', $podcast->payment_pointer); @@ -94,7 +99,12 @@ if (! function_exists('get_episode_metatags')) { ->twitter('audio:artist_name', $episode->podcast->owner_name) ->twitter('player', $episode->getEmbedUrl('light')) ->twitter('player:width', (string) config('Embed')->width) - ->twitter('player:height', (string) config('Embed')->height); + ->twitter('player:height', (string) config('Embed')->height) + ->push('link', [ + 'rel' => 'alternate', + 'type' => 'application/activity+json', + 'href' => url_to('episode', $episode->podcast->handle, $episode->slug), + ]); if ($episode->podcast->payment_pointer) { $metatags->meta('monetization', $episode->podcast->payment_pointer); @@ -149,7 +159,12 @@ if (! function_exists('get_post_metatags')) { ->description($post->message) ->image($post->actor->avatar_image_url) ->canonical((string) current_url()) - ->og('site_name', service('settings')->get('App.siteName')); + ->og('site_name', service('settings')->get('App.siteName')) + ->push('link', [ + 'rel' => 'alternate', + 'type' => 'application/activity+json', + 'href' => url_to('post', $post->actor->username, $post->id), + ]); return $metatags->__toString() . PHP_EOL . $schema->__toString(); } @@ -183,7 +198,17 @@ if (! function_exists('get_episode_comment_metatags')) { ->description($episodeComment->message) ->image($episodeComment->actor->avatar_image_url) ->canonical((string) current_url()) - ->og('site_name', service('settings')->get('App.siteName')); + ->og('site_name', service('settings')->get('App.siteName')) + ->push('link', [ + 'rel' => 'alternate', + 'type' => 'application/activity+json', + 'href' => url_to( + 'episode-comment', + $episodeComment->actor->username, + $episodeComment->episode->slug, + $episodeComment->id + ), + ]); return $metatags->__toString() . PHP_EOL . $schema->__toString(); } -- GitLab