في Drupal 6 سأذهب إلى قسم التصنيف الخاص بي/المشرف وسوف أتمكن من العثور على $ vid (رقمي) في عنوان URL.
في Drupal 7 (بلا شك بسبب إدخال المصطلحات ككيانات) ، لم يعد عنوان URL مطولاً (وقد يقول البعض أنه أكثر نظافة) لأنه يظهر الآن اسم الجهاز (اسم الحزمة؟) من المفردات كما يمكن رؤيتها في admin/structure/taxonomy/my_vocabulary/edit
.
اللعبة النهائية التي أستخدمها هي استخدام taxonomy_get_tree ($ vid ، $ الأصل ، $ max_depth ، $ load_entities) لتحميل مفرداتي ، والعمل معها بطرق مجيدة ووفيرة ، ولكن للأسف لا تقبل هذه الوظيفة اسم_آلة ولكن يفضل الرقم $vid
.
سأقبل بدائل لتحميل شجرة فوكاب كاملة (أي جميع المصطلحات وعلاقاتها مع بعضها البعض) ، لكنني أعتقد أنه يجب الإجابة على هذا السؤال مباشرة للأجيال القادمة لجوجل.
في الواقع يمكنك استخدام:
$vocab = taxonomy_vocabulary_machine_name_load('my_vocabulary');
$vid = $vocab->vid;
بعد مانو ، إذا كان لديك وصول Drush سطر الأوامر ، يمكنك القيام بما يلي:
drush php-Eval '$ tax = taxonomy_vocabulary_machine_name_load ("main_site_structure")؛ echo $ tax-> vid؛'
يمكنك استخدام الجدول {taxonomy_vocabulary}
يدويًا في قاعدة البيانات ، ثم تحقق من العمود vid
.
في D7
إذا كان كل ما تحتاجه هو معرف المفردات (vid) وأنت تعرف اسم الجهاز ، يمكنك استخدام:
$query = db_select('taxonomy_vocabulary', 'tv');
$query->fields('tv', array('vid'));
$query->condition('tv.machine_name', __VOCAB_MACHINE_NAME, '=');
$result = $query->execute();
$data = $result->fetchAssoc();
$vid = $data['vid'];
زيادة صغيرة في الأداء: ~ 0.0036489963531494 ثانية إلى ~ 0.00030779838562012 ثانية.
يمكن بالطبع تصميم هذا حسب الحاجة. ما عليك سوى تغيير الحالة إلى المعلومات التي لديك.
أنا أستخدم الكيان_الحمل () لتحميل كائن vocab الخاص بي ، واستلامه $ vid.
الحيلة هي تمرير false
للمعلمات الثانية (وهي $ids
) ثم الرجوع إلى taxonomy_vocabulary
جدول في قاعدة بيانات mysql لمعرفة ما يمكنك تمريره كشروط. اخترت استخدام machine_name
كما ترى بالاسفل:
$ids = false;
$conditions = array('machine_name' => 'my_vocabulary');
$vocab = entity_load('taxonomy_vocabulary', $ids, $conditions);
إذا كنت تعرف طريقة أسرع/أخف ، فيرجى تقديمها هنا:)
هذا للتحميل باستخدام استعلام حقل الكيان كما ذكر bojan:
$query = new entityFieldQuery();
$result = $query
->entityCondition('entity_type', 'taxonomy_vocabulary')
->propertyCondition('machine_name', 'my_vocabulary')
->execute();
if (empty($result['taxonomy_vocabulary'])) {
return;
}
$vocabularies = taxonomy_vocabulary_load_multiple(array_keys($result['taxonomy_vocabulary']));
dpm($vocabularies);
كانت هذه الطريقة الأسرع بالنسبة لي لرؤية قائمة بجميع معرفات المفردات عبر Drush:
sqlc الحفر
اختر * من تصنيف_المفردات ؛