私はDBから直接 というボキャブラリIDを取得できますが、これには組み込み関数がありますか?例えば名前で語彙IDを取得
:
私は機能に組み込まれていることを必要とする「リスト」と呼ばれる語彙、 は、関数の引数として「リスト」を取得していて、 VIDを返します。
私は、このための機能で構築されたが、私の知る限り、ありませんDrupalの6
私はDBから直接 というボキャブラリIDを取得できますが、これには組み込み関数がありますか?例えば名前で語彙IDを取得
:
私は機能に組み込まれていることを必要とする「リスト」と呼ばれる語彙、 は、関数の引数として「リスト」を取得していて、 VIDを返します。
私は、このための機能で構築されたが、私の知る限り、ありませんDrupalの6
あなたはVIDだけで返されたオブジェクトのVIDプロパティを取得したい場合、私は..もほとんど、
/**
* This function will return a vocabulary object which matches the
* given name. Will return null if no such vocabulary exists.
*
* @param String $vocabulary_name
* This is the name of the section which is required
* @return Object
* This is the vocabulary object with the name
* or null if no such vocabulary exists
*/
function mymodule_get_vocabulary_by_name($vocabulary_name) {
$vocabs = taxonomy_get_vocabularies(NULL);
foreach ($vocabs as $vocab_object) {
if ($vocab_object->name == $vocabulary_name) {
return $vocab_object;
}
}
return NULL;
}
を、このための機能を持っています。
$vocab_object = mymodule_get_vocabulary_by_name("listing");
$my_vid = $vocab_object->vid;
Henriksが変数に格納することは、上記のコードと同じように非常に有効です。すべての要求に対して実行したくない場合があります。
編集も
のDrupal 7でこれが少し楽になりますどのtaxonomy_vocabulary_get_names()を使用できることは注目に値します。
を使用しています。 taxonomy_get_vocabularies()
に電話して、結果の配列であなたの名前を検索することで自分のロールを張ることができます。しかし、これはすべての呼び出しでデータベース要求を行います。
あなたは、多くの場合、コードから使用する語彙を持っている場合、一度variable_set()
経由Drupalの変数にVIDを保存し、インストールを行う上で語彙を作成variable_get()
(多くのモジュールを経由して戻ってそれを得るために、より効果的/より簡単かもしれませんそれはこの方法です)。
編集:ここにモジュールインストールでこれを行うサンプルコードがあります。
function mymodule_install() {
$ret = array();
$vocabulary = array(
'name' => t('myvocab'),
'multiple' => '1',
'required' => '0',
'hierarchy' => '1',
'relations' => '0',
'module' => 'mymodule',
'nodes' => array('article' => 1),
);
taxonomy_save_vocabulary($vocabulary);
$vid = $vocabulary['vid'];
variable_set('mymodule_myvocab', $vid);
return $ret
}
ヘンリク、私はあなたが気にしないことを望むが、私はいくつかのコードをhadnに私はインストールのボキャブを格納するためのサンプルを入れていた。 –
@Jeremy:問題ありません。どうぞよろしくお願いします。 –
私はtaxonomy_get_vocabulariesを提案しようとしていて、リクエストごとに*別の* DB呼び出しに関するあなたのメモを見ました...あなたは正しいです。 –
助けてください。
function _my_module_vid($name) {
$names = taxonomy_vocabulary_get_names();
return $names[$name]->vid;
}
これはうまくいくはずですが、その名前のボキャブがない場合は、どのようなチェックをしてFALSEを返しますか? –
あなたは、ボキャブラリが関連付けられているノードタイプを知っていますか。だからtaxonomy_get_vocabularies()を使い、引数としてノード型を渡して、あなたが望む詳細を得ることができます! Drupalの7の場合
あなたは語彙のマシン名を知っていれば、これは方法です:
$vid = taxonomy_vocabulary_machine_name_load('your_vocabulary_name')->vid;
あなたは語彙の唯一の本当の名前を知っている場合は、この機能を使用することができます。
function _get_vocabulary_by_name($vocabulary_name) {
// Get vocabulary by vocabulary name.
$query = db_select('taxonomy_vocabulary', 'tv');
$query->fields('tv', array(
'machine_name',
'vid',
));
$query->condition('tv.name', $vocabulary_name, '=');
$vocabulary = $query->execute()->fetchObject();
return $vocabulary;
}
でDrupalの7あなたが使用できます。
$vocab_object = taxonomy_vocabulary_machine_name_load('vocabulary_name');
$my_vid = $vocab_object->vid;
+1を追加する例 –
** D7ユーザーは注意してください:** ' - > name'の代わりに' $ vocab_object-> machine_name'を使用してください! – mate64