先日お知らせしたとおり、MTOS 5.1でカスタムフィールドのような機能を実現する「AnotherCustomFields」というプラグインをリリースします。
1.AnotherCustomFieldsプラグインの概要
AnotherCustomFieldsプラグインは、MTOS 5.1xでカスタムフィールドのようなことができるプラグインです。
フィールド追加の定義をconfig.yamlファイルで書く必要がありますが、その点を除けばMovable Type標準のカスタムフィールドとほぼ同様の動作をします。
また、以前に出していた書籍「MTOS活用テクニック」と比べると、プラグインを自作したり、管理画面のテンプレートをカスタマイズしたりといった作業は不要で、大幅に簡単になっています。
例えば、ブログ記事にサブタイトルのフィールドを追加する場合だと、以下のようなconfig.yamlファイルを書いて、サーバーにアップロードするだけです。
name: EntrySubTitle
id: EntrySubTitle
description: ブログ記事にサブタイトルの入力欄を追加します
author_name: ご自分の名前
version: 1.00
schema_version: 1.00
object_types:
entry:
subtitle:
type: string
size: 255
revisioned: 1
acf:
type: text
label: サブタイトル
tag: EntrySubtitle
2.AnotherCustomFieldsプラグインの機能・仕様
AnotherCustomFieldsプラグインの機能・仕様は以下の通りです。
2-1.フィールドを追加できるオブジェクト
以下のオブジェクトにフィールドを追加することができます。
- ブログ記事
- ウェブページ
- カテゴリ
- フォルダ
- ブログ
- ウェブサイト
- ユーザー
ブログ記事/ウェブページの編集画面では、フィールドをドラッグアンドドロップで並べ替えることもできます。
その他のオブジェクトの編集画面では、フィールドのドラッグアンドドロップはできませんが、config.yamlファイルでフィールドの表示順序を指定することができます。
なお、Movable Type標準のカスタムフィールドでは、アイテム(画像等)/コメント/テンプレートにもカスタムフィールドを追加することができます。
一方、AnotherCustomFieldsプラグインではこれらのオブジェクトには対応していません。
なお、Movable Type標準のカスタムフィールドでは、カテゴリごとにブログ記事に表示するカスタムフィールドを切り替えることができます。
一方、AnotherCustomFieldsプラグインでは、この機能には対応していません。
2-2.表示できるフィールドのタイプ
以下のようなタイプのフィールドを表示することができます。
- 1行テキスト入力
- 複数行テキスト入力
- 日本の郵便番号
- 日本の電話番号
- チェックボックス
- セレクト
- ラジオボタン
- 画像
- 動画
- 音声
- ファイル
2-3.Listing Framework対応
Movable Type 5.1のListing Frameworkに対応しています。
AnotherCustomFieldsプラグインで追加したフィールドを、オブジェクト一覧の画面に表示することができます。
また、フィールドの値で絞り込みや並べ替えを行うこともできます。
なお、Listing Framework対応は、別プラグイン(CustomFieldsListing)で行います。
2-4.ブログ記事の検索
テンプレートでブログ記事を出力する際に、SearchEntriesプラグインを使うことで、検索や並べ替えを行うこともできます。
AnotherCustomFieldsプラグインで追加したフィールドも、検索や並べ替えの対象にすることができます。
2-5.Movable Type標準のカスタムフィールドとの互換性
Movable Type標準のカスタムフィールドとは、内部的な実装が異なります。
そのため、データ的な互換性はありません。
また、Movable Type標準のカスタムフィールドでは、カスタムフィールドの種類を増やすプラグインがあります(More Custom Fieldsプラグインなど)。
しかし、それらのプラグインを、AnotherCustomFieldsプラグインに適用することはできません。
3.プラグインのダウンロード
AnotherCustomFieldsプラグイン本体は、以下からダウンロードすることができます。
また、Listing Framework対応は、CustomFieldsListingプラグインによって行います。
CustomFieldsListingプラグインは以下からダウンロードすることができます。
いずれも、ダウンロードしたZipファイルを解凍すると、「plugins」と「mt-static」のフォルダができます。
これらのフォルダを、MTOSのインストール先ディレクトリにアップロードします。
4.サンプルのconfig.yamlファイルとテーマ
プラグインの動作をお試しいただくために、サンプルのconfig.yamlファイルとテーマをご用意しました。
ブログ記事に、サブタイトルと、記事のトップに表示する画像のフィールドを追加するものです。
サンプルは以下からダウンロードすることができます。
AnotherCustomFieldsSample_1_00.zip
Zipファイルを解凍すると、「plugins」と「themes」のフォルダができます。
AnotherCustomFieldsプラグインとCustomFieldsListingをインストールしてあるMTOS環境に、これらのフォルダをアップロードすると、フィールドが追加されます。
また、「デザイン」→「テーマ」メニューを選んで、テーマ一覧で「クラシックブログ(サブタイトル/トップ画像付き) 1.0」を選ぶと、上の画面のように出力されるテーマに切り替えることができます。
なお、Movable Type標準のカスタムフィールドと同様に、ブログ記事にフィールドを追加した直後は、ブログ記事の編集画面にはフィールドは表示されません。
「表示オプション」の部分で、各フィールドのチェックボックスをオンにすると、フィールドが表示されます。
5.プラグインのライセンスと解説書の販売
AnotherCustomFieldsプラグインは、GPLv2ライセンスで無償配布します。
また、AnotherCustomFieldsプラグイン用のCustomFieldsListingプラグインも、GPLv2ライセンスで無償配布します。
MTOS 5.1xにご自由にインストールしてお使いいただくことができます。
AnotherCustomFieldsプラグインの解説書(PDF)は、有償(9,800円)での販売とさせていただきます。
AnotherCustomFieldsプラグイン解説書特設ページでご購入いただくことができます。









