একটি ড্রপ-ডাউন উইজেট ব্যবহার করে দর্শনগুলিতে কীভাবে এক্সপোজড সাজানো প্রদর্শিত হবে?


10

ডিফল্টরূপে দ্রুপাল 7 এর জন্য 3.0 মডিউলটি এক্সপোজড বাছাই করতে দুটি ড্রপ-ডাউন ব্যবহার করে। ক্ষেত্রের নাম নির্বাচন করতে প্রথম ড্রপ-ডাউন এবং অন্য একটি - সাজানোর দিকনির্দেশ নির্বাচন করতে।

বাছাইয়ের জন্য ডিফল্ট ভিউজেট

আমি কীভাবে এক ড্রপ-ডাউনকে সাজিয়ে তুলতে পারি?

বাছাইয়ের জন্য উন্মুক্ত উইজেটের নতুন সংস্করণ

উত্তর:


13

আপনি সেই উদ্দেশ্যে উন্নত ফিল্টার মডিউলটি ব্যবহার করতে পারেন । এটি একটি নির্বাচন তালিকায় বাছাই ক্ষেত্র এবং দিকনির্দেশ একত্রিত করার জন্য এই জাতীয় বিকল্প রয়েছে।


অন্যান্য সমাধানের জন্য থ্যাঙ্কস!
ইউজিন ফিদেলিন

3
এই বিকল্পটি খুঁজতে আমার 30 মিনিট সময় লেগেছে। আপনার দৃষ্টিতে, আপনি এটি বেফ সেটিংসের অধীনে পাবেন>> উন্নত বাছাইয়ের বিকল্পগুলি => বাছাইয়ের মাধ্যমে সাজানোর ক্রমটি একত্রিত করুন। ধন্যবাদ !!!
রজার

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);
  }
}

তারপরে আপনার থিম ফোল্ডারে আপনার "ভিউজ / থিম / ভিউ-এক্সপোজড-ফর্ম.tpl.php" ফাইলটি অনুলিপি করতে হবে এবং নতুন $ বাছাইয়ের সাথে $ সাজ্ট_বাই এবং $ সাজ্ট_র্ডার উইজেটগুলি প্রতিস্থাপন করতে হবে

অনুসন্ধান:

<?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; ?>

উদাহরণস্বরূপ "তারিখ দে প্রকাশনার আরোহণ" এবং "তারিখ দে প্রকাশনার অবতরণ" "সাম্প্রতিক প্রোডাক্টস" এবং "পুরানো পণ্যগুলিতে" কীভাবে লেবেল পরিবর্তন করব?
রাম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.