BlogTop > MTカスタマイズ Archive
MTカスタマイズ Archive
3 of 10
今月のいらんことしい(2016年3月)
今月(2016年3月)、サイトのカスタマイズした点をまとめたページです
- Movable Type を 6.2.4 に
- Movable Type 6向け修正パッチを適用
- LiveDwango リーダーへの登録リンクを reader.livedwango.com サブドメインに変更した
- 個別記事アーカイブをAMP対応させた
あまり Google Chrome で編集したりはしないのですが、Chrome での問題修正パッチが出ています。
AMP (Accelerated Mobile Pages) は、モバイル端末向けページを高速表示させるためのプロジェクトで、米グーグルと Twitter共同で立ち上げたものです。
Movable Type 関係では、以下のとおり
- Google AMP HTML に対応してみた件 - LIQUID BLOG
- AMP (Accelerated Mobile Pages) HTML を出力するようにしてみたけど面倒くさかった話 | WWW WATCH
などでまとめられています。
てっとり早く対応するには、記事アーカイブテンプレートに AMP用のテンプレートを作成してマッピング設定して、記事内の禁止されている、タグ・属性群を削除・変換して運用することです(対応させるまでに手間がかかるのが現実なんですけれども)。
このブログで使っているもののベースのようなテンプレートです。 Google Analytics など AMP付随のモジュールを使っていません。
今月のカスタマイズは以上です。バックナンバーは以下です。
今月のいらんことしい(2016年2月)
今月(2016年2月)、本年最初のサイトでカスタマイズした点をまとめたページです
- スタイルシートで、Mac IE5向けのCSSハックを削除した
Mac IE5は、現状まず、その環境の訪問者が皆無なので削除にしておきました。対応環境以外はコメント扱いなのでそのままでも実害はないのですが。
今月のカスタマイズは以上です。バックナンバーは以下です。
今月のいらんことしい(2015年12月)
今月(2015年12月)、今年最後のサイトでカスタマイズした点をまとめたページです
- Movable Type を 6.2.2 にアップデート
- サイトで使用する PHP のバージョンを変更した
- 使用している WordPress を4.4 にアップデート
WordPress は 4.4から oEmbed プロバイダー機能がつくようになりました。他のWebサービスで、oEmbed 対応していれば、URL 張り付けだけで、記事埋め込み用 HTML を取得できます。
今月のカスタマイズは以上です。バックナンバーは以下です。
今月のいらんことしい(2015年11月)
今月(2015年11月)、サイトでカスタマイズしたものを記録したページです
- Movable Type を 6.2 のパッチ適用
- Pinterest アイコンが読み込めなかったのを修正
Movable Type 6.2 でエントリーのベースネームに関係する不具合修正パッチが配布されていたので、適用しておきました。
Pinterest でアイコンの場所が変わったか何かでしばらく読み込みできなかったようなので、こちら側の環境にアイコンを置くようにしました。
法人向けではありますが、以下のページでアイコンをダウンロードすると、各種サイズのアイコンが同梱されています。ガイドラインもあるので一応、目をとおしておいたほうがいいように思います。
今月のカスタマイズは以上です。バックナンバーは以下です。
今月のいらんことしい(2015年10月)
今月(2015年10月)、サイトでカスタマイズしたものを記録したページです
- - Movable Type を 6.2 にアップデート
- - SSL証明書の検証のアラートがでるのを環境変数で無効に
- - Akismet の APIキーが有効期限切れとのことなので更新した
SL 証明書の検証ができません。
このメッセージを消すには、Mozilla::CA モジュールをインストールするか、mt-config.cgi に "SSLVerifyNone 1" を指定してください。
Mozilla::CA は自前でいれてはいたんだけど、パスをとおしてなかったんで警告がでてました。 とりあえずは 、環境変数に指定して、SSL 証明書の検証なしの設定にしておきました。
WordPress で設定などみたいたところ、Akismet のところで、有効期限切れといったアラートがでていました。
再度登録するのですが、実際のところは WordPress.com でサインインして、再び選びなおし(自分の場合はフリーのプラン。スライダーを左のほうにもっていくと課金が0になる)。
新しい API キーが発行されるとおもっていましたが、前に使用したものでした。
今月のカスタマイズは以上です。バックナンバーは以下です。
今月のいらんことしい(2015年9月)
今月(2015年9月)、サイトのカスタマイズを記録したページです
- ダッシュボードウィジェットに今日のアクセス記事とページビューを表示するウィジェットを作成した
PHPで Analytics のデータを処理できるようになったので、Movable Type 管理画面に入った当日のアクセスの多い記事のリストを表示させるダッシュボードウィジェットを作成してみました。
これで、サイト情報のウィジェットとあわせれば、ちょっとした情報をみたいとき、Analytics にいくことなくチェックできる、ということになりました。
今月のカスタマイズは以上です。バックナンバーは以下です。
今月のいらんことしい(2015年8月)
今月(2015年8月)、サイトのカスタマイズを記録したページです
- Movable Typeのテンプレートタグのリファレンスリンクを補助するボタンで、リンク先を正規のURLに変更
- Google Analytics からのアクセスランキング表示の取得をPHPにした
- ダッシュボードにAnalytics でのリアルタイム訪問者数のウィジェットをいれた
- 拡張子が.php などのカスタムインデックステンプレート編集で CodeMirrorが適用できるようにした
Analytics データのPHPでの取得方法は、以下のページを参照しましした。
ほとんどチュートリアルに沿っておこなうだけでした。要点だけまとめます。
- API コンソールのクライアントIDの作成のところで、「サービスアカウント」を選択します
- 秘密キーファイルがダウンロードされます。サーバーにアップロードして認証のときにつかいます
- アナリティクスで、ユーザー管理にて、クライアントのユーザを追加します
- 前掲のページにあるような取得データを表示するページをPHPで作成します(MTで管理する場合は、公開プロファイルは手動としておきます
- そのページ内で
$array = json_decode($json,true);とかして、JSONパースしてHTML出力になるようにしておきます - ブログテンプレートのインクルードでランキングページを取り込むようにします
- Ranking.php は表示に若干時間かかるので、Cache Lite使うなどしてキャッシュさせておきます
Analytics API のリアルタイムの取得には以下を参考にしました。
出力用のPHPを用意して、JSONを読み取るダッシュボードウィジェットを作成するだけです。
編集の シンタックスハイライトのやりかたは以下にメモしてあります

今月のカスタマイズは以上です。バックナンバーは以下です。
今月のいらんことしい(2015年7月)
今月(2015年7月)、サイトでカスタマイズした箇所をまとめたエントリです。
- RSD (Really Simple Discovery)テンプレートへのリンクをHTMLヘッダから削除した
- labs.markdiary.com の管理をMTOSから、個人無償版のほうへ移動した
- スマートフォン向けページでページ上部のサイト内検索などをClose するボタンをつけた
- 記事ページのTrackback表示に overflow : hidden をつけた
rsd.xml は、外部ツールへAPIの場所を伝えるものなのですが、実質使用していないこと、Data APIを使用したツールを使うと必要がないという理由から、link要素によるオートディスカバリーを削除することにしました。
MTOS の 製品ライフサイクルが 2015年9月30日をもって終了となることから、 MTOSで運用していた maRk labをこっちのほうに移動するとしました。
リポジトリのほうは存在するようですが、今後セキュリティパッチが提供されなくなることから、移行を検討せざるを得なくなりました。
ライセンス上から、ブログのバックアップ復元のためのアップグレードインストールができないので、記事をエクスポートして取り込むという方法で移動させました。
幸いなことに、記事数が少なかったので確認にそれ程手間はかかりませんでした。
テーマは、これを期にレスポンシブにも対応している、mt.Vicuna の HTML5 版を使ってみました。
おおまかな移行手順を書きます。
- あらかじめ、 labs.markdiary.com/ 以下のバックアップをとる ( cp コマンドだとプロセスkillになるんで、サーバー提供のコピーツールを使いました )
- 記事のエクスポートからブログの記事のエクスポートファイルをダウンロード
- 先述のmt.Vicuna の HTML5 版のテーマを /themes/ にいれておく (ウェブサイトとして作成するときに、mt-static/以下に入れると選択ができないため)
- 「ウェブサイトの作成」で新規ウェブサイトを作る
- ウェブサイトURL(サブドメイン使用) http://labs.markdiary.com/
- ウェブサイトパス /var/www/html/labs.markdiary.com
- アーカイブをウェブサイトパスとは別のパスで公開する (以下上記のように任意のURLとパスを指定)
- 記事のインポートで先ほどのエクスポートファイルを取り込む
- 再構築前に、テンプレートをプレビューを使いながら編集
- 状態の良いテンプレートから随時再構築していく
といった感じです。/blog/ ディレクトリを持たないサブドメイン型ブログ(サイト)ですので、そのままウェブサイトにブログを作らないで、そのまま記事を取り込んでいます(ウェブサイト下でブログ作成したものを、ブログURLをサイトトップにあげて作ると ブログID(blog_id)の1つが余計になってしまうので)。
Close ボタンは、mt.js 内に mtHide() があるので、これを onclick 属性に仕込んでおけば、jQuery を使わなくても簡単に特定要素の非表示ができます。
<div id="hideElem">text</div>
<div class="btn" onclick="mtHide('hideElem');">×</div>
今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります
今月のいらんことしい(2015年6月)
今月(2015年6月)、サイトのカスタマイズした点をまとめたエントリです。
- AccessRankingGA プラグインを、Google OAuth 2.0に対応できるように修正した
- AccessRankingGA テンプレートタグの出力するページ(.json ファイル)の再構築方法を変更した
- カテゴリー mt4 をサイドバーで表示しない
- カテゴリー mt6 を新設
- Trackback のCGI へポストに関する.htaccessの設定みなおし
- 利用していないプラグインを plaginsディレクトリから削除
OAuth 対応は、以下に詳細ページを用意しました
特定カテゴリーのリストからの除外は、運用のしやすさから、カテゴリラベルでフィルターをかけるのが一般ですが、カテゴリーIDで指定すれば、あとからのラベル変更でも一意なものとして機能します。
mt4カテゴリーは、バージョン4は製品ライフサイクル終了からだいぶたっているので、カテゴリーリストから除外するとしました。
以下はカテゴリーID 1をリストから除外する例
<MTTopLevelCategories> <mt:Unless tag="CategoryID" eq="1"> ... </mt:Unless> </MTTopLevelCategories>
mt6のカテゴリーを追加しました。今のところ、タグにmt6を付けてあるものにカテゴリーを与えましたが、徐々に設定していく予定。
先日、以下の記事にて再構築ツールを紹介しましたが、
これにより、対象のファイルを MovableTypeのrun-periodic-task スクリプトから切り離してcron 実行できるようになりました。
AccessRankingGA(のテンプレートタグが生成するファイル) は www-rebuilder経由の再構築にするので、テンプレートの再構築オプションでは「手動」にしておきました。
具体的にプラグイン名は挙げませんが、不要となったプラグイン(長い間使ってなくかつ無効としていたもの・コア機能として統合されているものなど)を削除しました。
今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります
メモ: www-rebuilder を使って、任意のテンプレートを再構築
スカイアーク様提供の Movable Type用の再構築ツール、www-rebuilder を使ってみたので、設定等の記録です。
用意するもの
- www-rebuilder 本体
- 必須モジュール:WWW::Mechanize
- ターミナルソフト
- 編集用エディタ
MT6で Data APIがでていて記事更新などは管理画面を介さなくてもできるようになっています。特定のテンプレートとなると、ちょっと Data APIではそれらしき、エンドポイントがないみたいです。というか、Data APIと再構築のツールとでは、目的がそもそも違うという。
で、本体のほうは、スカイアークの以下のエントリーにリンクがあります。
なお、GitHubにリポジトリがあるようです。
先に本題的なことをいいますと、そのまま使うと、ファイル mt.cgi に対して、BASIC認証をかけてある場合、基本認証が通らなくてプログラム終了となってしまいました。
... Authorization Required at ./www-rebuilder line 30
ベーシック認証突破するように、オプションコマンドを追加する必要があるようです。
GetOptions (Array) に以下を追加します。
"bauth_name=s" => \my $bauth_name,
"bauth_pwd=s" => \my $bauth_pwd,
(ターミナルで入力するのに手間がかかるので、略してます。basic_authorization_password というような意味です)
サブルーチン do_task()の 一番始めの $mech->get($uri); の上の行に以下を追加します。
# Basic Authorization
$mech->credentials( $bauth_name => $bauth_pwd ) if ( $bauth_name && $bauth_pwd );
あと、自分がおこなった環境だと、WWW::Mechanize の set_fields で checkbox の設定があると、
No such field 'checkbox' at /PATH/TO/WWW/Mechanize.pm
とかでてしまうので、 checkbox => undef, はコメントにしておきました。
編集が終わったら、SSHでサーバーに入って、どこかの /tools/ ディレクトリとか任意の場所にアップロードしておきます。
そのディレクトリに移動します。
$ cd /var/www/html/cgi-bin/tools
サンプルとして必要項目が以下だったとします。
MovableTypeのURL : http://example.com/{MT_SysDir}/mt.cgi
ログインユーザー名 : Melody
ログインパスワード : Nelson
ブログID :1
再構築したいテンプレートのタイプ : index
再構築したいテンプレートID : 1
ベーシック認証ユーザ名 : name
ベーシック認証パスワード : XXXXXXXX
各オプション(-- のあと)の対応は (* は必須)
mt_uri : MovableTypeのURL * username : ログインユーザー名 * password : ログインパスワード * type : 再構築したいテンプレートのタイプ (archive|index) template_id : 再構築したいテンプレートID
※ template_idを指定している時は、type が必須となる、とあります。
ベーシック認証用に以下のオプション
bauth_name : ベーシック認証ユーザ名 bauth_pwd : ベーシック認証パスワード
これを反映させた www-rebuilder でのコマンドラインはこのようになります。
$ ./www-rebuilder --mt_uri=http://example.com/{MT_SysDir}/mt.cgi --username=Melody --password=Nelson --type=index --template_id=1 --blog_id=1 --bauth_name=name --bauth_pwd=XXXXXXXX
(注:サンプルなので、実際の使用ではオプションは環境にあわせた値をいれます)
これで、ターミナルから、curl で再構築したテンプレートのヘッダーをみるか、ブラウザでアクセスするなどして、Last-Modified: を見てみます(GMTの場合は日本時間で+9:00 、計算の面倒ならばブラウザからアクセスしてページ情報みるほうが楽かも)。
$ curl -s --head http://example.com/再構築したテンプレートが生成するファイル
Last-Modifiedが直前の時刻になっていれば成功しているとおもわれます。
以上、 MovableType 6.1.1にて動作確認しました。
元記事にもありますが、十分な検証をおこなったうえで利用しましょう。
参考
BlogTop > MTカスタマイズ Archive
- Feeds
- Elsewhere
- logo