]> source.dussan.org Git - gitea.git/commitdiff
Improve opengraph previews (#26851)
authorLinus Groh <mail@linusgroh.de>
Fri, 1 Sep 2023 16:59:24 +0000 (18:59 +0200)
committerGitHub <noreply@github.com>
Fri, 1 Sep 2023 16:59:24 +0000 (16:59 +0000)
Add more useful Open Graph metadata for commit and file URLs:

- Set `og:title` to the page title, which is a concise summary in both
cases (`<commit message> ยท <commit hash>` and `<filename> at <branch>`,
respectively)
- Set `og:description` to the commit message body, if available
- Set `og:url` to the relevant URLs instead of the repo URL

Also move the relevant meta tags into a separate template as they now
take up the majority of the base head template.

templates/base/head.tmpl
templates/base/head_opengraph.tmpl [new file with mode: 0644]

index 8eebaebd704e3f231fd4ca4bbb0ae462eb87c611..c3645209cd6043405c2b768ba831fd1e41c692f0 100644 (file)
                        .ui.secondary.menu .dropdown.item > .menu { margin-top: 0; }
                </style>
        </noscript>
-{{if .PageIsUserProfile}}
-       <meta property="og:title" content="{{.ContextUser.DisplayName}}">
-       <meta property="og:type" content="profile">
-       <meta property="og:image" content="{{.ContextUser.AvatarLink ctx}}">
-       <meta property="og:url" content="{{.ContextUser.HTMLURL}}">
-       {{if .ContextUser.Description}}
-               <meta property="og:description" content="{{.ContextUser.Description}}">
-       {{end}}
-{{else if .Repository}}
-       {{if .Issue}}
-               <meta property="og:title" content="{{.Issue.Title}}">
-               <meta property="og:url" content="{{.Issue.HTMLURL}}">
-               {{if .Issue.Content}}
-                       <meta property="og:description" content="{{.Issue.Content}}">
-               {{end}}
-       {{else}}
-               <meta property="og:title" content="{{.Repository.Name}}">
-               <meta property="og:url" content="{{.Repository.HTMLURL}}">
-               {{if .Repository.Description}}
-                       <meta property="og:description" content="{{.Repository.Description}}">
-               {{end}}
-       {{end}}
-       <meta property="og:type" content="object">
-       {{if (.Repository.AvatarLink ctx)}}
-               <meta property="og:image" content="{{.Repository.AvatarLink ctx}}">
-       {{else}}
-               <meta property="og:image" content="{{.Repository.Owner.AvatarLink ctx}}">
-       {{end}}
-{{else}}
-       <meta property="og:title" content="{{AppName}}">
-       <meta property="og:type" content="website">
-       <meta property="og:image" content="{{AssetUrlPrefix}}/img/logo.png">
-       <meta property="og:url" content="{{AppUrl}}">
-       <meta property="og:description" content="{{MetaDescription}}">
-{{end}}
-       <meta property="og:site_name" content="{{AppName}}">
+       {{template "base/head_opengraph" .}}
        {{template "base/head_style" .}}
        {{template "custom/header" .}}
 </head>
diff --git a/templates/base/head_opengraph.tmpl b/templates/base/head_opengraph.tmpl
new file mode 100644 (file)
index 0000000..fc3958b
--- /dev/null
@@ -0,0 +1,42 @@
+{{if .PageIsUserProfile}}
+       <meta property="og:title" content="{{.ContextUser.DisplayName}}">
+       <meta property="og:type" content="profile">
+       <meta property="og:image" content="{{.ContextUser.AvatarLink ctx}}">
+       <meta property="og:url" content="{{.ContextUser.HTMLURL}}">
+       {{if .ContextUser.Description}}
+               <meta property="og:description" content="{{.ContextUser.Description}}">
+       {{end}}
+{{else if .Repository}}
+       {{if .Issue}}
+               <meta property="og:title" content="{{.Issue.Title}}">
+               <meta property="og:url" content="{{.Issue.HTMLURL}}">
+               {{if .Issue.Content}}
+                       <meta property="og:description" content="{{.Issue.Content}}">
+               {{end}}
+       {{else if or .PageIsDiff .IsViewFile}}
+               <meta property="og:title" content="{{.Title}}">
+               <meta property="og:url" content="{{AppUrl}}{{.Link}}">
+               {{if and .PageIsDiff (IsMultilineCommitMessage .Commit.Message)}}
+                       <meta property="og:description" content="{{RenderCommitBody $.Context .Commit.Message $.RepoLink $.Repository.ComposeMetas}}">
+               {{end}}
+       {{else}}
+               <meta property="og:title" content="{{.Repository.Name}}">
+               <meta property="og:url" content="{{.Repository.HTMLURL}}">
+               {{if .Repository.Description}}
+                       <meta property="og:description" content="{{.Repository.Description}}">
+               {{end}}
+       {{end}}
+       <meta property="og:type" content="object">
+       {{if (.Repository.AvatarLink ctx)}}
+               <meta property="og:image" content="{{.Repository.AvatarLink ctx}}">
+       {{else}}
+               <meta property="og:image" content="{{.Repository.Owner.AvatarLink ctx}}">
+       {{end}}
+{{else}}
+       <meta property="og:title" content="{{AppName}}">
+       <meta property="og:type" content="website">
+       <meta property="og:image" content="{{AssetUrlPrefix}}/img/logo.png">
+       <meta property="og:url" content="{{AppUrl}}">
+       <meta property="og:description" content="{{MetaDescription}}">
+{{end}}
+<meta property="og:site_name" content="{{AppName}}">