it-swarm.asia

كيف أقوم بإضافة القوائم المنسدلة في معايير التصفية في وحدة طرق العرض؟

لقد كنت في اجتماع محلي Drupal الأسبوع الماضي حيث قام أحد الأعضاء بإجراء عرض تقديمي لوحدة المشاهدات. لقد كنت متحمسًا حقًا عندما رأيت أنه كان قادرًا على إضافة قوائم منسدلة إلى معايير التصفية التي كان يستخدمها حيث أحتاج بالضبط إلى هذه الوظيفة لشيء أقوم ببنائه.

الشيء هو: لا يمكنني العثور على الإعدادات على الإطلاق في تصميمي. أتذكر أنه كان هناك رابط "إعدادات" في الجزء السفلي من منطقة معايير التصفية الخاصة به ، ولكن ليس لدي شيء من هذا القبيل.

هل يمكن لأي شخص أن يشرح أين يمكنني العثور على هذا؟ هل فقدت وحدة إضافية؟

5
Martin Duys

تتفاعل الفلاتر في طرق العرض وكيفية تعرضها للمستخدم بشكل مختلف قليلاً اعتمادًا على نوع الفلتر المستخدم. يتم التحكم في نوع المرشح المستخدم عن طريق تحديد البيانات إلى طرق العرض باستخدام hook_views_data و hook_views_data_alter. هذا هو رمز البت قليلاً وليس دائمًا ما تحتاج إلى القيام به بنفسك حيث أن العديد من الوحدات بما في ذلك المشاهدات تفعل الكثير من هذا لك.

اثنين من المرشحات الشائعة المستخدمة

  • views_handler_filter_in_operator
  • views_handler_filter_string

الاثنان مختلفان بشكل أساسي لأن افتراضاتهم ومتطلباتهم مختلفة تمامًا.

الأول ، هو الذي تريد استخدامه. يتم استخدامه عند تخزين قيمة تحتوي على قائمة محددة بالقيم المحتملة. يمكن أن يكون أحد الأمثلة أنواع المحتوى وهو المثال الذي استخدمتهDanielle في مشاركتها. نظرًا لأنه لا يمكن أن تحتوي العقد على أي قيمة عشوائية لنوع المحتوى الخاص بها ، فمن الممكن أن تعرض طرق العرض قائمة بخانات الاختيار في واجهة المسؤول عند استخدام هذا المرشح وقائمة تحديد/قائمة تحديد متعددة للمستخدم عند تعرضه.

يتم استخدام الثاني عند تخزين سلسلة في قاعدة البيانات. باستخدام العقد كمثال ، سيكون حقل العنوان مرشحًا جيدًا لمثل هذا المرشح. نظرًا لأن العناوين يمكن أن تكون أي نص ، فمن غير المنطقي فضح تحديد عنوان العقدة كمربعات اختيار أو قوائم مختارة ، وبدلاً من ذلك تحصل على بعض الخيارات الأخرى مثل التي تراها في طريقة العرض الخاصة بك. يمكنك التصفية حسب ما إذا كانت السلسلة تحتوي على كلمة (البداية/النهاية/في مكان ما) ، طولها إلخ.

إذا لم يزعج الشخص الذي قام بدمج طرق العرض باستخدام in_operator نوع الفلتر ، ووصف طرق العرض (باستخدام وظيفة php) الخيارات المتاحة ، سيتعين عليك القيام بذلك باستخدام hook_views_data_alter.

ما عليك القيام به هو:

  1. إنشاء فئة فرعية من views_handler_filter_in_operator
  2. تنفيذ get_value_options
  3. أخبر وجهات النظر حول المعالج الجديد الخاص بك.

في الكود سيبدو مثل هذا

/**
 * Define my custom in_opeator
 */
class my_custom_in_operator extends views_handler_filter_in_operator {
  // overwrite the get_value_options function.
  function get_value_options() {
    if (isset($this->value_options)) {
      return;
    }
    $this->value_options array('option_1' => t('Option 1'), 'option_2' => t('Option 2'));
  }
}

/**
 * Implements hook_views_data_alter().
 */
function my_custom_views_data_alter(&$data) {
  $data['entity_type']['property']['filter']['handler'] = 'my_custom_in_operator';
}

وانت انتهيت. في الواقع الأمر بسيط للغاية. لكن معرفة كيفية القيام بذلك ليس كما أن الآراء معقدة للغاية.

10
googletorp

هل تسمح بقيم متعددة في الفلتر المكشوف؟ إذا كان الأمر كذلك ، فستظهر التحديدات في مربع تحديد مع شريط تمرير افتراضيًا. إذا فرضت تحديدًا واحدًا فقط ، فسيظهر الفلتر المكشوف في قائمة منسدلة افتراضيًا. آمل أن يساعد هذا!

5
Danielle