かたつむりくんのWWW

ブログ・ユーザー・ロールごとにフィールドの表示・非表示を切り替えるには

前回「フィールドやメニューの表示・非表示だけの制御だったら user.css がおすすめ」という記事を書きましたが、今回は、それをブログごと、ユーザーごと、ロールごとといった条件で表示・非表示を変える方法を紹介します。もちろん、MTAppjQuery がインストールされていることが前提です。

続きを読む

フィールドやメニューの表示・非表示だけの制御だったら user.css がおすすめ

Movable Type の記事投稿画面において、MTAppjQueryMTAppCustomize というメソッドを使えば、「表示オプション」に関係なく簡単にフィールドの表示・非表示を制御することができます。

表示オプション

しかし、フィールドの表示・非表示の制御だけであれば CSS で行った方がパフォーマンス的に良いかも知れません。メニューも然り。

そこで今回は、CSS でフィールドやメニューの表示を制御する方法をご紹介します。

なお、下記で紹介するコードは user.css に書いていくと良いでしょう。

また、フィールドの表示制御は記事の編集画面だけに適用するようにしています。記事編集画面以外にも使う場合は、先頭の #edit-entry を削除するか、適宜変更してください。メニューについては全ページ共通です。

続きを読む

Movable Type の記事投稿画面で複数のフィールドをグループ化し2列にする

Movable Typep の記事投稿画面で、複数のフィールドをグループ化し、そのグループ化した中身のフィールドを2列で表示する方法を紹介します。

完成した見た目は下図のようになります。

このカスタマイズは、MTAppjQuery の user.js と user.css にちょっとしたコードを書けば完成です。

続きを読む

Movable Type の記事投稿画面にドラッグ&ドロップの並び変えに対応したリッチテキストエディタを追加してみる

今回は、Movable Type の概要欄を例に、普通の textarea をリッチテキストエディタに変更し、さらにドラッグアンドドロップによる並び替えをしても入力出来なくならないようにしてみたいと思います。

概要欄をリッチテキストエディタにする方法は藤本さんがブログに書かれています。

この記事の中でも、

概要欄をドラッグアンドドロップで並べ替えると、リッチテキストが入力を受け付けなくなります(ページをリロードすれば入力できるようになります)

と書かれていますが、このドラッグアンドドロップに対応させてみたのが下記のコードです。

続きを読む

MTAppjQuery で大量のカテゴリがあっても選択しやすくしてみよう!Popup Category Selecter がいい感じ!

Movable Type でカテゴリが大量にあるとき、選択するのが面倒だったりしませんか?例えば都道府県すべてがカテゴリになっている場合などが考えられますね。

今回はそういったときでもカテゴリを選択しやすくするためのカスタマイズを紹介します。

今日の動画はこちら。

※音声ありです。

続きを読む

MTAppjQuery の user.css だけで作るとてもワイドな Movable Type の記事投稿画面が素敵

MTAppjQuery のメイン機能の中で意外と影が薄い user.css ですが、Movable Type 6 のサポートブラウザが IE8 からということもあり、CSS だけでも色々とできるようになってきています。

Full screen edit entry

今回は、user.css だけで、記事編集画面とテンプレート編集画面のメインカラムをほぼ画面いっぱいに広げるカスタマイズを紹介します(ちなみに PowerCMS は標準の機能で左メニューを左側に隠せます)。

個人的に、かなり気に入ってます。まずは動画をどうぞ。

※音声ありです。

続きを読む

かなり便利!?列も行も自由に増やせる .MTAppJSONTable(開発中)のデモ公開

次のバージョンの MTAppjQuery v1.6.0 で追加予定の .MTAppJSONTable() の動画で紹介してみました。

テキストエリアを表にし、列も行も自由に増やすことができます。値自体は JSON 文字列で保存されるので、MTタグでもPHPでもJSでも自由に料理することができると思います。

