artists: prevent Google from indexing banned artists.
Prevent search engines from indexing artist pages, wiki pages, and tag searches for banned artists.
This commit is contained in:
@@ -362,6 +362,10 @@ module ApplicationHelper
|
||||
end
|
||||
end
|
||||
|
||||
def noindex
|
||||
content_for(:html_header, tag.meta(name: "robots", content: "noindex"))
|
||||
end
|
||||
|
||||
def atom_feed_tag(title, url = {})
|
||||
content_for(:html_header, auto_discovery_link_tag(:atom, url, title: title))
|
||||
end
|
||||
|
||||
@@ -122,6 +122,7 @@ module PostSets
|
||||
|
||||
def hide_from_crawler?
|
||||
return true if current_page > 50
|
||||
return true if artist.present? && artist.is_banned?
|
||||
return false if query.is_empty_search? || query.is_simple_tag? || query.is_metatag?(:order, :rank)
|
||||
true
|
||||
end
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
<% noindex if @artist.is_banned? %>
|
||||
|
||||
<%= render layout: "show" do %>
|
||||
<div>
|
||||
<%= render "summary", artist: @artist %>
|
||||
|
||||
@@ -14,9 +14,7 @@
|
||||
<% canonical_url root_url(host: Danbooru.config.hostname) %>
|
||||
<% end %>
|
||||
|
||||
<% if @post_set.hide_from_crawler? %>
|
||||
<meta name="robots" content="nofollow,noindex">
|
||||
<% end %>
|
||||
<% noindex if @post_set.hide_from_crawler? %>
|
||||
|
||||
<% if @post_set.has_explicit? %>
|
||||
<meta name="rating" content="adult">
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
<% page_title "#{@wiki_page.pretty_title.titleize} Wiki" %>
|
||||
<% meta_description DText.excerpt(@wiki_page.body) %>
|
||||
|
||||
<% if @wiki_page.artist.present? && @wiki_page.artist.is_banned? %>
|
||||
<% noindex %>
|
||||
<% end %>
|
||||
|
||||
<%= render "secondary_links" %>
|
||||
<%= render "sidebar" %>
|
||||
|
||||
|
||||
@@ -65,6 +65,14 @@ class ArtistsControllerTest < ActionDispatch::IntegrationTest
|
||||
assert_response :success
|
||||
assert_select ".artist-wiki", count: 0
|
||||
end
|
||||
|
||||
should "mark banned artists as noindex" do
|
||||
@artist = create(:artist, is_banned: true)
|
||||
get artist_path(@artist.id)
|
||||
|
||||
assert_response :success
|
||||
assert_select "meta[name=robots][content=noindex]"
|
||||
end
|
||||
end
|
||||
|
||||
context "new action" do
|
||||
|
||||
@@ -112,6 +112,16 @@ class PostsControllerTest < ActionDispatch::IntegrationTest
|
||||
assert_select "#view-artist-link", count: 0
|
||||
end
|
||||
|
||||
should "render for a banned artist tag" do
|
||||
artist = create(:artist, is_banned: true)
|
||||
create(:post, tag_string: artist.name)
|
||||
get posts_path, params: { tags: artist.name }
|
||||
|
||||
assert_response :success
|
||||
assert_select "#show-excerpt-link", count: 1, text: "Artist"
|
||||
assert_select "meta[name=robots][content=noindex]"
|
||||
end
|
||||
|
||||
should "render for a tag with a wiki page" do
|
||||
create(:post, tag_string: "char:fumimi", rating: "s")
|
||||
get posts_path, params: { tags: "fumimi" }
|
||||
|
||||
@@ -121,6 +121,14 @@ class WikiPagesControllerTest < ActionDispatch::IntegrationTest
|
||||
get wiki_page_path("....xml")
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
should "mark banned artists as noindex" do
|
||||
@artist = create(:artist, name: @wiki_page.title, is_banned: true)
|
||||
get wiki_page_path(@wiki_page.title)
|
||||
|
||||
assert_response :success
|
||||
assert_select "meta[name=robots][content=noindex]"
|
||||
end
|
||||
end
|
||||
|
||||
context "show_or_new action" do
|
||||
|
||||
Reference in New Issue
Block a user