かたつむりくんのWWW

MTAppjQuery v1.9.0 リリース - MTCreateJSONタグ、MTAppCategorySwitch、MTAppMoveToWidgetの追加等

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

今回のリリースでは、

  • MTCreateJSON(ファンクションタグ)を追加
  • $.MTAppCategorySwitch() を追加
  • $.MTAppMoveToWidget() を追加
  • $.MTAppTemplateListCustomize() を追加
  • DataAPI の JavaScirpt SDK をプラグインの設定で簡単に利用できる機能を追加

などの機能追加の他、

  • MTAppListing の改善
  • MTAppOtherTypeCategories の機能向上
  • MTAppMultiFileUpload の機能向上
  • MTAppJSONTable の機能向上

などの機能向上、その他いくつかの修正があります。

詳細は下記リリースノートをご確認ください。

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

前回のリリースからだいぶ時間が経ってしまいました。今後は開発スピードをあげて行きたいと思います。

もっともっと使いやすいMTに!

これからも MTAppjQUery をよろしくお願いいたします! m(_ _)m

Movable Type の TinyMCE の「リンクの挿入/編集」で付けられるクラス名を変更するには

Movable Type のリッチテキストエディタ( TinyMCE )で入力した任意のテキストを選択し、「リンクの挿入/編集」ボタンをクリックすると下図のようなポップアップが現れ、選択したテキストにクラス名を付けることができます。

クラス名の選択:デフォルト

ここで付けられるクラス名を、MTAppjQuery プラグインを利用して変更する方法をご紹介します。Movable Type 6.2.4 + Chrome で動作確認しています。

続きを読む

PHP の preg_replace には u 修飾子をつけた方がいい

例えば、下記のようなコードがあったとします。この正規表現の書き方が良いか悪いかは別として、半角・全角スペースで区切られた文字列の最初の文字列だけを取得しようとしています。

<?php
$searchText = 'かたつむりくんのWWW Movable Type';
$result = preg_replace("/([^  ]+)([  ]+).+/", "$1", $searchText);
echo $result;
?>

想定した結果は「かたつむりくんのWWW」ですが、環境によっては結果が「か」だけになったりします。

続きを読む

mt:SetVars の中でインデントしても大丈夫

なんとなく mt:SetVars タグの中ではインデントはしてはいけない気持ちになっていました。

↓これはNGで、

<mt:SetVars>
    Roby =Robert Baggio
    Pixy =Dragan Stojković
</mt:SetVars>

↓こうしないとだめかと・・・

<mt:SetVars>
Roby =Robert Baggio
Pixy =Dragan Stojković
</mt:SetVars>

しかし、ソースコードを見てみたら行頭の空白文字は削除する処理が入っていました。したがって、下記の書き方は全部OKです。

<mt:SetVars>
Roby =Robert Baggio
Pixy =Dragan Stojković
</mt:SetVars>
    <mt:SetVars>
    Roby =Robert Baggio
    Pixy =Dragan Stojković
    </mt:SetVars>
<mt:SetVars>
    Roby =Robert Baggio
    Pixy =Dragan Stojković
</mt:SetVars>
<mt:SetVars>
    Roby =Robert Baggio
        Pixy =Dragan Stojković
</mt:SetVars>

思い込みって怖いですね(笑

IEはjQueryの.hide()でoption要素を非表示にできない

ドロップダウンリストの中の特定の選択肢(option要素)だけ非表示にしたいときは、jQuery の .hide() を使えば簡単に実現できそうです。

Chrome や Firefox はそれで実現できますが、残念ながら Internet Explorer は option 要素を .hide() で非表示にすることができません。ということは、CSS で display: none; してもダメということです。

したがって、jQuery で実装する場合は、IE のことも考えると、 .remove() で非表示にするか .prop("disabled", true) で選択できないようにするしかなさそうです。

以上、メモエントリーでした。

MTAppjQuery でPCとスマホで処理を分けるには

MTAppjQuery は PC ブラウザでの管理画面のカスタマイズを前提として開発されていますが、user.js で設定した内容はスマートフォン(スマートフォンオプション)でもそのまま実行されます。

これらの処理を PC のみ、スマホのみ、といった具合に限定することが可能です。

続きを読む

mt:EntryAssets タグの sort_by モディファイアには id も指定できる

記事に紐付いた画像を表示したいときには mt:EntryAssets タグを使いますね。

MTEntryAssets | テンプレートタグリファレンス - CMSプラットフォーム Movable Type -

今、このタグで画像を ID 順に取得したかったのですが、上記のドキュメントページを見てみたら並び順を指定する sort_by モディファイアには file_name created_by created_on のいずれかが指定できるようで id は書いてありませんでした。

そこでソースコードを見てみると、どうもできそうな雰囲気だったので試してみたら、問題なくできました(Movable Type 6.1.2 で確認済み)。

続きを読む

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アクセスがあったとの報告がありました。

Git のコミットログを確認したところ、当ライブラリのコアの JavaScript ファイルは MTAppjQuery v0.22 時点の2011年7月20日に削除しており、現在のバージョンには同梱されておりません。

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

mt-static/plugins/MTAppjQuery/lib/uploadify

また、当時から MTAppjQuery をアップデートしてお使いいただいている場合も、このファイルが残っている場合がありますので、ご確認いただければ幸いです。

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

【追記】
最新バージョンをお使いの場合も、コアの JavaScript ライブラリは削除してありますが、上記ディレクトリは残っていますので、ディレクトリごと削除していただくことを強く推奨いたします。