BlogTop > MTカスタマイズ Archive

MTカスタマイズ Archive

9 of 10

< Previous PageNext Page >

すべてのページ

メモ:mt.Vicuna simpleにSyntaxHighlighter 3.xの設置

mt.Vicuna simple pluginテーマにSyntaxHighlighterを置いてみました。

コード表記の表示でみやすくするライブラリなのですが、mt.Vicuna simpleに設置をしてみましたので、そのときのメモとして記録しておきます。

mt.Vicuna Simpleはmt.Vicuna Simple - Movable Type Plugins and Themes Directoryから

行程の概要

大雑把な流れは以下のリストのようなものとなっています。

  • SyntaxHighlighter(version 3.x)の入手
  • 必要なファイルをアップロード
  • テンプレートモジュールの作成とインクルード
  • mt:entrybody,mt:entrymoreの改行出力の調整
  • 記事内のclass属性の変更
SyntaxHilighterの入手先:
ファイルのアップロード:

自分の場合ですが、サイトのディレクトリ下にlibフォルダを作りその下にSyntaxHighlighterフォルダ、その配下にscripts,stylesフォルダとしてアップロードしています。

  • lib
    • SyntaxHighlighter
      • scripts
      • styles

テンプレートモジュールの作成とテンプレート修正について

以降はmt.Vicunaテンプレート向けの話として記述しています。

管理上の都合でモジュールテンプレートとしてインクルードする形としました。コード内で使っている変数名は任意のものです。

具体的には専用の変数をあらかじめセットしておき、その値によりSyntaxHilighterを使えるようにするかどうかを判断して分岐させます。

ということで作成したSyntaxHighlighterという名のモジュールテンプレートは以下です。

<mt:SetVars>
Shlib=http://localhost/lib/SyntaxHighlighter/
</mt:SetVars>
<link href="<$mtvar name="Shlib"$>styles/shCore.css" rel="stylesheet" type="text/css" />
<link href="<$mtvar name="Shlib"$>styles/shCoreDefault.css" type="text/css" rel="stylesheet" />
<script src="<$mtvar name="Shlib"$>scripts/shCore.js" type="text/javascript"></script>
<script src="<$mtvar name="Shlib"$>scripts/shAutoloader.js" type="text/javascript"></script>
<script type="text/javascript">
setTimeout ( function(){
    SyntaxHighlighter.autoloader(
         "bash                      <$mtvar name="Shlib"$>scripts/shBrushBash.js"
         ,"css                      <$mtvar name="Shlib"$>scripts/shBrushCss.js"
         ,"html xml xhtml           <$mtvar name="Shlib"$>scripts/shBrushXml.js"
         ,"js jscript javascript    <$mtvar name="Shlib"$>scripts/shBrushJScript.js"
         ,"perl pl                  <$mtvar name="Shlib"$>scripts/shBrushPerl.js"
         ,"plain                    <$mtvar name="Shlib"$>scripts/shBrushPlain.js"
         ,"php                      <$mtvar name="Shlib"$>scripts/shBrushPhp.js"
    );

SyntaxHighlighter.all();
},0);
</script>

この例ではあらかじめ変数に共通するSyntaxHighlighterのあるフォルダをセットしてmtvar(MTGetVar)で呼び出しをしています。使いたいテンプレートで階層に変化があっても困らないようにhttp://から始まるパスにしています。

Autoloaderについて簡単に触れておくと、使いたい言語のハイライトのためのJSを読み込んでくれるメソッドのようです。詳しくはよく知らなかったりします。

モジュールテンプレートをインクルード

先に示したモジュールのインクルードです。取り込み箇所は、今回はhead要素内にということにしてみました。

以下をHTMLヘッダーモジュールテンプレート内に記述します。場所はmeta要素より下ならば任意の箇所で。自分は<$MTCCLicenseRDF$>の上に記述するとしました。

<MTIf name="Shenabled" eq="1">
<mt:include module="SyntaxHighlighter" />
</MTIf>

以下を必要なアーカイブテンプレートなどの先頭のSetVarsテンプレートタグの中に追加しておきます。

Shenabled=1

MTEntryBody等の出力の修正

pre要素を使ったときに、出力で改行コードが減らされているために整形済のテキストを示せなくなるので(強制改行を使えば表現できますが)以下のようにモディファイアを取り去ります。

<MTIf tag="EntryBody" strip_linefeeds="1" trim="1">

上記の箇所を、以下のように。MTEntryMoreについても同様です。

<MTIf tag="EntryBody">

実際の利用

