Bloggerの空テンプレートを作成する

Bloggerの自作テンプレート作成に向けての第一歩です。

空テンプレート

Bloggerテンプレートの最小構成です。

空テンプレートの基準は以下の通りです。詳しくは参考の資料を参照してください。

  • <b:skin>を含む
  • <b:section>を含む
  • 各セクションに一意のIDを設定する
  • 構文が正しい

上記の基準を満たさない場合、テンプレートの保存に失敗する。

<?xml version="1.0" encoding="UTF-8" ?>
<html xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'>
<head>
<b:skin></b:skin>
</head>
<body>
<b:section id='main' showaddelement='yes'/>
</body>
</html>

出力

空テンプレートの出力には、以下の通りです。Blogger標準のCSSとJSが大量にくっついた形で出力されます。

<html xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'>
<head>
<link href='https://www.blogger.com/static/v1/widgets/2549344219-widget_css_bundle.css' rel='stylesheet' type='text/css'/>
<style id='page-skin-1' type='text/css'><!--

--></style>

</head>
<body>
<div class='no-items section' id='main'></div>

<script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/640298382-widgets.js"></script>
<script type='text/javascript'>
window['__wavt'] = 'AOuZoY6v5qufk6o_-qX7YrWmZEWP_xflkQ:1556691816496';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d4863363469296822308','//niimizo.blogspot.com/','4863363469296822308');
_WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '4863363469296822308', 'title': '新溝の日々', 'url': 'https://niimizo.blogspot.com/', 'canonicalUrl': 'http://niimizo.blogspot.com/', 'homepageUrl': 'https://niimizo.blogspot.com/', 'searchUrl': 'https://niimizo.blogspot.com/search', 'canonicalHomepageUrl': 'http://niimizo.blogspot.com/', 'blogspotFaviconUrl': 'https://niimizo.blogspot.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': false, 'httpsEnabled': true, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': '', 'encoding': 'UTF-8', 'locale': 'ja', 'localeUnderscoreDelimited': 'ja', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22新溝の日々 - Atom\x22 href\x3d\x22https://niimizo.blogspot.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22新溝の日々 - RSS\x22 href\x3d\x22https://niimizo.blogspot.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22新溝の日々 - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/4863363469296822308/posts/default\x22 /\x3e\n', 'meTag': '', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': false, 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/78a598507f5735a0', 'plusOneApiSrc': 'https://apis.google.com/js/plusone.js', 'disableGComments': true, 'sharing': {'platforms': [{'name': 'リンクを取得', 'key': 'link', 'shareMessage': 'リンクを取得', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Facebook で共有', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'Twitter', 'key': 'twitter', 'shareMessage': 'Twitter で共有', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Pinterest で共有', 'target': 'pinterest'}, {'name': 'メール', 'key': 'email', 'shareMessage': 'メール', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 300, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27ja\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': '続きを読む', 'pageType': 'index', 'pageName': '', 'pageTitle': '新溝の日々', 'metaDescription': ''}}, {'name': 'features', 'data': {'sharing_get_link_dialog': 'true', 'sharing_native': 'false'}}, {'name': 'messages', 'data': {'edit': '編集', 'linkCopiedToClipboard': 'リンクをクリップボードにコピーしました&#12290;', 'ok': 'OK', 'postLink': '投稿のリンク'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'カスタム', 'isResponsive': false, 'isAlternateRendering': false, 'isCustom': true}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': '新溝の日々', 'description': '', 'url': 'https://niimizo.blogspot.com/', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': true, 'isArchive': false, 'isLabelSearch': false}}]);
</script>
</body>
</html>

標準CSSとJSを取り除く

<?xml version="1.0" encoding="UTF-8" ?>
<html b:css='false' b:js='false' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'>
<head>
<b:skin></b:skin>
&lt;/head&gt;&lt;!--</head>--&gt;
<body>
<b:section id='main' showaddelement='yes'/>
&lt;!--</body>--&gt;&lt;/body&gt;
</html>

出力

<html xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'>
<head>
<style id='page-skin-1' type='text/css'><!--

--></style>
</head><!--
</head>-->
<body>
<div class='no-items section' id='main'></div>
<!--
</body>--></body>
</html>

※空テンプレートの段階では、htmlのb:cssとb:jsのみでCSSとJSを排除できます。ただし、他の設定によって追加されることがあるため、headとbodyタグ末尾の処理をしておいたほうが安全です。

ウィジェットの追加

以下の手順でウィジェットを追加できます。(勝手にウィジェット標準の記述が追加されます)

  1. 以下のコードを<b:section>文と置き換えて保存する。
  2. エディタを一度閉じる
  3. 再度エディタを開く
<b:section id='main' showaddelement='yes'>
  <b:widget id='Blog1' locked='true' title='Blog Posts' type='Blog'/>
</b:section>

最新バージョンに対応する

最新バージョン

  • テーマ:b:version='2'
  • テンプレート:b:b:templateVersion='1.3.0'
  • レイアウト:b:layoutsVersion='3'
  • ウィジェット:version='2'
  • スキン:version='1.3.0'
<?xml version="1.0" encoding="UTF-8" ?>
<html b:css='false' b:defaultwidgetversion='2' b:js='false' b:layoutsVersion='3' b:responsive='true' b:templateVersion='1.3.0' b:version='2' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'>
<head>
<b:skin version='1.3.0'></b:skin>
&lt;/head&gt;&lt;!--</head>--&gt;
<body>
<b:section id='main' showaddelement='yes'/>
&lt;!--</body>--&gt;&lt;/body&gt;
</html>

※上記のテンプレートに「ウィジェットの追加」の手順で追加するとバージョン2のウィジェットが追加される
<b:defaultmarkups>がなくても動作するっぽい

備考

<b:skin>,<b:section>も削除できるようです。


最大限何も出力しない記載例を次に示します。

<html b:css='false' b:js='false'>
<head><b:if cond='false'><b:skin></b:skin></b:if></head>
<body><b:if cond='false'><b:section id='main' showaddelement='yes'/></b:if></body>
</html>
<html>
<head>

</head>
<body>
</body>
</html>

参考