回答
我有一個函數這一點,以及幾乎..
/**
* 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;
}
如果你想VID剛剛得到的返回對象的VID財產。關於它存儲在一個變量
$vocab_object = mymodule_get_vocabulary_by_name("listing");
$my_vid = $vocab_object->vid;
Henriks的一點是,你不會想爲每個請求運行上面的代碼非常有效。
編輯
另外值得一提的是,在Drupal 7,你可以使用taxonomy_vocabulary_get_names()這使它成爲一個更容易一些。
這裏沒有內置函數afaik。您可以通過調用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
}
亨利克,我希望你不介意,但一我有一些代碼讓我把一個樣本存儲在安裝詞庫中。 – 2009-10-29 11:08:04
@Jeremy:沒問題,不客氣。 – 2009-10-29 14:22:09
我正要建議taxonomy_get_vocabularies,並在每個請求中看到有關* another * DB調用的註釋...您是對的。 – 2012-04-13 04:12:27
應該有所幫助。
function _my_module_vid($name) {
$names = taxonomy_vocabulary_get_names();
return $names[$name]->vid;
}
這應該起作用,但如果沒有帶有該名稱的詞彙,那麼isset檢查和返回FALSE如何? – 2012-10-26 19:12:34
您知道與詞霸關聯的節點類型。因此,只需使用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. 如何通過名稱獲得控件
- 2. 獲得通過字符串名稱
- 3. 通過約束名稱獲取表名
- 4. 通過網絡管理Plone詞彙表
- 5. 我如何通過node_type得到分類詞彙表
- 6. 空的詞彙通過CountVectorizer
- 7. 如何通過日期獲得匯率?
- 8. 如何通過名稱獲得編解碼器的ffmpeg列表?
- 9. 過濾詞彙表視圖
- 10. 如何獲得通過屬性名稱元素與定義的詞
- 11. 獲取名稱,:通過
- 12. 通過小型詞彙進行詞彙封閉?
- 13. 如何通過文件名獲得常量名稱
- 14. OpenCV,由BOWKMeansTrainer獲得的詞彙矩陣
- 15. 保持錯誤計數並獲得關聯詞彙前10名?
- 16. 從名詞詞組獲得動詞python
- 17. Unity HumanTrait.GetMuscleDefaultMax()通過名稱得到
- 18. 過得去名稱
- 19. 如何在子表中通過名稱foreign字段獲取名稱父表?
- 20. 我可以通過表名獲取模型類的名稱嗎?
- 21. 通過http請求獲得名稱服務器的響應?
- 22. Tensorflow:如何通過名稱獲得張量?
- 23. Javascript:通過名稱獲得iCheck電臺價值
- 24. jQuery,如何通過名稱獲得子div的輸入
- 25. 如何以編程方式通過名稱獲得Angular服務
- 26. 如何在ASP.NET C#代碼通過獲得項目名稱
- 27. c# - PrintPreviewDialog:通過反射獲得工具條的名稱
- 28. 通過python使用硒如何獲得按鈕的名稱?
- 29. 是否有可能通過名稱獲得課堂鏡像?
- 30. 如何通過c中的反射獲得屬性名稱#
+1添加示例 – 2009-10-29 12:26:18
** D7用戶請注意:**使用'$ vocab_object-> machine_name'而不是' - > name'! – mate64 2013-08-19 11:45:03