あとは、記事のなかのコードの箇所にコードを記述します。pre内で表示するのに、&などは文字実体参照に置き換えをします。これは面倒だというときの方法があるのですが、自分はMT記事編集画面で文字実体参照に一発変換するボタンを利用してるのでそのままの状態で使っています。

そしてその対象とする要素にclass="brush: js;"のように言語に応じてclass名を指定しておけば完了です。

ちょっと書き足りてない気はしますが、だいたいこのような形です。

MT:カスタムボタン:公開日の秒数を切り上げ0に設定してフォームに投げるボタン

久々のCustom Editor Button用追加ボタンです。投稿日のフォームへ秒数を00にして切り上げた状態のものをセットします。

最近公開時間の秒数を00にそろえるというのが自分のマイブームとなっています(何をやってるんだか)。ようするにきっちりと揃えたいというだけなのです。前は現在時刻をフォームにいれるボタンを使っていましたが、秒数だけ修正するのに面倒になってきたのでボタンを作ることにしました。

config.yamlファイル

name: PublishDateSetZeroSecondsButton
id: PublishDateSetZeroSecondsButton
key: PublishDateSetZeroSecondsButton
author_link: http://www.markdiary.com/
author_name: maRk
description: utility button for Custom Editor Button2 plugins
version: 0.1
#
# require Custom Editor Button 2 Plugin https://github.com/aklaswad/mt-plugin-custom-editor-button-2/
#
buttons:
    util_curtime2:
        title: Publish Date would set as zero seconds to Current Time
        image: images/now0.png
        code: |
            function ceb_util_curtime2 (text, args) {
                function zp(num) {
                    if(num < 10){num = '0' + num;}
                    return num;
                }
                var now = new Date();
                    if (zp(now.getMinutes()) < 59 ){
                        var date = '' + now.getFullYear() + '-' + zp(now.getMonth() + 1) + '-' + zp(now.getDate());
                        var time = zp(now.getHours()) + ':' + zp(now.getMinutes() + 1) + ':00';
                        document.entry_form.authored_on_date.value = date;
                        document.entry_form.authored_on_time.value = time;
                    } else if (zp(now.getHours()) != 23 && zp(now.getMinutes()) == 59) {
                        var time = zp(now.getHours()+1) + ':' +'00:00';
                        document.entry_form.authored_on_time.value = time;
                    } else { var time = zp(now.getHours()) + ':' + zp(now.getMinutes()) + ':00';
                      alert('wait few minutes');
                }
                return undefined;
            }

config.yamlは、PublishDateSetZeroSecondsButtonフォルダにいれてpluginsディレクトリへ。now0.pngは適当な画像を/mt-static/plugins/PublishDateSetZeroSecondsButton/images/.にいれるとします。

* Custom Editor Button 2プラグインが必要です

今月のいらんことしい(2011年5月)

今月(2011年5月)サイト内でカスタマイズした箇所をまとめたエントリです

  • アクションストリームから「Delicious」のサーヴィスを削除した
  • 個別エントリーのパンくずリストではカレントページのタイトルを表示しないようにした
  • Google Chrome Frame対応のため、ヘッダーでX-UA-Compatibleの出力
  • MyBlogLogで発行したスクリプトを撤去した
  • いくつかのnofollow属性の削除

すでにDelicious(del.icio.us)利用者には通知が来ているのですが、Deliciousサーヴィスが米AVOSに買収となりました。

移管後のことを考えていまして、今回は利用サーヴィスから外すという方向でいくとしました。

パンくずリストにつては同タイトルのテキストが複数ページにあるのが気になってきたので試しにとることにしました。

トピックパスのところでclass=currentな箇所をmt:Unless name=tempName like=entryのような具合で分岐してあります。

MyBlogLogサーヴィスは今月24日をもって終了との発表がなされています。放置状態ともいわれていたこのサーヴィスですが、ブログやサイト運用にあたって支援となるツールも提供されていたのでちょっと残念ではあります。後継?にはYahoo! Pulseというサーヴィスをすすめられているようです。

Yahoo! Pulse

Google Chrome Frame(Internet ExplorerでGoogle Chromeのエンジンで動作できるようするプラグイン)の対応は、ブラウザの判別分岐させて、PHPで以下のようにヘッダで出力するようにしました(アクセス解析だと滅多に訪問されるかたいらっしゃらないので何ですが)。

header('X-UA-Compatible: chrome=1');

これはmetaタグを使っても可能でして詳細は、Chromium Projectsの以下のページにあります。

今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります

今月のいらんことしい(2011年4月)

今月(2011年4月)サイト内でカスタマイズした箇所をまとめたエントリです

  • Mozilla Firefox ダウンロードのバナーを撤去
  • つれづれぼっくす(tsuredurebox.geo.jp)でWordPressのDBのテーブル最適化のためCRON設定
  • つれづれぼっくすでスマートフォン向けにWPTouchプラグインを導入

