টেবিল ছাড়াই কাস্টম দর্শন হ্যান্ডলার


22

এটি প্রথমে সহজ বলে মনে হয়েছিল তবে আমি এটিতে আমার চুল হারাচ্ছি।

আমি কেবল একটি কাস্টম ভিউ হ্যান্ডলার যুক্ত করতে চাই যা কোনও টেবিল ব্যবহার করে না।

আমি পিএইচপি প্রস্তাবিত মতামত হিসাবে করার চেষ্টা করেছি, ook ডেটা ['ভিউ'] ['মাইকাস্টমফিল্ড'] হুক_ভিউস_ডাটাতে, তবে এখনও, "মাইকাস্টমফিল্ড কলাম পাওয়া যায় নি"।

কোন সাহায্য ? ধন্যবাদ!

উত্তর:


26

আসলে এটি সহজ। শুধুমাত্র বাস্তবায়নের দেখুন দেখুন গ্লোবাল হ্যান্ডলারগুলি যা ভিউ.ভিউস.সিঙ্ক এ উপলব্ধ ।

নীচে উদাহরণস্বরূপ আপনি কীভাবে কোনও টেবিল না রেখে ফিল্ড হ্যান্ডলার যুক্ত করতে পারেন,

  1. নীচের মতো হুক_ভিউ_ডাটাতে আপনার কাস্টম হ্যান্ডলারগুলি নির্দিষ্ট করুন ,

    /**
     * Implements hook_views_data().
     */
     function my_module_views_data() {
       $data['custom']['table']['group'] = t('Custom');
       $data['custom']['table']['join'] = array(
         // #global is a special flag which let's a table appear all the time.
         '#global' => array(),
       );
    
       $data['custom']['custom_handler'] = array(
         'title' => t('Custom Handler'),
         'help' => t('Custom Handler.'),
         'field' => array(
           'handler' => 'views_handler_custom_handler',
         ),
       );
    
       return $data;
    }
    
  2. আপনার হ্যান্ডলারের জন্য একটি Inc ফাইল তৈরি করুন আপনার যুক্তিটি সেখানে রাখুন। নীচের মতো কিছু এখানে ফাইলের নাম হবে ভিউ_হ্যান্ডলার_ কাস্টম_হান্ডারআরঙ্ক inc

    /**
     * A handler to provide a field that is completely custom by the administrator.
     *
     * @ingroup views_field_handlers
     */
     class views_handler_custom_handler extends views_handler_field {
       function query() {
         // do nothing -- to override the parent query.
       }
    
       function option_definition() {
         $options = parent::option_definition();
    
         // Override the alter text option to always alter the text.
         $options['alter']['contains']['alter_text'] = array('default' => TRUE);
         return $options;
       }
    
       function options_form(&$form, &$form_state) {
         parent::options_form($form, $form_state);
    
         // Remove the checkbox
         unset($form['alter']['alter_text']);
         unset($form['alter']['text']['#dependency']);
         unset($form['alter']['text']['#process']);
       }
    
       function render($values) {
         // Render your content.
         return 'Sample';
       }
    }
    
  3. আপনার মডিউলটির তথ্য ফাইলে এই নতুন হ্যান্ডলার ফাইলটি নির্দিষ্ট করুন

  4. ক্যাশেগুলি সাফ করুন

এখন নতুন ফিল্ড হ্যান্ডলার ফিল্ড তালিকায় থাকবে।


1
ধন্যবাদ ! ঠিক আমার দুটি জিনিস প্রয়োজন: ক্যোয়ারীটি খালি উল্লেখ করে ওভাররাইড করুন এবং '# গ্লোবাল' এ যোগদান করুন।
গ্রেগরি কাপুস্টিন

এই ফলাফলগুলিতে ফিল্টার করার কোনও উপায় আছে? উদাহরণস্বরূপ, আমি সত্তার সাথে ব্যবহারকারীর সম্পর্কের ভিত্তিতে একটি বিশেষ "স্থিতি" গণনা করার জন্য একটি কাস্টম ফিল্ড হ্যান্ডলার তৈরি করেছি। আমি সেই স্থিতির মাধ্যমে ফিল্টার করতে সক্ষম হতে চাই। কোন ধারনা?
টাইগার্টসেল

ধন্যবাদ, এটাই আমার দরকার! তবে দেখে মনে হচ্ছে যে আমি এই জাতীয় ফিল্ড হ্যান্ডলারের জন্য দর্শন সম্পর্কগুলি সক্ষম করতে পারি না। drupal.stackexchange.com/questions/166734/... কোন ধারণা?
ডানকুইক্সোট

1

সম্পূর্ণ হওয়ার জন্য: আপনাকে হুক_ভিউ_পিও যুক্ত করতে হবে

function my_module_views_api() {
  return array(
    'api' => 3,
    'path' => drupal_get_path('module', 'my_module'),
  );
}

1
সম্পূর্ণ হবে: আপনি .info ফাইল ফাইলের মধ্যে হ্যান্ডলার অন্তর্ভুক্ত করা আছে [] = views_handler_custom_handler.inc
Fawwad
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.