मैं किसी मौजूदा फ़ील्ड के लिए अतिरिक्त फ़ील्ड फ़ॉर्मेटर कैसे लिखूं


9

मैं एक मौजूदा फ़ील्ड प्रकार के लिए एक नया फ़ील्ड फ़ॉर्मेटर लिखना चाहूंगा। मैं किसी भी मौजूदा स्वरूपकों को बदलना नहीं चाहता, लेकिन एक नया विकल्प प्रदान करता हूं।

या क्या मैं मामूली बदलाव करने के लिए theme_preprocess_field () का उपयोग करके बेहतर हूं? लेकिन इसे बनाए रखना कठिन प्रतीत होता है और मैं अपने सामग्री संपादकों के विकल्प (और GUI में) खुले रखना चाहूंगा।

क्या कोई मुझे ऐसा करने के लिए उचित तरीके के उदाहरण से इंगित कर सकता है?

जवाबों:


13

व्यक्तिगत रूप से मैं कहूंगा कि एक फॉर्मेटर बेहतर समाधान है।

केवल दो हुक हैं जिन्हें आपको लागू करने की आवश्यकता है:

उदाहरण के लिए:

function MYMODULE_field_formatter_info() {
  return array(
    'my_formatter' => array(
      'label' => t('My formatter'),
      // The important bit...
      'field types' => array('field_type'),
    ),
  );
}

function MYMODULE_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $settings = $display['settings'];
  $element = array();

  if ($display['type'] == 'my_formatter') {
    foreach ($items as $delta => $item) {
      $element[$delta] = array('#markup' => $item['value']);
    }
  }

  return $element;
}

अधिक गहराई से देखने के लिए, उदाहरण मॉड्यूल डाउनलोड करें और field_example को देखें - आपको अपने रास्ते पर लाने के लिए बहुत सारे कोड और दस्तावेज़ हैं।


आपको hook_field_formatter_settings_form और hook_field_formatter_settings_summary लागू करने में भी रुचि हो सकती है ताकि आप अपने उपयोगकर्ता को यह बताने के लिए कुछ विकल्प दे सकें कि फ़ील्ड कैसे प्रस्तुत की जाती है।
ndvo

2

आप एक कस्टम मॉड्यूल विकसित कर सकते हैं या "कस्टम स्वरूपक" मॉड्यूल का उपयोग कर सकते हैं।

पहले मामले में आप एक मॉड्यूल जो कुछ ड्रुपल 7 हुक लागू करता है लिखने के लिए है: hook_field_formatter_info(), hook_field_formatter_view()और hook_theme()hook_field_formatter_info()फॉर्मेटर टाइप घोषित करने के लिए उपयोग किया जाता है। यह फ़ंक्शन फ़ॉर्मैटर विवरण के साथ एक सरणी देता है। कुंजी फ़ॉर्मेटर नाम होगा और इसमें लेबल और फ़ील्ड प्रकारों के साथ एक सरणी होगी। टेम्प्लेट को परिभाषित करने के लिए आपको लागू करना होगा hook_field_formatter_view()और उसके बाद hook_theme()। आप डॉक्स में F ield Formatter API के बारे में अधिक जानकारी प्राप्त कर सकते हैं ।

दूसरे मामले में आप कस्टम फॉर्मेटर्स मॉड्यूल का उपयोग कर सकते हैं जो हर क्षेत्र के लिए कस्टम डिस्प्ले फॉर्मेटर्स बनाने की अनुमति देता है। इस मॉड्यूल से आप टोकन के साथ कस्टम PHP कोड या HTML कोड का उपयोग करके फ़ॉर्मेटर बना सकते हैं।

मैं दूसरा तरीका सुझाता हूं क्योंकि उपयोग करना और कॉन्फ़िगर करना बहुत आसान है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.