AnotherCustomFieldsプラグインをダイナミック対応にする(その2)

昨日の記事で述べたように、DynamicMTMLには、個々のプラグインのconfig.yamlを読み込む処理が入っています。
この仕組みを利用すると、AnotherCustomFields用の各config.yamlファイルの情報を読み込むことができます。

1.すべてのプラグインのconfig.yamlを得る

まず、すべてのプラグインのconfig.yamlの情報をまとめて得ます。
これは、DynamicMTMLクラスの「stash」というメンバ関数で行うことができます。
stash関数は、DynamicMTMLクラスのプロパティに対するgetter/setterの働きをします。

先日の記事のように、DynamicMTMLクラスのオブジェクトを変数$appに割り当てたとします。
この場合、以下のように書くことで、すべてのプラグインのconfig.yamlの情報を得て、変数$cfgに代入することができます。

$cfg = $app->stash('plugins_config');

ただし、昨日の記事で述べたように、DynamicMTMLに標準で入っているspycだと、config.yamlの内容を正しく読み込めない場合があります。
spycをバージョン0.5にアップグレードすると、正しく読めるようになります。

2.個々のプラグインの情報を得る

上記の方法で得られた結果は、連想配列の形になっています。
個々の要素のキーが、各プラグインのIDです。
また、個々の要素の値が、各プラグインのconfig.yamlファイルの内容になります。

config.yamlファイルの内容は、PHPの連想配列に変換されます。
連想配列をたどって、config.yamlファイル内の個々の情報を得ることができます。

例えば、「acfsample」というIDのプラグインで、ブログ記事に「subtitle」というフィールドを追加したとします。
また、そのフィールドのテンプレートタグをMTEntrySubTitleにするようにしたとします(「tag: EntrySubTitle」と記述)。
上記のように変数$cfgにconfig.yamlの情報を割り当てた場合、subtitleフィールドのテンプレートタグ名は、以下で得ることができます。

$cfg['acfsample']['object_types']['entry']['subtitle']['acf']['tag']