かたつむりくんのWWW

MAMP に Drupal 8 をインストール

あけましておめでとうございます。今年も当ブログをよろしくお願いいたします。

MAMP に Drupal 8 をインストールしてみたので手順を紹介します。1箇所だけ引っかかりましたが、あとはすんなり行きました。

続きを読む

DynamicMTML で変数に入れた数字を文字列として扱いたい場合は mt:SetVarBlock を使った方が無難

Movable Type の DynamicMTML 環境でのお話です。

例えば、

<mt:SetVar name="foo" value="1">

と変数にセットします。これを、PHP で文字列かどうか調べると、

続きを読む

note モディファイアでコメントを書くときの注意点と、プラグインなしでの変数の局所化する方法

この記事は Movable Type Advent Calendar 2015 の 6日目の記事です。

今日で 39 歳になりました。毎年、自分の誕生日にブログを書くノルマを当てて自分を追い込む企画です。

今日はちょっと軽めに記事になってしまいますが、note モディファイアでコメントを書く方法と、プラグインなしで変数の局所化する方法をご紹介します。

続きを読む

Movable Type の全テンプレート共通で読み込む config モジュールの定数的な変数はハッシュにすると便利かも

Movable Type でサイトを構築するとき、最終的にはかなりの数のテンプレートになることが多いです。

そのため、共通して使う「定数」のようなイメージの値を config という名前のモジュールにして、ほぼ全てのテンプレートで読み込むという方法を使う方は多いと思います。僕ら bit part もそうですし。

その config モジュールに書く変数を、そのままの変数で書かずに、ハッシュにしてあげると、何かと便利になったりするので、1つのアイデアとして紹介します。

続きを読む

Movable Type の記事投稿画面の TinyMCE を JavaScript で無効にするには

Movable Type の記事投稿画面の TinyMCE を JavaScript で無効(破棄)にするには、下記のコードを実行すればOKです。

tinyMCE.execCommand('mceRemoveControl', false, 'editor-input-content');

復活させる場合は、

tinyMCE.execCommand('mceAddControl', false, 'editor-input-content');

です。MTAppjQuery を使っている場合は、これらのコードを user.js に書けば良いでしょう。

TinyMCE - Command identifiers

Source Code Pro を MacBook Pro にインストール

Adobe の Source Code Pro を Mac にインストールしたのでメモ。参考サイトは「[Mac]AdobeのSource Code Proフォントをインストールする | IT女子のお気に入りフォルダ」です。

続きを読む

Atom の MT タグ入力補完スニペットを作ってみた

bit part では、Sublime Text 用 MT タグの入力補完パッケージである「 MTML Completions 」を公開していますが、今回は Github 製の人気エディタ「 Atom 」用の入力補完スニペットを作ってみました。

MTML Completions for ATOM

続きを読む

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();
}

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

以上です。