使用中のWordPressで特にこれといってオーバーヘッドが頻発したりするようなことはないのですが、定期的にということでCRON設定おこないました。実行間隔はやや多めにとっておきました。WordPressのヴァージョンアップ(3.1.1)もおこないました。

WPTouchは有名なプラグインで説明することもありませんが、スマートフォン用にページを最適化してくれる拡張です。実は先月いれていたのですがネタがなかったので。

このごろはWordPressばかりやってるみたいですが、Movable Typeもローカルのほうで5.1ベータ試していたりしています。

今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります

今月のいらんことしい(2011年3月)

今月(2011年3月)サイトでカスタマイズした点をまとめたエントリです

  • Tabアーカイブページでユーザーエージェントによる振り分けでiPhoneのときページカラムを変更

タグアーカイブページについてですが(例:tag movabletype)、iPhoneなどからみたときに1カラムのページになるようにclass指定で振り分けをおこなってみました。

Vicunaテンプレートでは、body要素に特定のclassを当てることで容易に変更が可能になっており、シングルカラムにしたい場合は、class="single"を、2カラムにしたければ、class="double"をつければよいわけです。ただし、CSSの記述の優先度などから、これらの値を混在させずに条件ごとに切り分けする必要があります。

ユーザーエージェントの情報取得には、mt-xsearch.cgi側から変数を渡す方法がわからなかったので、小粋空間さま提供のプラグインを利用させていただきました。

ほんの一例にすぎませんが、以下のような形で。

<mt:SetVarBlock name="agent"><mt:HTTPUserAgent /></mt:SetVarBlock>

分岐させるのは、body要素の部分にて。

<body class="individual system<mt:if name="agent" like="iPhone|iPod|Android"> single<MTElse> double</mt:if>">

*変数セットせずにタグの評価だけで分岐できるっぽいけどためしてないです。

今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります

今月のいらんことしい(2011年2月)

今月(2011年2月)ブログのカスタマイズしたところをまとめた記事です

最初の月のカスタマイズは以下のとおりです。

  • 新しいほうのはてなブックマークボタンをアーカイブページにつけてみた
  • インクルードしてるjQuery(本体)のヴァージョンをあげてみた
  • はてなブックマークのエントリページ用のRDFを追加

ブックマークボタンの記事は以下です。

jQueryですが特にヴァージョンあげてなくても問題はなかったようなんですが、なんとなく。Google Ajax APIからのものをcode.jquery.comのCDNにしてみました。

詳細は以下に掲載されているRDFのコードです。

これをブログ記事のページとかウェブページ内に埋め込んでおきました。rdf:aboutには、MTEntryPermalinkとかMTPagePermalinkを、foaf:accountNameには「自分のはてなのID」をいれておけばいいわけです。あとこのRDFのコードはhead内におくとき、<!-- -->でラッピングしておかないとヴァリデーションサーヴィスなどで指摘されるみたいです。

これをファンクションタグ化してみようとしていたのですが、エントリページごとに出力するところまではできたんですが、アーカイブテンプレート毎での制御のしかたがいまいちわからなくて頓挫中(?)

とりあえず、作ってみましたよ。動くかどうかあやしいですけど。

今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります

今月のいらんことしい(2011年1月)

今月(2011年1月)サイトでカスタマイズしたところをまとめた記事です

今年(2011年)最初の月のカスタマイズは以下のとおりです。

  • Ajax JSON 検索のページにiPhone対応版を作ってみた
  • Movable Typeの管理ページのiPhone対応プラグイン、iMTをいれてみた
  • Yahoo!サイトエクスプローラーの認証用ファイルを削除
  • Google Analyticsのトラッキングコードスニペットをテンプレートタグに

Ajax JSON SearchのテンプレートをカスタマイズしてiPhone、iPod touch 対応のページを用意してみました。

実は試験的にiPhone向けページを作っていたりしたのですけれども、ある時期から止めてしまっています。今回検索ページのiPhone対応にこの時使っていた、cremaさん提供の「iPhoneテンプレートセットfor MT」を利用しました(とはいってもほとんど機能を使いこなせてなかったりします。iUIライブラリとか)。

iPhoneかiPod touchで検索のページをみていただきますと、iPhone向けのリンクが下に表示されます。

iMTプラグインはiPhoneほかのモバイルデバイスをサポートするプラグインでして以下からダウンロードできます。

