かたつむりくんのWWW

CodeBox のシンタックスハイライトのテーマの変更方法

Mac でコードのスニペットを管理するのに愛用している CodeBox ですが、スニペットエディタのカラーリングの変更の仕方がわかりにくいのでメモ。

続きを読む

ブログのデザインをリニューアルしました

少し記事を書くのが遅くなりましたが、ブログのデザインをリニューアルしました。mersy からこのブログについて「スマホで読みにくいの、3日間でなんとかならない?」的な指摘を受けたので(笑

前回のリニューアルの記事(ブログのデザインをリニューアルしました)の日付が2011年11月12日だったので、約3年8ヶ月ぶりのリニューアルとなります。

続きを読む

関連記事を表示する Movable Type プラグイン - SimilarEntries v1.0.0 リリース

このブログでのお知らせが遅くなりましたが、先日、Movable Type で関連記事を表示するプラグイン「SimilarEntries」をリリースしました。

今日は SimilarEntries プラグインの特徴をご紹介します。

複数のフィールドで関連性を判定

Movable Type のデフォルトの機能を使って関連記事を表示する場合、「同じタグが付けられている記事」や「同じカテゴリに属する記事」をリストアップすることが多いですが、当プラグインは、複数のフィールドで関連性を判定することができます。

カスタムフィールドも関連性の判定に含めることができます。

続きを読む

コンテキストに blog_id もセットしないとカスタムフィールドの出力でコンテキストエラーが出る場合がある

Movable Type で記事を扱う独自のブロックタグ(プラグイン)を作っているときに、場合によってカスタムフィールド画像がうまく取れないという現象に遭遇しました。

例えば、ウェブサイトとブログ、カスタムフィールド(タイプ「画像」、ベースネーム「EntryThumbnail」)が以下のような状態であるとします。

Website A (ID:1) : EntryThumbnailなし
├── Blog A-1 (ID:2) : EntryThumbnailあり
├── Blog A-2 (ID:3) : EntryThumbnailあり
├── Blog A-2 (ID:4) : EntryThumbnailあり
└── Blog A-3 (ID:5) : EntryThumbnailなし

このような関係にあるとき、Website A のインデックステンプレートで下記のようなテンプレートを出力しようとしたとき、

<mt:Entries include_blogs="1,2,3,4">
<mt:EntryThumbnailAsset><img src="<mt:AssetURL>" alt=""></mt:EntryThumbnailAsset>
</mt:Entries>

EntryThumbnailAsset に関するコンテキストエラーが出ました。

プラグインのコードを見て、ちゃんとブログの情報をコンテキストにセットしているのになんでだろう、と思っていたのですが、

my @entries = MT->model('entry')->load($term, $arg);
foreach my $entry (@entries) {
    local $ctx->{__stash}{entry} = $entry;
    local $ctx->{__stash}{blog} = $entry->blog;
    local $ctx->{current_timestamp} = $entry->authored_on;
    local $ctx->{modification_timestamp} = $entry->modified_on;
    my $tokens = $ctx->stash('tokens');
    my $builder = $ctx->stash('builder');
    defined(my $value = $builder->build($ctx, $tokens, $cond))
        or return $ctx->error($builder->errstr);
}

どうやら下記のようにして、blog_id もコンテキストにセットしないとダメなようでした。

my @entries = MT->model('entry')->load($term, $arg);
foreach my $entry (@entries) {
    local $ctx->{__stash}{entry} = $entry;
    local $ctx->{__stash}{blog} = $entry->blog;
    local $ctx->{__stash}{blog_id} = $entry->blog_id;
    local $ctx->{current_timestamp} = $entry->authored_on;
    local $ctx->{modification_timestamp} = $entry->modified_on;
    -- 省略 --
}

以上、備忘録として。

flexibleSearch.js v2.2.1 リリース - sortByを指定し、かつ検索結果が 0 の場合にエラーが起きるバグを修正

本日、高速なJavaScript検索を実現する jQuery プラグイン「flexibleSearch.js」の v2.2.1 をリリースしました。

sortByを指定し、かつ検索結果が 0 の場合にエラーが起きるバグを修正しました。

[fix] Fixed error in case that set sortBy and totalResults = 0 · tinybeans/jq-plugin-flexibleSearch@09a5ea5

Thank you very much, Mr.Masuda!

過去の MTAppjQuery 同梱の Uploadify への不正アクセス対応について

本日、過去の MTAppjQuery に同梱されていた Uploadify というファイルをアップロードするライブラリに、海外から大量のGETアクセスがあったとの報告がありました。

もしも過去のバージョンの MTAppjQuery をお使いいただいている場合は、このライブラリをディレクトリごと削除してください。

mt-static/plugins/MTAppjQuery/lib/uploadify

なお、Uploadify は、同梱していた当時は v2.1.0 でしたが、現在は v3.2.1 が最新バージョンとなっており、Flash 版の他に HTML5 版もリリースされているようです。今回の記事は Uploadify のライブラリ自体を否定するものではありませんので、その点はご了承ください。

Git のリモートリポジトリを変更する

お久しぶりです。先週3児の父になりました。

前回記事を書いてから2ヶ月以上も間が空いてしまいました。今後は軽い記事も織り交ぜて少しリハビリしていこうかと思います・・・

さて、先程プラグインを作っていたら、Git のリモートリポジトリを Bitbucket から GitHub に変更する必要がありました。はて、どうするんだっけなと git remote --help で見てみたら、下記のコマンドでリモートリポジトリの URL を変更できるようです。

git remote set-url origin <URL>

なお、下記のように --add オプションを付ければ、単純にリモートリポジトリを追加できたり、

git remote set-url --add origin <URL>

--push オプションを付ければ、プッシュ用のリポジトリを追加できたりするようです。

git remote set-url --add --push origin <URL>

このあたりをうまく利用すれば、複数のリポジトリを連携して効率よく開発・運用できるのかもしれません。

以上です。

Movable Type のリッチエディタ(TinyMCE)に文字数カウント機能を付ける

本文フィールドで文字カウント - MTQ | Movable Type ユーザーコミュニティ という質問を見つけましたので、Movable Type の本文欄で使われているリッチエディタ(TinyMCE)に文字数カウント機能を追加してみます。

続きを読む

$.MTAppSlideMenuV2() を使って管理画面左上▼メニューを並び順を変えるには

$.MTAppSlideMenuV2() は管理画面左上のスコープメニュー(▼メニュー)を、スライドメニューに変更するメソッドです。

このスライドメニューは mtappVars の中の can_access_blogs_json というプロパティにセットされている JSON を元に作られています。

したがって、このメニューの並び順は、 $.MTAppSlideMenuV2() を実行する前に mtappVars.can_access_blogs_json の並び順を変更することで調整出来ます。

続きを読む

MTAppjQuery v1.8.1 リリース - MTAppHasCategory、MTAppMultiFormを修正

本日、MTAppjQuery v1.8.1 を公開しました。

Release Released v1.8.1 · tinybeans/mt-plugin-MTAppjQuery

今回のリリースでは下記2点を変更しました。

  • Movable Type 6.1 で MTAppHasCategory が正常に動作しない不具合を修正しました。
  • MTAppMultiForm で select を作ったとき、ページ読み込み時にも change イベントを発火させるようにしました。

v1.8.0 からのアップデートであれば、下記の2ファイルの差し替えのみでOKです。

  • mt-static/plugins/MTAppjQuery/js/MTAppjQuery.js
  • plugins/MTAppjQuery/MTAppjQuery.pl

よろしくお願いいたします。

flexibleSearch.js v2.2.0 リリース - 検索結果の並び変え、独自の検索ロジックの追加などが可能に

本日、高速なJavaScript検索を実現する jQuery プラグイン「flexibleSearch.js」の v2.2.0 をリリースしました。

今回のリリースでは、検索結果をソートできるようになったり、独自の検索ロジックで通常検索結果をさらにフィルターしたりと、一段と使いやすくなったと思います。

リリースノートにも書きましたが、v2.2.0 の概要は以下の通りです。

続きを読む

MTAppjQuery v1.8.0 リリース - MTAppMultiFileUpload、MTAppApplyTinyMCE を追加等

本日、MTAppjQuery v1.8.0 を公開しました。

Release Released v1.8.0 · tinybeans/mt-plugin-MTAppjQuery

今回のリリースでは、

などがあります。

以下に、リリースノートの内容を記載しておきます。

続きを読む

「公開しない」テンプレートは非表示かグレーアウトに

テンプレートの退避保存について - MTQ | Movable Type ユーザーコミュニティ

例えば、「公開しない」のものだけ、display:noneなどで表示させない方法などでも良いのですが。

このような場合、MTAppjQuery がインストールされていれば、user.js に下記のようなコードを書けば簡単に実現できます。

if (mtappVars.template_filename === 'list_template') {
    // グレーアウトする場合(おすすめ)
    $('tr:contains("公開しない")').css('color','#ECEDED').find('a').css('color','#ECEDED');
    // 非表示にする場合
    $('tr:contains("公開しない")').hide();
}

どちらかというとグレーアウトがお勧めです。

以上です。

JavaScript の正規表現で img タグ以外のタグをタグを削除する

例えば、ページの HTML の中から img タグだけを取り出したいときは、

var body = document.body.innerHTML;
var images = body.match(/<img[^>]+>/gi);

と書いたり

var body = document.body.innerHTML;
var images = body.match(/<img.*?>/gi);

と書いたりすれば、変数 images に配列として格納されます。

ただし、これだとタグの中で改行されていた場合に対応出来ないので、それにも対応する場合は下記のようになります。

var body = document.body.innerHTML;
var images = body.match(/<img(.|\s)*?>/gi);

ついでに画像の URL だけの一覧を作りたいとすれば、

var body = document.body.innerHTML;
var images = body.match(/<img(.|\s)*?>/gi);
var imagesURL = [];
for (var i = 0, l = images.length; i < l; i++) {
    imagesURL.push(images[i].match(/src=["|'](.*?)["|']/)[1]);
}

といった感じになると思います。

ここまでは比較的シンプルですが、今日のテーマは img 要素以外のタグをすべて削除して、img 要素だけを残すにはどうしたらいいか、といった内容になります。

続きを読む

Movable Type の記事編集画面の本文と続きを分離する(リッチエディタ対応版)

昨日、「Movable Type の記事編集画面の本文と続きを分離する」という記事を書きましたが、今日はその分離した本文・続き欄をリッチエディタにしてみます。

事前に MTAppjQuery がインストールされているのは約束事ということで。

出来上がりは下図のような感じになります。

本文欄と概要欄を分離してリッチテキストエディタにしたイメージ図

さて、これを実現するには下記のコードを user.js に書けば OK です。昨日のコードに $.MTAppApplyMCE 以降を追記した形になります。

続きを読む

Movable Type の記事編集画面の本文と続きを分離する

タイトルそのままですが、MTAppjQuery を利用して Movable Type の記事編集画面の本文欄と続き欄を分離するカスタマイズを紹介します。

出来上がりは下図のような感じになります。

本文欄と概要欄を分離したイメージ図

さて、これを実現するには下記のコードを user.js に書けば OK です。

続きを読む

MTAppjQuery で Ajax などの処理が全部終わってから submit を走らせたいとき

MTAppjQuery で Movable Type の管理画面をカスタマイズしていると、例えば「記事を保存したときのタイミングで Ajax などの処理が全部終わってから submit を走らせたい」ということがたまにあります。

そういうときは、下記のように名前空間を使ってイベントをセットすると良いでしょう。

続きを読む

RebuildRelatedObjects v1.1.0 リリース - 複数のフィールドに対応

記事を保存したとき、その記事の特定のフィールドにセットされた ID の記事を自動で再構築する Movable Type プラグイン「RebuildRelatedObjects」の v1.1.0 を公開しました。

今回のリリースでは、記事/ウェブページにある複数のフィールドを RebuildRelatedObjects の対象フィールドに指定できるようになりました。

複数フィールドのイメージ図

プラグインの詳細は下記ページをご覧ください。

テンプレート一覧からテンプレート名、出力ファイル名(アーカイブパス)をカンマ区切りで抜き出す

Movable Type のテンプレートの一覧が欲しいと思う事ってありませんか?

僕もごくたまにあるんですけど、そういうときはテンプレート一覧画面からテキストエディタにコピペすることが多いと思います。でもそれって余計なテキストや改行が入ったりして、それを削除するのって結構面倒ですよね・・・

ということで、一発で一覧を抜き出す JavaScript コンソール用のスクリプトを書きました。テンプレート名などをコピペしてた方は、是非このコードをコピペして楽しましょう。

続きを読む

SpecificCategory v2.1.0 リリース - MTSpecificFolder タグを追加

特定のカテゴリのコンテキストをセットする MTSpecificCategory ブロックタグを提供する Movable Type のプラグイン「SpecificCategory」の v2.1.0 をリリースしました。

今回のリリースでは、特定のフォルダのコンテキストをセットする MTSpecificFolder タグを追加しました。

また、label モディファイアで、指定したいカテゴリ/フォルダが別の親カテゴリ/フォルダに含まれる同じ名前の子カテゴリ/フォルダなら、トップレベルのカテゴリ/フォルダから順に親カテゴリ/フォルダと一緒に指定できるようになりました。

<SpecificCategory label="プラグイン/MTAppjQuery/特徴">
 ...
</mt:SpecificCategory>
<SpecificCategory label="プラグイン/SpecificCategory/特徴">
 ...
</mt:SpecificCategory>

プラグインの詳細、ダウンロードは下記のページからお願いします。