スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Fc2カスタマイズ] JavascriptでFc2独自変数使ってみる

Fc2ブログでブログのURLなどが取得できる独自変数(独自タグ)をJavascriptからつかってみたメモです。

変数に代入してみる

試しにどこでも有効な単変数を使って変数に代入してみる。

var blogUrl = '<%url>'; // http://jsfirefox.blog39.fc2.com/
var blogId  = '<%blog_id>';// jsfirefox

文字列を切り離したり、代入すると駄目みたい。

var blogUrl = '<%'+'url'+'>'; // <%url>
var blogId  = '<%'+'blog_id'+'>';// <%blog_id>
var s = 'url'
var blogUrl = '<%'+s+'>';//<%url>
s = 'blog_id';
var blogId  = '<%'+s+'>';//<%blog_id>
var blogUrl = ['<%','>'].join('url'); // <%url>
var blogId = ['<%','>'].join('blog_id'); // <%blog_id>

エントリーなど複数表示できる変数を配列に格納してみる

カテゴリの一覧を配列に格納してみる。

カテゴリの一覧を表示する変数を書き、その中でカテゴリ内で有効になる単変数を定義したオブジェクトリテラルをpushをつかって配列に追加。

var categories = [];
('<!--category-->'+ categories.push({
	no   : '<%category_no>',
	name : '<%category_name>',
	url  : '<%category_link>',
	count: '<%category_count>'
}) +'<!--/category-->');

Firebugでソースを見ると以下のようになって、pushが繰り返されてた。

var categories = [];
(''+ categories.push({
 no : '0',
 name : 'Javascript',
 url : 'http://jsfirefox.blog39.fc2.com/blog-category-0.html',
 count: '1'
}) +''+ categories.push({
 no : '1',
 name : 'FC2 カスタマイズ',
 url : 'http://jsfirefox.blog39.fc2.com/blog-category-1.html',
 count: '2'
}) +''+ categories.push({
 no : '2',
 name : 'Firefox',
 url : 'http://jsfirefox.blog39.fc2.com/blog-category-2.html',
 count: '1'
}) +''); 

ページ移動関連の変数をオブジェクトリテラルに代入してみる


/*
このエントリーで試してみる。http://jsfirefox.blog39.fc2.com/blog-entry-3.html
alert(dic.url); // http://jsfirefox.blog39.fc2.com/blog-entry-2.html
alert(dic.title); // [Firefox] Firefoxのプロファイルを取得するコード
*/
var dic = {};
var e = '<!--nextentry-->' + (dic.url = '<%nextentry_url>', dic.title = '<%nextentry_title>') + '<!--/nextentry-->';

その他、メモ

プラグイン用の変数を取ろうとするとブログの表示がおかしくなった。

エントリーの本文、要約が複数行の場合、[SyntaxError: unterminated string literal]で取得できない。

そんなんでエントリーやタグ等の情報をひとまとめにしたコードを書いてみました。

