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


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.