iPhone向けページの確認中に気づいたのですが、ブラウザでUserAgent偽装して確認作業をしてるとき、MT管理ページ側で再構築をおこなってはなりません。(管理ページがiMTプラグインにより、iPhone用ページに切り替わり、その状態で再構築が実行され途中でエラーが帰ってくるので)もし再構築の必要があるのならば、ブラウザの偽装をデフォルトのUAに戻すなどします。

米Yahoo!のSite Explorerのほうも使っていましたが、どっちがどっちのファイルだか忘れてしまって、再び米Yahoo!の管理ページまでみにいってしまったという。。

Google Analyticsのコードはこれまでテンプレートモジュールでやっていたのをファンクションタグにしてみました。たぶんこの手のプラグインは探せばすぐ見つかるようなきがするのですけど、プラグイン作成練習のつもりで自分でプラグインにしてみました。好みの問題かもしれませんが、テンプレートタグを使うことでテンプレートの見た感じがすっきりするような気がします。

今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります

今月のいらんことしい(2010年12月)

今月(2010年12月)ブログのカスタマイズした点ををまとめた記事です

今月でいよいよ2010年もお終いとなります。今年最後のカスタマイズは以下です。

  • 「あわせて読みたい」のパーツ登録と貼り直し
  • Tag Archiveページでタグの表記を小文字に統一
  • Movable Type 4.28へアップデート

「あわせて読みたい」が、株式会社ユーザーローカルにより買収されたことをうけまして、パーツも再登録という形にしました。この件はトップページにいけば登録のフォームが用意されているので(今の状況に基づいていってます)、とくに説明は必要ないですね。

Movable Typeのヴァージョンをアップした際にタグアーカイブページに不備があったためなおしたついでに思いつきまして、タグの表記を小文字で統一するようにしてみました。lower_case="1"というモディファイアを利用しています。

Movable Typeのセキュリティアップデートがなされましたので、アップデートをおこないました。

余談ですが、Twitter上ではアップデートの方法がわかりにくいといった内容のツイートがいくつかみられました。このあたりはWordPressの自動アップデート機能とか使っていますと、やっぱりわかりにくいかもしれないなあ、という感想をもちました。

何回も(MTの)アップデートを繰り返してる者にとってはいつもの作業でしかないわけですが。。

今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります

今月のいらんことしい(2010年11月)

今月(2010年11月)ブログでカスタマイズした箇所ををまとめた記事です

今月はお休み、といきたかったのですがほんの少しですが弄っています。

  • コメント認証にTwitterを追加
  • コメントの即時公開を認証のものに変更
  • 関連記事の「Relatedentry」を変更

コメントの公開のタイミングを認証コメントに変更しました。

(本当はコメントを認証のみにおもっていたんですけれど)Twiiterによる認証コメントを導入することとしました。

Twitterの認証には、小粋空間様で提供されている「TwitterCommentプラグイン」を利用しています。

導入は、リンク先にあるとおりで自分のMTヴァージョンにあったプラグインパッケージをダウンロードして展開後のファイルを指定されているディレクトリにアップします。

あとは説明にあるとおりに、Twitter側でアプリケーションの登録などを済ませて、「Consumer key」と「Consumer secret」を得たらプラグインの設定画面(ブログ単位で)フォームに入力して設定を完了します。

なおコメントを投稿する際の流れは小粋空間様のプラグインページにあるとおりです(*説明の画像はヴァージョン5.xです)。

導入のときに認証で進まなくてはまっていたので、プラグイン紹介ページのコメント欄にあるような方法で対処することにしました。

関連記事のリストのタイトルでRelatedってのもどうかなというので、関心を持つかもね、みたいな感じにしてみました。怪しげな英語なので全然間違ってるかもです。

今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります

今月のいらんことしい(2010年9月)

今月(2010年9月)ブログでカスタマイズした点などををまとめた記事です

今月のカスタマイズは以下のとおりです。Voxサービス終了にともなう変更がメインとなっています。

  • ActionStreamプラグインからVoxのサーヴィスを削除
  • PostVoxプラグインの停止(削除)
  • コメント認証のサービスからVoxを外した

カスタマイズというものとは違うとはおもいますがいちおう。削除後はモジュールテンプレートなどインクルードしてる部分があるので再構築をおこなって完了しました。

PostVoxプラグインは利用の停止ではなくてプラグインディレクトリからごっそり削除しました。

それと、Voxでやっていました「maRkのつれづれぼっくす」ですが、

にてブログを続けていくつもりです(フィード登録はこちら:http://tsuredurebox.geo.jp/feed/)

移行後それほど手を加えてないので一部表示がおかしい部分はあります。

今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります

Index of all entries

BlogTop > MTカスタマイズ Archive

Feeds
Elsewhere

Action Streams

logo

Comment powered by DISQUS

Return to page top