10分弱とちょっと長くなってしまいまいましたが、気楽に見ていただければ嬉しいです。

※音声ありです。

PowerCMSのウェブページカスタムフィールドの挙動について整理したメモ

PowerCMS™にはウェブページカスタムフィールドというのがあります。このカスタムフィールドの機能をざっと説明すると以下のようになります。

  1. 「ウェブページを選択」というボタンが表示される。
  2. そのボタンをクリックするとダイアログでウェブページ一覧が表示され、ウェブページを1つ選ぶことができる。
  3. カスタムフィールドを作成するときに設定したタグ、例えば RelatedPage と設定したとすると、それがブロックタグとなり、その中では MTPage 系のタグを使うことができる。

便利ですね。もちろん複数選択できるバージョンもあるし、記事を選択するバージョンもあります(そっちがメインかな)。

さて、今回のメモはこのフィールドに値があるときとか、選択したウェブページが未公開状態だったときとかの挙動を整理したものです。

最初に言っておくと、結果を見てみれば当たり前な感じなんです。。。
でも、ふと疑問に思ったんですよ、「ウェブページを選択したらそのカスタムフィールドに値は保存されるけど、その先が未公開だったら MTIf tag="" の判定はどうなるんだろう」って。

まあ、当たり前を当たり前に実装するプラグイン作者は何気に凄いです。サッカーの名選手と同じですね。

さて、結果については以下の様になりました。今回のカスタムフィールドのタグ名は RelatedPage とします。

続きを読む

アイテムダイアログに表示されるアイテムをログイン中のユーザーのアイテムに絞り込むプラグイン - AssetDialogAuthorFilter v1.2.0 リリース

えっと、約2時間前にリリースしたばかりのプラグインなんですが、公開直後に「こうやって実装した方がいいよ」っていうアドバイスを @okayama さんから頂きまして、がらっと書き換えました。

プラグインの仕様は下記の記事に書いたとおりで変更ありません。

ダウンロードは以下からお願いします。

@okayama さん、ありがとうございます!!

アイテムダイアログに表示されるアイテムをログイン中のユーザーのアイテムに絞り込むプラグイン - AssetDialogAuthorFilter

2014/07/28追記
アイテムダイアログに表示されるアイテムをログイン中のユーザーのアイテムに絞り込むプラグイン - AssetDialogAuthorFilter v1.2.0 リリース

記事の編集画面で本文欄などに画像を挿入するとき、アイテム一覧のダイアログが表示されますよね。

アイテムのダイアログ

デフォルトの挙動では、そのブログにアップロードされている画像がすべて表示されると思いますが、それをログイン中のユーザーがアップロードしたアイテムに絞り込んだ状態で表示するようにするプラグインです。

ダウンロードは以下からお願いします。

特に設定はありません。プラグインをインストールすれば適用されます。

続きを読む

MTAppjQuery v1.5.0 リリース - $.MTAppGetCategoryName() を追加ほか

MTAppjQuery v1.5.0 を公開しました。

今回のリリースでは、下記のような新機能の追加と修正があります。

新機能の追加

$.MTAppGetCategoryName();

カテゴリIDを渡して、記事の編集画面ではカテゴリ名を、ウェブページの編集画面ではフォルダ名を取得できます。

$.MTAppGetCategoryName({
    categories: MT.App.categoryList,
    id: 1, // Set Category ID you want to get the label or basename.
    field: 'label' // You can set 'label' or 'basename'
});

修正

  • $.MTAppSlideMenuV2() で、ウェブサイト名が長いときにサブメニューの上にウェブサイト名のテキストが重なって表示されていたバグを修正した。
  • 記事・ウェブページ・テンプレートのプレビュー画面でもMTAppjQueryが適用されるようにした。
  • splitモディファイアをダイナミックパブリッシングに対応させた。

ダウンロードはこちらからお願いします。

