【发布时间】:2017-04-19 21:04:11
【问题描述】:
出于 SEO 原因,我想向 Google 提供有关我们杂志的更多信息,该杂志是我们网站的一部分。 Google 识别出存在分页内容。所以我被告知要为杂志的每一页添加next 和prev 元标记/链接(例如第 3 页):
<link rel="prev" href="http://www.bla.com/de/magazin?page=2" />
<link rel="next" href="http://www.bla.com/de/magazin?page=4" />
我们使用带有 Kaminari gem 的 JSON 来对我们的文章进行分页。
这是magazine_controller 的索引操作:
def index
@articles = MagazineArticle.visible
.includes(:magazine_category)
.order(published_at: :desc)
.page(params[:page]).per(7)
@slider_articles = @articles.first(3)
@advertisement = Advertisement.for_start_page
#set_pagination_meta_tags(params[:page])
set_magazine_meta_tags
respond_to do |format|
format.html
format.json { render_new_page(@articles, @advertisement) }
end
end
# the method that renders the new page (as JSON)
def render_new_page(articles, advertisement)
render json: {
content: {
articles: render_to_string(
partial: 'magazine/article_page',
locals: { articles: articles, advertisement: advertisement }
),
link: render_to_string(
partial: 'magazine/load_more_button',
locals: { articles: articles }
)
}
}
end
我们还使用Metatags gem 来处理元标记。
我写了一个方法来添加相对于 带有我在索引操作中调用的方法的当前页面 正如您在上面的控制器代码中看到的那样:
def set_pagination_meta_tags(page)
page = page.to_i
case page
when 0..1
set_meta_tags(next: magazine_url(I18n.locale, page: 2))
when @articles.total_pages
set_meta_tags(prev: magazine_url(I18n.locale, page: @articles.total_pages - 1))
when 2..@articles.total_pages - 1
set_meta_tags(prev: magazine_url(I18n.locale, page: page-1))
set_meta_tags(next: magazine_url(I18n.locale, page: page+1))
end
end
但这仅适用于第一页,然后 JSON 用于导航/加载更多内容,这不会更改元标记。
在深入之前,我想知道:是否可以设置这些链接?这种(动态)分页有意义吗? 谢谢!
【问题讨论】: