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


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.