記事やウェブページの非公開日時を出力するプラグイン - UnpublishDate

Movable Type 6 から設定出来るようになった、記事やウェブページの非公開日時を出力するプラグイン「UnpublishDate」を公開しました。

すでに同じようなプラグインがあったらすみません。

プラグインをインストールすれば、以下の2つのタグが使えるようになります。

<mt:EntryUnpublishDate>
<mt:PageUnpublishDate>

mt:Dateタグと同様にformatモディファイアなどが使えます。

以上です。

MTSubCatsRecurse タグの苦手意識を克服したいあなたへ

MTSubCatsRecurseタグの苦手意識を克服したいあなたへ贈る記事です。

ちょっとラフな感じで。

続きを読む

Movable Type でカテゴリ同士の相互リンクを貼る方法

Movable Type でカテゴリ同士の相互リンクを貼る方法

Movable Type のカテゴリアーカイブにおいて、そのブログ内のカテゴリ同士で相互リンクを貼る方法を紹介します。

このカスタマイズでは「SpecificCategory」という特定のカテゴリのコンテキストをセットするプラグインを使いますので、あらかじめインストールしておいてください。

さて、ブログに下記のようなカテゴリがあったとします。

  • MTテンプレート
  • MTプラグイン
  • 日記

この中の2つを下記のように相互リンクさせます。

  • MTテンプレート <=> MTプラグイン
  • MTプラグイン <=> MTテンプレート
  • 日記

続きを読む

Movable Type で自社のIPアドレスがロックされてしまったときの対処法

Movable Type 5 から、一定時間に一定回数以上サインインに失敗した場合、そのユーザーがロックされたり、IPアドレスがロックされたりします。初期設定では 1800 秒間に 10 回失敗するとロックされます。

さて、ユーザーがロックされた場合は、ロックされたことを通知するメールにあるリンクにアクセスしたり、管理画面のユーザー管理で解除できますが、IPアドレスがロックされた場合の解除方法が分かりませんでした。

IPアドレスのロックは(ユーザーのロックも同様)、一定時間(初期設定では 1,800 秒)が経過すれば自動的に解除されますが、待てないときは以下のようにデータベースの値を変更すれば解除出来るようです。

  1. MTのデータベースにアクセス
  2. mt_failedlogin テーブルにアクセス
  3. failedlogin_remote_id カラムをロックされたIPアドレスで検索
  4. 該当するレコードの failedlogin_ip_locked フィールドの値を 1 から 0 に変更

SQLにすると以下のような感じです。

UPDATE `mt_failedlogin`
SET `failedlogin_ip_locked`=0
WHERE `failedlogin_ip_locked` = 1 AND `failedlogin_remote_ip` LIKE 'ロックされたIPアドレス'

この方法は自己責任で! 僕は phpMyAdmin でやりました :-p

ちなみに、特定のIPアドレスをロックさせないようにするには、システムの全般設定の「アカウントロックの設定」の項目のところで設定するか、「LockoutIPWhitelist」という環境変数を設定すればOKです。

以上です。

MTEntryExcerpt タグの本文からの自動生成について整理してみた

MTEntryExcerpt タグの本文からの自動生成について、なんとなく整理してみました。

MTEntryExcerpt タグは、記事の「概要」欄の値を出力するファンクションタグですが、「概要」欄に値がない場合は、本文欄から自動で概要文を作成して表示してくれます(デフォルト設定は40文字)。

ちなみに、自動生成しないようにする場合には、no_generate="1" を指定すればOKです。

さて、今、本文欄に下記のテキスト(エディタは「改行を変換」)が入っていて、概要欄は空だとします。全角文字が45文字あり、<br>を含めると49文字です。

アイウエオ<br>カキクケコ
あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめも

Point 1 : 自動生成では改行コードは置換され、HTMLタグは除去される

このサンプル記事について、下記のテンプレートタグで出力される値を見てみます。

