it-swarm.asia

كيف يمكنني الحصول على قائمة بجميع أنواع المحتوى المتاحة؟

أنا أستخدم Drupal 7. إذا استدعت node_type_get_types() ، أحصل على الصفحة والمقالة. لكني قمت بتعريف 4 أنواع أخرى من العقد باستخدام حقول غير مدرجة.

كيف يمكنني الحصول على قائمة بجميع أنواع المحتوى المتاحة؟

6
BetaRide

أنت تفعل ذلك بشكل صحيح: 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 ()
)
7
sergio

قد يكون من الجدير بالذكر أننا وجدنا بعض التعليمات البرمجية في ملف .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 لكن الآليات متشابهة جدا).

6
Chris Cohen

فيما يلي مثال لاستخراج الاسم والوصف للعقدة حسب نوع المحتوى:

  <?php
  $type = $node->type;
  $types = node_type_get_types();
  $name = $types[$type]->name;
  $description = $types[$type]->description;  
  ?>
0
Astha chauhan