From f8b514cdfc48d56aa308790199546f67b2b582d2 Mon Sep 17 00:00:00 2001
From: MoshiKoi <54333972+MoshiKoi@users.noreply.github.com>
Date: Tue, 3 Jan 2023 00:00:55 -0800
Subject: [PATCH 1/3] Add structured data for question pages
---
app/views/layouts/_head.html.erb | 4 ++++
app/views/posts/_schema.html.erb | 27 +++++++++++++++++++++++++++
2 files changed, 31 insertions(+)
create mode 100644 app/views/posts/_schema.html.erb
diff --git a/app/views/layouts/_head.html.erb b/app/views/layouts/_head.html.erb
index c9bf20abd..0c95870ef 100644
--- a/app/views/layouts/_head.html.erb
+++ b/app/views/layouts/_head.html.erb
@@ -67,3 +67,7 @@
" />
<% end %>
+
+<% if @post %>
+ <%= render 'posts/schema', post: @post %>
+<% end %>
\ No newline at end of file
diff --git a/app/views/posts/_schema.html.erb b/app/views/posts/_schema.html.erb
new file mode 100644
index 000000000..13774c93a
--- /dev/null
+++ b/app/views/posts/_schema.html.erb
@@ -0,0 +1,27 @@
+<% if post && post.post_type.name == 'Question' %>
+ <% suggested_answers = @children.filter { |answer| answer.score > 0.5 } %>
+
+<% end %>
\ No newline at end of file
From ee9f99d7beae82e3f3fb7aed99caaaa974045fd2 Mon Sep 17 00:00:00 2001
From: Matthew Miner
Date: Thu, 29 Jun 2023 16:49:43 -0500
Subject: [PATCH 2/3] Only show schema data when showing post
---
app/views/layouts/_head.html.erb | 4 ++--
app/views/posts/show.html.erb | 4 ++++
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/app/views/layouts/_head.html.erb b/app/views/layouts/_head.html.erb
index 0c95870ef..bda586af5 100644
--- a/app/views/layouts/_head.html.erb
+++ b/app/views/layouts/_head.html.erb
@@ -68,6 +68,6 @@
" />
<% end %>
-<% if @post %>
- <%= render 'posts/schema', post: @post %>
+<% if content_for? :schema %>
+ <%= yield :schema %>
<% end %>
\ No newline at end of file
diff --git a/app/views/posts/show.html.erb b/app/views/posts/show.html.erb
index c25a17c03..b968e7b71 100644
--- a/app/views/posts/show.html.erb
+++ b/app/views/posts/show.html.erb
@@ -17,6 +17,10 @@
" />
<% end %>
+<% content_for :schema do %>
+ <%= render 'posts/schema', post: @post %>
+<% end %>
+
<%= render 'posts/expanded', post: @post, float_notice: false %>
<% if @post.post_type.has_answers %>
From dfbd4caa7000698916839cb58edef95d344b2052 Mon Sep 17 00:00:00 2001
From: Matthew Miner
Date: Thu, 29 Jun 2023 16:50:15 -0500
Subject: [PATCH 3/3] Strip text tags
---
app/views/posts/_schema.html.erb | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/views/posts/_schema.html.erb b/app/views/posts/_schema.html.erb
index 13774c93a..4db9af843 100644
--- a/app/views/posts/_schema.html.erb
+++ b/app/views/posts/_schema.html.erb
@@ -7,7 +7,7 @@
"mainEntity": {
"@type": "Question",
"name": "<%= @post.title %>",
- "text": "<%= @post.body.gsub(/\r?\n/, '') %>",
+ "text": "<%= strip_tags(@post.body).gsub(/\r?\n/, '\n') %>",
"answerCount": <%= @children&.length || 0 %>,
"upvoteCount": <%= @post.upvote_count %>,
"suggestedAnswer": [
@@ -15,7 +15,7 @@
<% if i > 0 then %>,<% end %>
{
"@type": "Answer",
- "text": "<%= answer.body.gsub(/\r?\n/, '') %>",
+ "text": "<%= strip_tags(answer.body).gsub(/\r?\n/, '\n') %>",
"upvoteCount": <%= answer.upvote_count %>,
"url": "<%= post_url(answer) %>"
}