سؤال

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

لقد اخترق ذلك الآن و تغيير views_form في وجهات النظر.وحدة ولكن هذا لا يبدو مثل الطريق الصحيح للقيام بذلك.ليس لدي سوى واحد يتعرض شكل الآن لكن ماذا إذا قمت بإضافة أكثر من ذلك ؟

يرجى الاطلاع http://www.wiredvillage.ca/News على سبيل المثال بلدي.

أنا بدس حولها drupal.org ورؤية الآخرين مع نفس المشكلة ولكن لا حلول حتى الآن.لست متأكدا من أين أفضل مكان للحصول على دروبال المساعدة.

هنا هو التغيير الذي أدليت به حتى الآن:

function views_exposed_form(&$form_state) {
  // Make sure that we validate because this form might be submitted
  // multiple times per page.
  $form_state['must_validate'] = TRUE;
  $view = &$form_state['view'];
  $display = &$form_state['display'];
  $form_state['input'] = $view->get_exposed_input();
  // Let form plugins know this is for exposed widgets.
  $form_state['exposed'] = TRUE;
  $form['#info'] = array();
  if (!variable_get('clean_url', FALSE)) {
    $form['q'] = array(
      '#type' => 'hidden',
      '#value' => $view->get_url(),
    );
  }
  // Go through each filter and let it generate its info.
  foreach ($view->filter as $id => $filter) {
    $view->filter[$id]->exposed_form($form, $form_state);
    if ($info = $view->filter[$id]->exposed_info()) {
      $form['#info']['filter-' . $id] = $info;
    }
  }

  // I CHANGED The VALUE OF THIS SUBMIT BUTTON TO GO


  $form['submit'] = array(
    '#name' => '', // prevent from showing up in $_GET.
    '#type' => 'submit',
    '#value' => t('go'),
  );
  $form['#action'] = url($view->get_url());
  $form['#theme'] = views_theme_functions('views_exposed_form', $view, $display);
  $form['#id'] = views_css_safe('views_exposed_form-' . check_plain($view->name) . '-' . check_plain($display->id));
//  $form['#attributes']['class'] = array('views-exposed-form');
  // If using AJAX, we need the form plugin.
  if ($view->use_ajax) {
    drupal_add_js('misc/jquery.form.js');
  }
  views_add_js('dependent');
  return $form;
}
هل كانت مفيدة؟

المحلول

إذا كنت ترغب في القائمة المنسدلة لإطلاق النار، ويهمني ان استخدام جافا سكريبت بدلا من القرصنة وحدة كما يقترح إيتون.

وفي الأساس، يمكنك تعديل النص مع hook_form_alter كما يقترح إيتون، ثم استخدم في نفس hook_form_alter، إضافة استدعاء drupal_add_js مع عهدك JS الذي يخفي زر ويقدم النموذج على معالج عند_التغيير من حدد القائمة المنسدلة . تريد أن تقدم زر هناك لأولئك 10٪ من المستخدمين الذين فشل JS.

نصائح أخرى

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

function MYTHEME_preprocess_views_exposed_form(&$vars, $hook) {

  // only alter the jobs search exposed filter form
  if ($vars['form']['#id'] == 'views-exposed-form-jobs-search-page-1') {

    // Change the text on the submit button
    $vars['form']['submit']['#value'] = t('Search');

    // Rebuild the rendered version (submit button, rest remains unchanged)
    unset($vars['form']['submit']['#printed']);
    $vars['button'] = drupal_render($vars['form']['submit']);
  }
}

كل ما سبق هي بخير ولكن اكتشفت أن تغيير شكل قد لا تؤدي دائما إلى النتائج المرجوة ، وذلك أساسا بسبب تعرض المرشحات تحت عنوان باستخدام دقيقة حول موضوع القالب.الطريقة الصحيحة لتغيير الموضوع لتجاوز views-exposed-form.tpl الملف في الموضوع الخاص بك المجلد.نضع في اعتبارنا أن هذا سوف تنطبق على جميع يتعرض تصفية الأشكال إلى موضوع معين واحد, سوف تحتاج إلى استخدام اسم مختلف عن اسم الملف ، مثل:

views-exposed-form--TITLE--DISPLAY.tpl.php
views-exposed-form--TITLE.tpl.php

والبعض الآخر يمكنك التحقق موضوع:المعلومات قسم على قالب اصطلاحات التسمية.

وهذه الوحدة توفر لصناعة السيارات في تقديم من بين أمور أخرى http://drupal.org/project/views_hacks

وهذه الوحدة هي كبيرة لتحسين المرشحات يتعرض http://drupal.org/project/better_exposed_filters

ويجب أن تكون قادرا على استخدام hook_form_alter () ( http://api.drupal.org / المعهد / وظيفة / hook_form_alter ) لتغيير شكل كما انها بنيت وتعديل الحقول في السؤال عندما يتم عرض هذا الرأي خاص. يمكنك بقصف على زر إرسال، إضافة وظيفة #theme الذي يستدعي drupal_add_js () وظيفة، وهلم جرا.

وطالما أن بارامس GET تأتي في وجهات النظر بطريقة تتوقع منهم، كل شيء سوف تعمل بشكل جيد - تم تصميمه بهذه الطريقة للسماح ارتباطك الصفحات مع إعدادات التصفية المكشوفة، وما إلى ذلك الجزء المهم هو التأكد من كنت القيام شكل تغيير اسم في وظيفة () hook_form_alter الوحدة الخاصة بك، لذلك أنه لن إبداء وجهات أخرى مدفوعة خنق الاشياء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top