![Hvarf-Heim (Hvarf) [Disc 1] Hvarf-Heim (Hvarf) [Disc 1]](http://userserve-ak.last.fm/serve/34s/37517227.jpg)

コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
CustomFieldsListingと
AnotherCustomFieldsの
両方をインストールしましたが
『システムのプラグイン設定 』画面で確認しても
CustomFieldsListing のみ表示されており
AnotherCustomFields が表示されません。
ご確認を頂ければ幸いです。
こんにちは。
不具合をご指摘いただき、ありがとうございました。Zipファイルのディレクトリ構造が間違っていましたので、修正しました。
お手数ですが、ファイルを再度ダウンロードしてください。
>お手数ですが、ファイルを再度ダウンロードしてください。
多分、未だ不具合があると思います。
こんにちは。
こちらで確認した限りでは、修正後のZipファイルでは問題は起こっていません。
なお、アップロード後の正しいファイル構成は以下の通りです。
MTOSのディレクトリ
├ mt-staticディレクトリ
│ └ pluginsディレクトリ
│ └ AnotherCustomFieldsディレクトリ
│ └ jsディレクトリ
│ └ acf_asset.js
└ pluginsディレクトリ
└ AnotherCustomFieldsディレクトリ
├ libディレクトリ
│ └ AnotherCustomFieldsディレクトリ
│ ├ L10Nディレクトリ
│ │ └ ja.pmファイルなど
│ └ BackupRestore.pmファイルなど
├ tmplディレクトリ
│ └ fields_html.tmplファイル
└ config.yamlファイル
階層に└ AnotherCustomFieldsディレクトリを付加しましたら・・
直りました(^_^;)
今現在上がってるダウンロードファイルはこの階層が修正されておりません。
ローカルで修正されて上げ忘れておられませんか?
ご参考まで。(・∀・)
こんにちは。
アップロードしたファイルをこちらで確認した限りでは、正しいディレクトリ構造になっているのですが・・・。
また、Zipファイルを解凍した後、素のMTOSにインストールして、プラグインが正しく認識されることも確認しています。
>また、Zipファイルを解凍した後、素のMTOSにインストールして、プラグインが正しく認識されることも確認しています。
失礼・・Google Chromeだと何度リトライしても最初と同ファイルしかダウンロードされず。。(謎)
Firefoxでリトライして確認しました。
きちんと直っておりました。
失礼しました。(^_^;)
すばらしいプラグインをありがとうございます。
エラーが出てしまったので質問です。
エントリーを投稿するときと、カテゴリを追加するときにメッセージが出ます。(エラー文を記載するとコメント投稿出来なかったので部分的にですが、)
integerが利用できません。
a HASH ref while 「strict refs」として
AnotherCustomFieldsのUtil.pmの19行目
いままでは、書籍「MTOS活用テクニック」を参考にプラグインを作成して項目を追加して、利用できていたのですが、今回のプラグインを両方共追加したら、上記エラーが出たので、「MTOS活用テクニック」を参考に作成したプラグインを削除してみましたが、同様の状況です。
対処方法がございましたら、ご教授いただければと思います。
上記、質問の件ですが、すべてのプラグインを外してからプラグインを一つづつ有効にして、動作を確認したところ、SuperSortを有効にすると上記エラーがおこり、外すと正常に動作しました。
>pigさん
こんにちは。
不具合を確認できました。修正しましたので、以下からZipファイルをダウンロードして、プラグインをアップロードしなおしてくださいますようお願いします。
http://www.h-fj.com/mt_plugin/AnotherCustomFields_1_00_1.zip
ダウンロードして動作確認しました。
大丈夫なようでした。ありがとうございました。
プラグインありがとうございます。基本的なご質問かもしれませんがご回答いただけますでしょうか?フィールド追加用プラグインをアップロード後、mt.cgiで以下のようなエラーが出ました。
Got an error: Error reading /home/URL名/www/home/mtos/plugins/EntryMultiField/config.yaml: Failed to load YAML document from string
宜しくお願い致します
>shchrさん
こんにちは。
申し訳ありませんが、こちらでは現象を再現することができませんでした。
EntryMultiFieldのconfig.yamlファイルに、何か手を加えたとかいうことはないでしょうか。
ご返答ありがとうございます。
一応解決いたしましたので、要所を以下に記させて頂きます。
壱様の作成されましたEntryMultiFieldのconfig.yamlファイルを編集したのですが、最終行の改行部分を残したままアップロードしたところ正常に動作いたしました。改行部分を削除すると上記のエラーが出ました。
アップロード後使用したところ正常に動作しましたので、今後活用させて頂きます!
素晴らしいプラグイン、ありがとうございます。
mtos5でのカスタムフィールド風の設定が可能とのことで大変うれしいです。
藤本様のサンプルファイル「AnotherCustomFieldsSample_1_00.zip」を利用してブログ記事にサブタイトルと画像のフィールドを設置する、を試しましたが、画像がアップロードされるものの、登録された様子がありません。
サブタイトルは問題なく表示されます。
これはどのような問題かお分かりになりますでしょうか?
初歩的な質問かもしれませんがお答え頂ければ幸いです。
(なお、藤本様の書籍「MTOS活用テクニック」は手元にありますので、もし解決手段が載っている場合は参照できます)
よろしくお願いいたします。
>teiさん
こんにちは。
申し訳ありませんが、そちらの環境で動作を追ってみないと、原因は不明です。
藤本様
返信ありがとうございます。
手順は以下のように行いました。mtはversion 5.11です。
(AnotherCustomFieldsプラグインとCustomFieldsListingも以下の手順でインストール済み)
*AnotherCustomFieldsSample_1_00.zipをダウンロードし、解凍。
*フォルダ内の「EntryFeilds」「classic_blog_with_subtitle_and_topimage」の両フォルダを圧縮。
*両フォルダをレンタルサーバーのロリポップにロリポップFTPを用いてアップロードし解凍(アップロード先フォルダはそれぞれ「/mt/plugins」と「/mt/themes」)。
*mtを再構築。
*新しいブログ(テスト用)を作成、テーマ「クラシックブログ(サブタイトル/トップ画像付き) 1.0」を選択。
*「ブログ記事の作成」からサブタイトル、トップ画像のフィールド追加の確認
*サブタイトルは文字を登録、mtタグの追加で記事への表示までできる。
*トップ画像は画像を選択、アップロードまでできるが、「次へ」を押すと元のページへ戻る。
*アップロードはされているがフィールドには追加されていない状態になる。
初心者のためわかりにくい説明ですみません。
どこか手落ちなどはありますでしょうか?
お答えいただけると幸いです。
よろしくお願いいたします。
>teiさん
こんにちは。
動作の状況からすると、プラグインのJavaScriptが正しく動作していないと思われます。
ただ、申し訳ありませんが、そちらの環境で動作を見てみないと、どこで不具合が発生しているか分からないです。
別の方法でアップロードし直したら(個別のフォルダごとではなくまとめてアップロード、サーバー内で解凍、配置)うまく作動しました。
質問に丁寧に答えて頂きありがとうございました。
MTOSにてAnotherCustomFieldsとCustomFieldsListingを利用させていただいております。
各プラグインをダウンロード、インストール後、ブログ記事一覧を表示すると下記のエラーメッセージが表示されました。
何か原因は考えられますでしょうか?
Can't locate object method "_langtag_munging" via package "customfieldslisting::L10N"
多言語化が必要かと思い、下記記事を参考に多言語化を行ってみましたが、同様のエラーメッセージが表示されました。
AnotherCustomFieldsプラグイン(多言語対応) - The blog of H.Fujimoto
http://www.h-fj.com/blog/archives/2011/10/26-190714.php
各主バージョンは下記の通りです。
MTOS: 5.12
AnotherCustomFields: 1.01
CustomFieldsListing: 1.11
どうぞよろしくお願いいたします。
>atsushiさん
こんにちは。
_langtag_mangingというサブルーチンは、Locale::MakeTextというモジュールに入っています。
本来なら、Movable Typeに同梱されているLocale::MakeTextモジュールが読み込まれるはずですが、何らかの原因で、他のバージョンのモジュールが読み込まれているか、あるいはモジュールが読み込まれていないことが考えられます。
ただ、申し訳ありませんが、こちらの環境で再現できませんので、そちらの環境で動作を追ってみないとはっきりとした原因は分かりません。
> 壱様
早速のお返事ありがとうございます。
> _langtag_mangingというサブルーチンは、Locale::MakeTextというモジュールに入っています。
> 本来なら、Movable Typeに同梱されているLocale::MakeTextモジュールが読み込まれるはずですが、何らかの原因で、他のバージョンのモジュールが読み込まれているか、あるいはモジュールが読み込まれていないことが考えられます。
詳しくご説明いただきありがとうございます。
確認してみたところ、Locale::MakeTextモジュールとその中の_langtag_mangingサブルーチンは入っておりました。
(ナイトリービルド版やMovable Type5のMaketext.pmとも見比べてみましたが、特に違いはありませんでした。)
名前から察するに言語関連のモジュールかと思い、自分なりに原因を探してみたところ、
「L10N.pm」と「L10N」ディレクトリを削除すると、問題なく動作いたしました。
(他のプラグインの「L10N.pm」や「L10N」内の言語設定と見比べてみましたが、特におかしなところはありませんでした。)
今回の私の件では、英語表記でも特に問題ありませんので、
削除した状態にしておきたいと思います。
「こういったケースもある」という一つのご参考になれば幸いでございます。
(私のインストール方法が間違っているだけかもしれませんが…。)
度々失礼いたします。
AnotherCustomFieldsの管理画面のチェックボックスのHTMLに間違いがあるのではと思い、ご報告をさせていただきます。
<input type="checkbox">のidが「<mt:var name="field_id">_acf"」なので、その後に続くlabelのforは「<mt:var name="field_id">_acf」になるのではないでしょうか?
既にご存知の不具合でしたら、申し訳ありません。
以下、修正した場合のコードです。
# plugins/AnotherCustomFields/lib/AnotherCustomFields/CMS.pm 25行目
▼修正前
<input type="hidden" name="<mt:var name="field_name" escape="html">" id="<mt:var name="field_name" escape="html">" value="<mt:var name="field_value">" /><input type="checkbox" name="<mt:var name="field_name" escape="html">_acf" value="1" id="<mt:var name="field_id">"<mt:if name="field_value"> checked="checked"</mt:if> class="cb acf_cb" /><mt:if name="check_label"> <label class="hint" for="<mt:var name="field_id">"><mt:var name="check_label" escape="html"></label></mt:if>
▼修正後
<input type="hidden" name="<mt:var name="field_name" escape="html">" id="<mt:var name="field_name" escape="html">" value="<mt:var name="field_value">" /><input type="checkbox" name="<mt:var name="field_name" escape="html">_acf" value="1" id="<mt:var name="field_id">_acf"<mt:if name="field_value"> checked="checked"</mt:if> class="cb acf_cb" /><mt:if name="check_label"> <label class="hint" for="<mt:var name="field_id">_acf"><mt:var name="check_label" escape="html"></label></mt:if>
特定のブログのブログ記事にフィールドを追加する、というようなことはできるのでしょうか。
そこら辺のことは解説書に書かれているのかもしれませんが、できるかどうかだけでも知りたいです。
>シマダさん
こんにちは。
>特定のブログのブログ記事にフィールドを追加する、というようなことは
>できるのでしょうか。
できます。
手順は解説書をご参照ください。
なお、厳密に言うと、フィールド自体はすべてのブログのブログ記事に追加されます。
ただ、特定のブログでだけ、追加したフィールドを表示するように設定することが可能です。
壱さん
>>特定のブログのブログ記事にフィールドを追加する、というようなことは
>>できるのでしょうか。
>できます。
>手順は解説書をご参照ください。
>
>なお、厳密に言うと、フィールド自体はすべてのブログのブログ記事に追加されます。
>ただ、特定のブログでだけ、追加したフィールドを表示するように設定することが可能です。
すばらしいです!
今後CMSを選ぶときは、MTOS+AnotherCustomFieldsも視野に入れた検討をいたします。
壱さん、初めまして。
先日、解説書を購入させていただいたものです。
ウェブサイトのウェブページの画像フィールドで
下記のエラーが発生してしました。
=======================================
(画像アップロードの画面が立ち上がり…)
エラーが発生しました。
画像のサイズを変更できませんでした: サイズを0x120に変更できませんでした。
=======================================
ウェブサイトのカテゴリの画像フィールドでも
同様のエラーがでます。
ブログのウェブページは正常にアップできます。
MTOSのバージョンは5.12です。
「MultiObjectFields」を修正しております。
どのように対処すればよろしいでしょうか?
>いのさん
プラグインご利用ありがとうございます。
申し訳ありませんが、こちらでは現象を再現することができませんでした。
そちらの環境でプラグインの動作を追ってみないと、原因は不明です。
壱さん、迅速なご回答ありがとうございます。
返信おそくなってしまい申し訳ありません。
上記の件、了解いたしました。
こちらもテスト環境ですし、
そこの箇所は修正が頻繁にあるところではないので大丈夫です。
ご参考までに、テスト環境は
エックスサーバー X10プラン
です。
ではでは、また何かありましたら宜しく願いいたします。
こんにちは。
昨日解説書を購入させていただいた者です。
解説書通りに設定を行っていたのですが、ブログ記事アーカイブテンプレートの保存/再構築時に「(テンプレートタグ名)は存在しません」とエラーが出てしまいました。
MTOSのバージョンは5.12です。
「EntryMultiField」と「EntryTopImage」を少しだけ修正しました。
ブログ作成画面には各フィールドで値を入力できますし、画像アップロードしたものもサーバーに反映されていました。
ログを見てみると下記のようなものが発生しています。
AnotherCustomFieldsでエラーが発生しました: Can't use string ("integer") as a HASH ref while "strict refs" in use at /plugins/AnotherCustomFields/lib/AnotherCustomFields/Util.pm line 19.
何かこちらの設定でミスをしてしまったのでしょうか?
よろしくお願いいたします。
すみません。上記の追記です。
自分がダウンロードしていたのは「AnotherCustomFields_1_00」でした。
「AnotherCustomFields_1_00_1」を入れ直したら治りました。
お騒がせしました・・。
壱さん、初めまして。
便利なプラグインのご提供ありがとうございます。
サンプルを元に、同じように自分でconfig.yamlを書いてみました。
うまく動いているのですが、入力するフィールドの初期値が
HASH(0xa0004cc)
となってしまいます。
config.yamlの書き方で、初期値を設定しておく方法はあるのでしょうか。typeはtextです。
一部、自己レスです。
>HASH(0xa0004cc)
>
>となってしまいます。
>
この原因は config.yaml をutf-8以外で書いてアップしていたための不具合でした。
どのみち初期値の設定方法が分からないので、ご教示ください。
>ようどうさん
こんにちは。
初期値の設定方法はマニュアルに記載してあります。
壱さん。
こんにちは。
先日解説書を購入しこちらのプラグインを快適に使わせていただいております。
質問なのですが、
MT有料版からMTOSへの変更で記事をインポート機能を使って移し替えたいと考えています。
有料版で作ったカスタムフィールドの値を、こちらのプラグインで作ったフィールドに移す方法はありますでしょうか?
AnotherCustomFieldで設定したタグ名と有料版カスタムフィールドのタグの名前は同じにして、有料版からXMLを書き出し、AnotherCustomFieldsを設定し終えたMTOSに
インポートしてみましたが上手くいきませんでした。
記事の量がおおいので、一括変換できる良い方法がありましたら
ご教授宜しくお願いします。
>まるさん
こんにちは。
申し訳ありませんが、現状ではMT標準のカスタムフィールドの値を、このプラグインのフィールドに移す機能はありません。
今後で、商用ライセンス対応版を出す際に、フィールドを移す機能を追加する予定です。
壱さま
お世話になっております。
複数のブログで、違うフィールドを追加しています。
(blog_id: 2,3 というように)
このとき、例えば
ID:2ブログのみに表示されるフィールドの一部を必須にすると、
ID:3のブログで投稿時、「表示されていない項目」に対して
「〇〇フィールドは入力必須です。」
というエラーメッセージが出て、投稿できません。
ブログIDを指定しても、実際にはデータベースにテーブルが追加されているということで、ブログをまたがって必須・任意を使い分けることは原理的に不可能なのでしょうか?
>高橋さん
こんにちは。
ご指摘の件は不具合だと思いますので、調査して修正します。
今しばらくお待ちください。
壱さま
プラグインをありがとうございます。先日解説書も購入させていただき、導入を試しているのですが、再構築時に「Cannot find column 'フィールド名' for class 'MT::Entry」のエラーが出てしまいました。素人のため、自分では解決をすることが出来ませんでした。対処方法がございましたら、教えていただけますでしょうか。サンプルの.yamlファイルをダウンロードして試してみましたが、同じ症状です。よろしくお願いいたします。
>なかじまさん
こんにちは。
ごく一部のサーバーで、Cannot find columnのエラーが発生することがあるようです。
サーバーのPerlのモジュールのバージョン等が原因のようで、プラグイン側で対処することはできません。
申し訳ありませんが、別のサーバーをお使いいただきますようお願いします。
壱さま
早速のご回答をいただきまして、ありがとうございます。
サーバーの方の問題とのこと、了解いたしました。現在ロリポップのレンタルサーバーを使用しておりました。
こちらの都合で、今すぐにサーバーの変更が出来ないのですが、今後の参考に、現段階で動作確認の取れているサーバーのリストなどがあれば、教えていただければ幸いです。
>なかじまさん
こんにちは。
申し訳ありませんが、動作確認が取れているサーバーのリストはありません。
ただ、これまでの経験上、ロリポップではトラブルが多いことは事実です。
壱様
MTOS用のカスタムフィールドのプラグイン、大変助かっています。ありがとうございます。
主に画像やテキストフィールドで使用しているのですが、フラグ管理でラジオボタンを使用しています。
ところが、ラジオボタンのフィールドの設定が悪いのか、エントリーの変更画面でもチェックした値が反映されていません。
また、その値を参照した記述を行っているテンプレート側でも正しい内容が出力されていません。
新規のエントリー登録画面ではdefault:設定が反映されるのですが、登録後はいずれのラジオボタンも未選択となってしまっています。
これは、config.yamlの設定が間違っているか、あるいはサーバの環境によるものでしょうか?
ご教授いただければと思います。よろしくお願い致します。