エントリーやタグを取得するコード

	/* http://fc2blogmanual.blog60.fc2.com/blog-entry-160.html */
	var Fc2Utils = {
		//どこでも有効な単変数
		totalPages    : parseInt('<%total_pages>'),
		cssUrl        : '<%css_link>',
		blogUrl       : '<%url>',
		encodeBlogUrl : '<%enc_url>',
		blogId        : '<%blog_id>',
		blogName      : '<%blog_name>',
		encodeBlogName: '<%enc_blogname>',
		serverUrl     : '<%server_url>',
		subTitle      : '<%sub_title>',
		introduction  : '<%introduction>',
		introduction2 : '<%introduction2>',
		authorName    : '<%author_name>',
		categoryNumber: parseInt('<%cno>'),
		profileImgUrl : '<%image>',
		templeteName  : '<%style>',
		prevMonthUrl  : '<%prev_month_link>',
		prevYear      : '<%prev_year>',
		prevMonth     : '<%prev_month>',
		nextMonthUrl  : '<%next_month_link>',
		nextYear      : '<%next_year>',
		nextMonth	  : '<%next_month>',
		nowYear       : '<%now_year>',
		nowMonth      : '<%now_month>',
		searchWord    : '<%search_word>',
		tagWord       : '<%tag_word>',
		//ページ移動関連の変数
		nextPageUrl: '<!--nextpage--><%nextpage_url><!--/nextpage-->',
		prevPageUrl: '<!--prevpage--><%prevpage_url><!--/prevpage-->',
		nextEntry: (function(){
			var dic = {};
			var e = '<!--nextentry-->' + (dic.url = '<%nextentry_url>', dic.title = '<%nextentry_title>') + '<!--/nextentry-->';
			return dic;
		})(),
		prevEntry: (function(){
			var dic = {};
			var e = '<!--preventry-->' + (dic.url = '<%preventry_url>', dic.title = '<%preventry_title>') + '<!--/preventry-->';
			return dic;	
		})(),
		//エントリ関連の変数
		entries: (function(){
			var r = [];
			var e = '<!--topentry-->' + (r.push({
				no		       : parseInt('<%topentry_no>'),
				title		   : '<%topentry_title>',
				encodeTitle    : '<%topentry_enc_title>',
				encodeUtfTitle : '<%topentry_enc_utftitle>',
				url		       : '<%topentry_link>',
				encodeUrl	   : '<%topentry_enc_link>',
				year		   : '<%topentry_year>',
				month	       : '<%topentry_month>',
				day			   : '<%topentry_day>',
				hour		   : '<%topentry_hour>',
				minute		   : '<%topentry_minute>',
				second		   : '<%topentry_second>',
				youbi		   : '<%topentry_youbi>',
				wayoubi		   : '<%topentry_wayoubi>',
				categoryNumber : parseInt('<%topentry_category_no>'),
				categoryName   : '<%topentry_category>',
				categoryUrl    : '<%topentry_category_link>',
				commentCount   : parseInt('<%topentry_comment_num>'),
				trackbackCount : parseInt('<%topentry_tb_num>'),
				commentListDate: '<%topentry_comment_list_date>',
				jointTag       : '<%topentry_jointtag>'
			})) + '<!--/topentry--> ';
			
			var t = '<!--titlelist-->' + (r.push({
				no            : parseInt('<%titlelist_eno>'),
				title         : '<%titlelist_title>',
				url           : '<%titlelist_url>',
				categoryName  : '<%titlelist_category>',
				categoryNumber: parseInt('<%titlelist_category_no>'),
				categoryUrl   : '<%titlelist_category_url>',
				year          : '<%titlelist_year>',
				month         : '<%titlelist_month>',
				day           : '<%titlelist_day>',
				hour          : '<%titlelist_hour>',
				minute        : '<%titlelist_minute>',
				second        : '<%titlelist_second>',
				youbi         : '<%titlelist_youbi>',
				wayoubi       : '<%titlelist_wayoubi>',
				commentCount  : parseInt('<%titlelist_comment_num>'),
				trackbackCount: parseInt('<%titlelist_tb_num>')
			})) + '<!--/titlelist-->';
			return r;
		})(),
		//最近投稿されたエントリーの一覧
		recentEntries: (function(){
			var r = [];
			var e = '<!--recent-->' + r.push({
				no     : parseInt('<%recent_no>'),
				title  : '<%recent_title>',
				url    : '<%recent_link>',
				year   : '<%recent_year>',
				month  : '<%recent_month>',
				day    : '<%recent_day>',
				hour   : '<%recent_hour>',
				minute : '<%recent_minute>',
				second : '<%recent_second>',
				youbi  : '<%recent_youbi>',
				wayoubi: '<%recent_wayoubi>'
			}) + '<!--/recent-->';
			return r;
		})(),
		//投稿されたコメントを新着順に一覧
		recentComments: (function(){
			var r = [];
			var c = '<!--rcomment-->' + r.push({
				entryNo   : parseInt('<%rcomment_keyno>'),
				entryTitle: '<%rcomment_etitle>',
				url       : '<%rcomment_link>',
				no        : parseInt('<%rcomment_no>'),
				title     : '<%rcomment_title>',
				name      : '<%rcomment_name>',
				year      : '<%rcomment_year>',
				month     : '<%rcomment_month>',
				day       : '<%rcomment_day>',
				hour      : '<%rcomment_hour>',
				minute    : '<%rcomment_minute>',
				second    : '<%rcomment_second>',
				youbi     : '<%rcomment_youbi>',
				wayoubi   : '<%rcomment_wayoubi>'
			}) + '<!--/rcomment-->';
			return r;
		})(),
		//受信したトラックバックを新着順に一覧
		recentTrackbacks: (function(){
			var r = [];
			var t = '<!--rtrackback-->' + r.push({
				entryNo   : parseInt('<%rtrackback_keyno>'),
				entryTitle: '<%rtrackback_etitle>',
				entryUrl  : '<%rtrackback_link>',
				no        : parseInt('<%rtrackback_no>'),
				title     : '<%rtrackback_title>',
				url       : '<%rtrackback_url>',
				blogName  : '<%rtrackback_blog_name>',
				year      : '<%rtrackback_year>',
				month     : '<%rtrackback_month>',
				day       : '<%rtrackback_day>',
				hour      : '<%rtrackback_hour>',
				minute    : '<%rtrackback_minute>',
				second    : '<%rtrackback_second>',
				youbi     : '<%rtrackback_youbi>',
				wayoubi   : '<%rtrackback_wayoubi>'
			}) + '<!--/rtrackback-->';
			return r;
		})(),
		//アーカイブ(月別の記事数)の一覧
		archives: (function(){
			var r = [];
			var a = '<!--archive-->' + r.push({
				url  : '<%archive_link>',
				count: parseInt('<%archive_count>'),
				year : '<%archive_year>',
				month: '<%archive_month>'
			}) + '<!--/archive-->';
			return r;
		})(),
		//カテゴリ
		categories: (function(){
			var r = [];
			var c = '<!--category-->' + (r.push({
				no   : parseInt('<%category_no>'),
				url  : '<%category_link>',
				name : '<%category_name>',
				count: parseInt('<%category_count>'),
				isParent      : Boolean('<!--category_parent-->'+ true +'<!--/category_parent-->'),
				hasNoChild    : Boolean('<!--category_nosub-->'+ true +'<!--/category_nosub-->'),
				isFirstChild  : Boolean('<!--category_sub_begin-->'+ true +'<!--/category_sub_begin-->'),
				isLastChild   : Boolean('<!--category_sub_end-->'+ true +'<!--/category_sub_end-->'),
				isNotLastChild: Boolean('<!--category_sub_hasnext-->'+ true +'<!--/category_sub_hasnext-->')
			})) + '<!--/category-->';
			return r;
		})(),
		//タグ
		recentTags: (function(){
			var r = [];
			var t = '<!--rtag-->' + (r.push({
				name     : '<%rtag_name>',
				parseName: '<%rtag_parsename>',
				url      : '<%rtag_url>',
				portalUrl: '<%rtag_portalurl>',
				count    : parseInt('<%rtag_count>')
			})) + '<!--/rtag-->';
			return r;
		})(),
		randomTags: (function(){
			var r = [];
			var t = '<!--stag-->' + (r.push({
				name     : '<%stag_name>',
				parseName: '<%stag_parsename>',
				url      : '<%stag_url>',
				portalUrl: '<%stag_portalurl>',
				count    : parseInt('<%stag_count>')
			})) + '<!--/stag-->';
			return r;
		})(),
		sortDescTags: (function(){
			var r = [];
			var t = '<!--ctag-->' + (r.push({
				name     : '<%ctag_name>',
				parseName: '<%ctag_parsename>',
				url      : '<%ctag_url>',
				portalUrl: '<%ctag_portalurl>',
				count    : parseInt('<%ctag_count>')
			})) + '<!--/ctag-->';
			return r;
		})(),
		sortAscTags: (function(){
			var r = [];
			var t = '<!--ctag-->' + (r.push({
				name     : '<%ctag_name>',
				parseName: '<%ctag_parsename>',
				url      : '<%ctag_url>',
				portalUrl: '<%ctag_portalurl>',
				count    : parseInt('<%ctag_count>')
			})) + '<!--/ctag-->';
			return r.reverse();
		})(),
		//リンクリスト
		linklist: (function(){
			var r = [];
			var l = '<!--link-->' + (r.push({
				url : '<%link_url>',
				name: '<%link_name>'
			})) + '<!--/link-->';
			return r;
		})(),
		//アップロードした画像
		recentImages: (function(){
			var r = [];
			var i = '<!--image-->' + (r.push({
				url    : '<%image_url>',
				name   : '<%image_name>',
				bname  : '<%image_bname>',
				ext    : '<%image_ext>',
				size   : parseInt('<%image_size>'),
				wsize  : parseInt('<%image_wsize>'),
				hsize  : parseInt('<%image_hsize>'),
				year   : '<%image_year>',
				month  : '<%image_month>',
				day    : '<%image_day>',
				hour   : '<%image_hour>',
				minute : '<%image_minute>',
				second : '<%image_second>',
				youbi  : '<%image_youbi>',
				wayoubi: '<%image_wayoubi>'
			})) + '<!--/image-->';
			return r;
		})()
	};

プロパティの説明など

配列を返すプロパティ

  • entries
  • recentEntries
  • recentComments
  • recentTrackbacks
  • archives
  • categories
  • recentTags
  • randomTags
  • sortDescTags
  • sortAscTags
  • linklist
  • recentImages

オブジェクトを返すプロパティ

  • nextEntry
  • prevEntry

その他は、string、number、NaNなどを返します。

使い道はあまりないと思いますが適当に使ってください。

関連記事

Tag : javascript カスタマイズ fc2 ブログ

コメントの投稿

非公開コメント

プロフィール

Yamapikarya

Yamapikarya

Firefox アドオンとかを開発してます。

最新記事
最新コメント
カテゴリ
月別アーカイブ
検索フォーム
RSSリンクの表示
QRコード
QR
その他
  • あわせて読みたい
アフィリエイト
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。