أنا أستخدم Drupal 7. إذا استدعت node_type_get_types()
، أحصل على الصفحة والمقالة. لكني قمت بتعريف 4 أنواع أخرى من العقد باستخدام حقول غير مدرجة.
كيف يمكنني الحصول على قائمة بجميع أنواع المحتوى المتاحة؟
أنت تفعل ذلك بشكل صحيح: node_type_get_types()
سيعيد أنواع المحتوى.
هذا غريب! لقد أنشأت نوع محتوى آخر أخبار وقمت بعمل وحدة اختبار سريعة باستخدام هذا الرمز:
function test_menu() {
$items = array();
$items['testing'] = array(
'title' => 'Testing',
'page callback' => 'page_test',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK
);
return $items;
}
function page_test() {
return '<pre>' . print_r(node_type_get_types(), true) . '</pre>';
}
عند الوصول/الاختبار ، أحصل على مصفوفة من جميع أنواع المحتوى الثلاثة:
Array
(
[article] => stdClass Object ()
[news] => stdClass Object ()
[page] => stdClass Object ()
)
قد يكون من الجدير بالذكر أننا وجدنا بعض التعليمات البرمجية في ملف .module موجود خارج أي وظائف ، وكان هذا استدعاء node_type_get_types () BEFORE Drupal تم تشغيله بشكل كامل. كان هذا يسبب أنواع العقد يتم تخزينها مؤقتًا قبل Drupal بجميع الأنواع ، لذلك فقد فقدت المكالمات اللاحقة إلى node_type_get_types () بعض أنواع العقد. قد يفسر هذا ما يحدث هنا.
وهناك كتابة أكثر تفصيلاً لهذا المفهوم على http://tiger-fish.com/blog/drupal-ubercart-disappearing-content-types (الذي يتعامل مع node_get_types () من Drupal 6 لكن الآليات متشابهة جدا).
فيما يلي مثال لاستخراج الاسم والوصف للعقدة حسب نوع المحتوى:
<?php
$type = $node->type;
$types = node_type_get_types();
$name = $types[$type]->name;
$description = $types[$type]->description;
?>