मैं एक निश्चित क्षेत्र प्रकार के क्षेत्र कैसे प्राप्त करूं?


13

मैंने देखा है कि इकाई और बंडल के साथ फ़ील्ड की सूची कैसे प्राप्त करें field_info_instances()और field_info_field(), लेकिन मैं किसी विशेष प्रकार के सभी फ़ील्ड प्राप्त करने का तरीका नहीं देख रहा हूं।

मैं इसे ठीक उसी तरह से पकाने में सक्षम था जैसा मैं चाहता हूं:

function field_get_fields_of_type($type) {
  $fields_info = field_info_instances();
  $return = array();
  foreach ($fields_info as $entity => $bundles) {
    foreach ($bundles as $bundle => $fields) {
      foreach ($fields as $field_name => $info) {
        $more_info_because_type_isnt_included = field_info_field($field_name);
        if ( $more_info_because_type_isnt_included['type'] == $type) {
          $return[$field_name] = $more_info_because_type_isnt_included;
        }
      }
    }
  }
  return $return;
}

dpm(field_get_fields_of_type('entityreference')); // prints out all entityreference fields

लेकिन ऐसा लगता है कि कोड का एक भयानक बहुत कुछ है, और कुछ प्राप्त करने के लिए बहुत सारे लूपिंग की आवश्यकता है जो कि संभवत: फ़ील्ड एपीआई के माध्यम से पहुंच योग्य होना चाहिए।

क्या किसी को फील्ड एपीआई फ़ंक्शन के बारे में पता है जो मेरे द्वारा खोजे जा रहे डेटा को अधिक कुशलता से प्राप्त करेगा?

जवाबों:


23

मैं दूसरे दिन भर आया और इस सवाल को देखकर याद आया, इसलिए यहाँ यह है, किसी भी तरह से बहुत ही अज्ञात कार्य (मैंने देखा है कि किसी ने किसी ब्लॉग या किसी भी चीज़ में इसका उल्लेख किया है):

field_read_fields ()

और साथी समारोह:

field_read_instances ()

उदाहरण के लिए, सभी टैक्सोनॉमी टर्म फील्ड प्राप्त करें:

$taxonomy_fields = field_read_fields(array('type' => 'taxonomy_term_reference'));

या मशीन के नाम के साथ क्षेत्र के लिए उदाहरण प्राप्त करें field_image:

$image_field_instances = field_read_instances(array('field_name' => 'field_image'));
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.