diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index a361712ed..c73bf61f1 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -269,26 +269,34 @@ module ApplicationHelper end.to_h end - def page_title(title = nil) + def page_title(title = nil, suffix: "| #{Danbooru.config.app_name}") if title.present? - content_for(:page_title) { "#{title} | #{Danbooru.config.app_name}" } + content_for(:page_title) { "#{title} #{suffix}".strip } elsif content_for(:page_title).present? content_for(:page_title) elsif params[:action] == "index" - "#{params[:controller].titleize} | #{Danbooru.config.app_name}" + "#{params[:controller].titleize} #{suffix}" elsif params[:action] == "show" - "#{params[:controller].singularize.titleize} | #{Danbooru.config.app_name}" + "#{params[:controller].singularize.titleize} #{suffix}" elsif params[:action] == "new" - "New #{params[:controller].singularize.titleize} | #{Danbooru.config.app_name}" + "New #{params[:controller].singularize.titleize} #{suffix}" elsif params[:action] == "edit" - "Edit #{params[:controller].singularize.titleize} | #{Danbooru.config.app_name}" + "Edit #{params[:controller].singularize.titleize} #{suffix}" elsif params[:action] == "search" - "Search #{params[:controller].titleize} | #{Danbooru.config.app_name}" + "Search #{params[:controller].titleize} #{suffix}" else "#{Danbooru.config.app_name}/#{params[:controller]}" end end + def meta_description(description = nil) + if description.present? + content_for(:meta_description) { description } + elsif content_for(:meta_description).present? + content_for(:meta_description) + end + end + def show_moderation_notice? CurrentUser.can_approve_posts? && (cookies[:moderated].blank? || Time.at(cookies[:moderated].to_i) < 72.hours.ago) end diff --git a/app/helpers/wiki_pages_helper.rb b/app/helpers/wiki_pages_helper.rb index 8f830f47c..4adc6c319 100644 --- a/app/helpers/wiki_pages_helper.rb +++ b/app/helpers/wiki_pages_helper.rb @@ -1,7 +1,7 @@ module WikiPagesHelper def wiki_page_excerpt(wiki_page) text = strip_dtext(wiki_page.body).split(/\r\n|\r|\n/).first - truncate(text, length: 160) + text.truncate(160) end def wiki_page_other_names_list(wiki_page) diff --git a/app/logical/post_sets/post.rb b/app/logical/post_sets/post.rb index a0bc74479..88cd0ba36 100644 --- a/app/logical/post_sets/post.rb +++ b/app/logical/post_sets/post.rb @@ -17,7 +17,7 @@ module PostSets end def humanized_tag_string - tag_array.slice(0, 25).join(" ").tr("_", " ") + tag_array.map { |tag| tag.tr("_", " ").titleize }.to_sentence end def has_blank_wiki? diff --git a/app/presenters/post_presenter.rb b/app/presenters/post_presenter.rb index 3980dc809..8c4af0d38 100644 --- a/app/presenters/post_presenter.rb +++ b/app/presenters/post_presenter.rb @@ -160,10 +160,6 @@ class PostPresenter < Presenter PostPresenter.preview(@post) end - def humanized_tag_string - @post.tag_string.split(/ /).slice(0, 25).join(", ").tr("_", " ") - end - def humanized_essential_tag_string @humanized_essential_tag_string ||= tag_set_presenter.humanized_essential_tag_string(default: "##{@post.id}") end diff --git a/app/views/layouts/default.html.erb b/app/views/layouts/default.html.erb index 0b3be0703..92f171232 100644 --- a/app/views/layouts/default.html.erb +++ b/app/views/layouts/default.html.erb @@ -48,7 +48,7 @@ "@context": "http://schema.org", "@type": "WebSite", "name": "<%= Danbooru.config.app_name %>", - "alternateName": "<%= Danbooru.config.description %>", + "alternateName": "Anime Image Board", "url" : "<%= root_url %>" } @@ -76,6 +76,11 @@ <%= tag.meta name: "twitter:title", content: page_title %> <%= tag.meta name: "og:title", content: page_title %> + <% if meta_description.present? %> + <%= tag.meta name: "description", content: meta_description %> + <%= tag.meta name: "og:description", content: meta_description %> + <%= tag.meta name: "twitter:description", content: meta_description %> + <% end %> <%= yield :html_header %> <%= raw Danbooru.config.custom_html_header_content %> diff --git a/app/views/posts/index.html.erb b/app/views/posts/index.html.erb index 9c29976ea..2c03d877b 100644 --- a/app/views/posts/index.html.erb +++ b/app/views/posts/index.html.erb @@ -58,20 +58,6 @@ <%= render "posts/partials/common/secondary_links" %> <% end %> -<% content_for(:page_title) do %> - <% if @post_set.tag_string.present? %> - <%= @post_set.humanized_tag_string %> - <%= Danbooru.config.app_name %> - <% else %> - <%= Danbooru.config.app_name %> - <% end %> -<% end %> - <% content_for(:html_header) do %> - <%= tag.link href: posts_path(format: "atom", tags: params[:tags]), rel: "alternate", title: "ATOM", type: "application/atom+xml" %> - <%= tag.link rel: "next", href: next_page_url %> - <% if prev_page_url %> - <%= tag.link rel: "prev", href: prev_page_url %> - <% end %> - <%= missed_post_search_count_js %> <%= render "posts/partials/index/seo_meta_tags" %> <% end %> diff --git a/app/views/posts/partials/index/_seo_meta_tags.html.erb b/app/views/posts/partials/index/_seo_meta_tags.html.erb index feef48d51..a9d984bcc 100644 --- a/app/views/posts/partials/index/_seo_meta_tags.html.erb +++ b/app/views/posts/partials/index/_seo_meta_tags.html.erb @@ -1,3 +1,18 @@ +<% if @post_set.is_empty_tag? %> + <% page_title("#{Danbooru.config.app_name}: Anime Image Board", suffix: nil) %> + <% meta_description("#{Danbooru.config.canonical_app_name} is the original anime image 'booru. Find over 3.75 million anime pictures categorized by over 100 million tags.") %> +<% else %> + <% page_title("#{@post_set.humanized_tag_string} Art") %> + <% meta_description("Find over #{number_with_delimiter(@post_set.post_count)} #{@post_set.humanized_tag_string} images on #{Danbooru.config.app_name}. #{wiki_page_excerpt(@post_set.wiki_page) if @post_set.wiki_page}") %> +<% end %> + +<%= tag.link href: posts_path(format: "atom", tags: params[:tags]), rel: "alternate", title: "ATOM", type: "application/atom+xml" %> +<%= tag.link rel: "next", href: next_page_url %> +<% if prev_page_url %> + <%= tag.link rel: "prev", href: prev_page_url %> +<% end %> +<%= missed_post_search_count_js %> + <% if @post_set.hide_from_crawler? %> <% end %> @@ -8,20 +23,6 @@ <%= tag.meta name: "canonical", content: posts_url(tags: params[:tags], host: Danbooru.config.hostname, protocol: "https") %> -<% if @post_set.is_single_tag? %> - <% "Find #{@post_set.post_count} images of #{@post_set.humanized_tag_string.titleize} on #{Danbooru.config.app_name}".tap do |desc| %> - <%= tag.meta name: "description", content: desc %> - <%= tag.meta name: "og:description", content: desc %> - <%= tag.meta name: "twitter:description", content: desc %> - <% end %> -<% else %> - <% Danbooru.config.description.tap do |desc| %> - <%= tag.meta name: "description", content: desc %> - <%= tag.meta name: "og:description", content: desc %> - <%= tag.meta name: "twitter:description", content: desc %> - <% end %> -<% end %> - <%= tag.meta name: "og:type", content: "website" %> <%= tag.meta name: "og:site", content: Danbooru.config.app_name %> diff --git a/app/views/posts/partials/index/_share.html.erb b/app/views/posts/partials/index/_share.html.erb index f31f6f09a..56ead4b46 100644 --- a/app/views/posts/partials/index/_share.html.erb +++ b/app/views/posts/partials/index/_share.html.erb @@ -1,5 +1,5 @@
+ addthis:title="Find over <%= @post_set.post_count %> <%= @post_set.humanized_tag_string %> images on <%= Danbooru.config.app_name %>"> diff --git a/config/danbooru_default_config.rb b/config/danbooru_default_config.rb index 42b134975..d728a7497 100644 --- a/config/danbooru_default_config.rb +++ b/config/danbooru_default_config.rb @@ -25,10 +25,6 @@ module Danbooru "Danbooru" end - def description - "Find good anime art fast" - end - # The canonical hostname of the site. def hostname Socket.gethostname