एक ड्रॉप-डाउन विजेट का उपयोग करके विचारों में उजागर प्रकार कैसे प्रदर्शित करें?


10

डिफ़ॉल्ट रूप से द्रुपाल 7 के लिए 3.0 मॉड्यूल उजागर प्रकार को प्रदर्शित करने के लिए दो ड्रॉप-डाउन का उपयोग करता है। फ़ील्ड नाम, और अन्य एक का चयन करने के लिए पहला ड्रॉप-डाउन - क्रम दिशा का चयन करने के लिए।

डिफ़ॉल्ट दृश्य छँटाई के लिए विजेट

मैं एक ड्रॉप-डाउन में सॉर्ट कैसे कर सकता हूं?

छँटाई के लिए उजागर विजेट का नया संस्करण

जवाबों:


13

आप उस उद्देश्य के लिए बेहतर उजागर फ़िल्टर मॉड्यूल का उपयोग कर सकते हैं । इसमें एक चयन सूची में सॉर्ट फ़ील्ड और दिशाओं को संयोजित करने का विकल्प है।


अन्य समाधान के लिए Thanx!
— यूजीन फिदेलिन

3
मुझे उस विकल्प को खोजने में 30 मिनट का समय लगा। आपके विचार में, आप इसे BEF सेटिंग => उन्नत सॉर्ट विकल्प => द्वारा क्रमबद्ध सॉर्ट क्रम के तहत पाएंगे। धन्यवाद!!!
— रोजर

10

आपको निम्नलिखित हुक के साथ छोटे मॉड्यूल बनाने की आवश्यकता है:

/**
 * Implements hook_form_alter().
 *
 * Alter exposed filter form in views
 */
function MODULE_form_views_exposed_form_alter(&$form, &$form_state, $form_id) {
  if (isset($form['sort_by'])) {
    // Combine sort drop-downs into one.
    $form['sorting'] = array(
      '#type' => 'select',
      '#id'   => 'sort',
      '#title' => $form['sort_by']['#title'],
    );
    foreach ($form['sort_by']['#options'] as $sort_by_key => $sort_by_title) {
      foreach ($form['sort_order']['#options'] as $sort_order_key => $sort_order_title) {
        $form['sorting']['#options'][$sort_by_key . '|' . $sort_order_key] = $sort_by_title . ' ' . $sort_order_title;
      }
    }

    // Get default value for combined sort.
    $sort_by_keys = array_keys($form['sort_by']['#options']);
    $form['sorting']['#default_value'] = $sort_by_keys[0] . '|' . $form['sort_order']['#default_value'];
  }

  // Explode combined sort field into two values that are appropriate for views.
  if (isset($form_state['input']['sorting'])) {
    $sorting = explode('|', $form_state['input']['sorting']);
    $form_state['input']['sort_by'] = $sorting[0];
    $form_state['input']['sort_order'] = $sorting[1];
  }
}

/**
 * Default preprocess function for all filter forms.
 */
function MODULE_preprocess_views_exposed_form(&$vars) {
  $form = &$vars['form'];

  // Render new created sort field.
  if (isset($form['sorting'])) {
    $form['sorting']['#printed'] = FALSE;
    $vars['sorting'] = drupal_render($form['sorting']);

    // Need to rebuild the submit button.
    $form['submit']['#printed'] = FALSE;
    $vars['button'] = drupal_render_children($form);
  }
}

तो फिर आप अपने विषय फ़ोल्डर में "विचारों / विषय / दृश्यों-सामने आ-form.tpl.php" फाइल कॉपी और की जगह की जरूरत है $ sort_by और $ SORT_ORDER नए के साथ विजेट $ छंटाई

खोजें:

<?php if (!empty($sort_by)): ?>
  <div class="views-exposed-widget views-widget-sort-by">
    <?php print $sort_by; ?>
  </div>
  <div class="views-exposed-widget views-widget-sort-order">
    <?php print $sort_order; ?>
  </div>
<?php endif; ?>

से बदलो:

<?php if (!empty($sorting)): ?>
  <div class="views-exposed-widget views-widget-sort-by">
    <?php print $sorting; ?>
  </div>
<?php endif; ?>

मैं उदाहरण के लिए "दिनांक डी प्रकाशन आरोही" और "तिथि डी प्रकाशन अवरोही" "हाल ही में निर्माण" और "पुराने उत्पादों" के लिए लेबल कैसे बदल सकता हूं?
— राम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.