【テンプレートタグ】
<mt:EntryExcerpt>
【出力結果】
アイウエオカキクケコ あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへ...

このように、全角39文字と半角スペース1つ(カタカナの後ろ)の計40文字が出力されました。

本文欄からの自動生成では、改行コード(\r\nや\n)は半角スペースに変換され、HTMLタグは除去されます。連続する改行コードはまとめて1つのスペースになります。

Point 2 : convert_breaks は効かない

自動生成された概要文には convert_breaks モディファイア(1を設定すると改行を変換)は効きません。だって、HTML タグは除去されてしまうので。

【テンプレートタグ】
<mt:EntryExcerpt convert_breaks="1">
【出力結果】
アイウエオカキクケコ あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへ...

Point 3 : 文字数変更はブログの投稿設定か words モディファイアで

自動生成の概要文の文字数は、デフォルトでは40文字です。これを変更するときは、ブログの投稿設定の「概要の文字数」を変更するか、words モディファイアを指定します。

【テンプレートタグ】
<mt:EntryExcerpt words="20">
【出力結果】
アイウエオカキクケコ あいうえおかきくけ...

Point 4 : 改行やHTMLタグを活かしたい場合

改行を活かしたい場合は自動生成の概要文ではダメなので、以下のようなテンプレートタグで EntryBody を書き出したら良いと思います。

【テンプレートタグ】
<mt:EntryExcerpt no_generate="1" setvar="entry_excerpt">
<mt:Unless name="entry_excerpt">
    <mt:EntryBody remove_html="1" trim_to="20+..." regex_replace="/\r?\n/g","<br>">
</mt:Unless>
【出力結果】
アイウエオカキクケコ<br><br>あいうえおかきく...

そして、HTMLタグについては指定した文字数で切れるところがちょうどHTMLタグの途中だと表示が崩れてしまうので、やはり remove_html="1" で除去した方が良いと思います。

おまけ : 自動生成概要文の...を変えたい

自動生成概要文の最後につく...を変えたい場合は、

Path-to-mt/lib/MT/Template/Tags/Entry.pm

の中の1722行目付近の以下のコードをカスタマイズすれば良いと思います。

return $excerpt . '...';

以上です。

特定のフィールドに保存されたIDに該当する記事を再構築する Movable Type プラグイン - RebuildRelatedObjects

RebuildRelatedObjects というプラグインを公開しました。

動作はいたってシンプルなのですが、なぜか説明がしにくいので、下図を使って説明します。

続きを読む

Movable Typeのカスタムフィールドの1行テキストは255文字まで

Movable Type のカスタムフィールドの1行テキストには、255文字まで保存できます。全角・半角どちらも255文字です。

全角だと半分くらいの128文字になるの?って気がしちゃうけど、255文字です。

豆知識として。

記事 n 件をランダムに取得するテンプレート - RandomArray プラグインバージョン

記事 n件をランダムに表示するPowerCMSのテンプレート | PowerCMS ブログ」に触発され、こんな感じの方法はどうだろうということで書いてみます。

bit part では、指定した配列からランダムに要素を取り出して配列で返す MTRandomArray タグを提供する「RandomArray プラグイン」を公開しています。

これを使うと、例えば「MTAppjQueryタグの付いた記事をランダムに5件表示したい」というのを以下のようなテンプレートで実現できます。

続きを読む

5 Star Comment Rating プラグインのコメント編集ページに「評価」が表示されないときの対処法

ここのところなぜか質問が連続している人気のプラグイン(謎)「5 Star Comment Rating」プラグインで、「コメントの編集画面で、以前は表示されていた投稿者のIPや評価数値がMT6では表示されません。」というご質問をいただきました。

このようなときは、mt-config.cgi に以下のように「ShowIPInformation」という環境変数に 1 を設定してみてください。

ShowIPInformation 1

これで IP アドレスや評価が表示されるようになります。