プラグイン開発:フィールドで使用されるソースグループを見つける

私は様々な方法でフィールドと動作するプラグインを書いていますが、私がする必要があるのは、特定のカテゴリフィールドでカテゴリソースグループを利用できるようにすることです。私はフィールドのハンドルとIDを持っており、そこから
FieldModel
インスタンスを得ることができます。しかし、そのfieldModelは、どのソースを使用しているかに関する情報を持っていないようです。

たとえば、私は
‘peopleClassification’という名前のカテゴリフィールドを持っていて、それはフィールド設定ページでソースセットとして
‘peopleWhoWorkHere’というカテゴリグループを持っています。

peopleClassificationフィールドのFieldModelオブジェクトを調べると、オブジェクトのどこかのpeopleWhoWorkHereグループのIDまたはハンドルが表示されることが予想されます。私は変数をダンプし、APIのドキュメントをチェックしているので、それを行う方法はありません。

CategoriesServiceには、指定されたフィールドIDのソースを返すメソッドがあると思っていましたが、何も見つかりませんでした。

APIのどこでこれらの2つを接続できるか、誰にでも提案がありますか?明らかに可能です。そうでなければ、Craftはまったく動作しません。

明確にするために、ここでは特定のエントリオブジェクトを扱っていません。フィールドハンドルとグループハンドルを一致させようとしています。

@ carlcsの回答は、私が必要とした情報(感謝)に私を得た。ここで私はそれをどのように完成したのですか?

$field->getFieldType()->getSettings() returns
an array with various pieces of meta data including a
source field with a value like group:42.
That number is the category group ID I needed to create an instance
of category group object.

list($type, $gid) = split(':', $field->getFieldType()->getSettings()['source']);

次に、$ gidを使用して、categoriesサービスからGroupのインスタンスをロードします。

$categoryGroup = craft()->categories->getGroupById($gid);

$categoryGroup contained the info I needed,
including the group’s handle, which I used to create a list of
categories.

ベストアンサー

FieldModelから、FieldTypeModelとその設定を取得する必要があります。このようなもの:

$settings = $field–>getFieldType()->getSettings();

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です