mezzanine blog の
検索エンジンに
そもそも
indexされないようにする、
一般的な rel=”next”と rel=”prev” の 説明
ざっくりの
- 全記事を
リスト表示した ページが ある 場合は、 canonical を 使う - 全記事を
リスト表示した ページが ない 場合は、 next, prev を 使う
という
当Blog は、
以下の
django の pagination
django の
plugin も
pluginインストールは
mezzanine の
django pagination の
参考サイト
mezzanine の pagination 機能
実際に
{% pagination_for blog_posts %}
と
タグの
そこまで、
この`<head >
タグ内に
@register.inclusion_tag("includes/pagination.html", takes_context=True) def pagination_for(context, current_page, page_var="page", exclude_vars=""): """ Include the pagination template and data for persisting querystring in pagination links. Can also contain a comma separated string of var names in the current querystring to exclude from the pagination links, via the ``exclude_vars`` arg. """ querystring = context["request"].GET.copy() exclude_vars = [v for v in exclude_vars.split(",") if v] + [page_var] for exclude_var in exclude_vars: if exclude_var in querystring: del querystring[exclude_var] querystring = querystring.urlencode() return { "current_page": current_page, "querystring": querystring, "page_var": page_var, }
実装内容
1.tags.py
template html を
@register.inclusion_tag
で
以下のようになりました。
tags.py は
from __future__ import absolute_import, division, unicode_literals from mezzanine import template register = template.Library() @register.inclusion_tag("includes/pagination_prev_next.html", takes_context=True) def pagination_prev_next_for(context, current_page, page_var="page", exclude_vars=""): querystring = context["request"].GET.copy() exclude_vars = [v for v in exclude_vars.split(",") if v] + [page_var] for exclude_var in exclude_vars: if exclude_var in querystring: del querystring[exclude_var] querystring = querystring.urlencode() return { "current_page": current_page, "querystring": querystring, "page_var": page_var, }
2.pagination_prev_next.html
template html の
前ページが
template.html は
{% if current_page.has_previous %} <link rel=”prev” href="?{{ page_var }}={{ current_page.previous_page_number }}{% if querystring %}&{{ querystring }}{% endif %}"/> {% endif %} {% if current_page.has_next %} <link rel=”next” href="?{{ page_var }}={{ current_page.next_page_number }}{% if querystring %}&{{ querystring }}{% endif %}"/> {% endif %}
3.blog_post_list.html
2箇所編集します。
- で作成した
tagを、 ロード する
- で作成した
{% load i18n mezzanine_tags blog_tags keyword_tags disqus_tags xxx_tags %}
- extrahead ブロックで
テンプレートを 呼び出す。
{% block extra_head%} {% pagination_prev_next_for blog_posts %} {% endblock %}
補足
- 検索結果ページに
ついて
検索結果ページである
{% pagination_for blog_posts %}
は
こちらは、
{% block extra_head %} <meta name="robots" content="noindex"> {% endblock %}
作った
ものは Githubに 上げていますので、 そちらからも 参照可能です。 tags.py
mezzanine-theme-clean-blog/clean_blog_tags.py at master · kemsakurai/mezzanine-theme-clean-blogtemplate.html
mezzanine-theme-clean-blog/pagination_prev_next.html at master · kemsakurai/mezzanine-theme-clean-blogblog_list.html
mezzanine-theme-clean-blog/blog_post_list.html at master · kemsakurai/mezzanine-theme-clean-blog
以上です。
コメント