異なるボキャブラリーをまたがるタームについて

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
s-jack's picture

くだものボキャブラリー1にタームが、
くだもの
-みかん
-りんご
とありまして、
ジュース味ボキャブラリー2にタームが、
ジュース味
-みかん
-グレープ
というように、あるボキャブラリで利用するターム「みかん」を使いまわしたい、つまり異なるボキャブラリに所属または親を指定するようにすることはできますでしょうか?
同じボキャブラリ内で複数親を指定はできますが、違うボキャブラリでは関連で指定できません。
それが可能なモジュールや、解決法がありましたら教えてください。

追記:環境はD7,D8です

Comments

s-jack's picture

Drupal7についてテーブル構造を調べてみました。

Team_dataテーブルにtermのデータは、bocabularyテーブルで定義されているvocabularyのvidを格納している。
term_hierarchyテーブルで、上下関係を表すには親termのtidとparentカラムに親のtid格納しているが、レコードを追加することによって複数を指定できる。
しかし、別のBocabularyを指定する構造になっていないので、何らかの対策が必要。

ボキャブラリーはボキャブラリのテーブルで管理され、
複数ボキャブラリーのタームは、タームのテーブルで管理されている。
1つのボキャブラリを単位としてその最上位を選択できないノードと定義されているので、
単一のテーブルで管理されているからといって、複数ボキャブラリの頂上がノードとはなっていない。

また、エンティティの定義済みのフィールドが使い回しできるように、定義済タームが、他のボキャブラリで使い回しはできない。
オブジェクト化未完成といったところでしょうか。。。

よってボキャブラリを使うときは、完全にボキャブラリ単位で運用するべきである。。。かなw

D8はボキャブラリテーブルがなく設定をDB格納している模様、まだよく分からないけど調べます。