2014-05-20 2 views
0

Drupal 7 사이트에 '더 잘 드러난 폼'모듈을 설치하고 커머스 모듈 카탈로그에 대한 뷰를 생성하고 JQuery에서 슬라이더 범위 필터를 만들었습니다. (죄송합니다. 사이트는 러시아어로되어 있지만 어쨌든 중요한 것은 JQueryUI 슬라이더입니다) http://doors.ekt0.ru/. 그래서 문제는 슬라이더의 최저 및 최대 가능한 값을 프로그램 적으로 후크에서 설정하는 방법입니다. 이것은 제품 가격이있는 데이터베이스 테이블에서 최소값과 최대 값을 실제 값으로 만들고 싶기 때문입니다. 내가 필요한 것 같습니다 유일한 배열의 키는, 우리가 여기서 보는 바와 같이,드루팔 (Drupal 더 잘 드러내는 폼 세트 후크에서 최소값과 최대 값 설정

[commerce_price_amount] => Array (
     [#tree] => 1 
     [min] => Array (
      [#type] => textfield 
      [#title] => 
      [#size] => 30 
      [#default_value] => 
    ) 
     [max] => Array (
      [#type] => textfield 
      [#title] => And 
      [#size] => 30 
      [#default_value] => 
    ) 
) 

그래서 : 여기 내 코드입니다 :

function zen_form_views_exposed_form_alter(&$form, $form_state) { 

    $minmax = db_query('SELECT MIN(`commerce_price_amount`) AS `min`, MAX(`commerce_price_amount`) AS `max` FROM `field_data_commerce_price`')->fetchAssoc(); 

    $form['commerce_price_amount']['min']['#value'] = $minmax['min']; 
    $form['commerce_price_amount']['max']['#value'] = $minmax['max']; 
} 

여기에 $ 폼 배열의 'commerce_price_amount'키의 내용입니다 #default_value이지만 실제로는 하나가 아니며 폼에 눈에 보이는 변경 사항을 만들지 않고 #value 키 (코드 에서처럼)를 시도했지만 기본 슬라이더 범위 값을 설정하고 노브를 움직이면, 최소값과 최대 값을 만들지 않습니다. 그래서 질문은, 그것을하는 방법이며, 두 번째 질문은 아마도, min과 max 값을 자동으로 설정하는 모듈의 설정이있을 것입니다 (설정에서 아무것도 찾을 수 없었습니다). 미리 감사드립니다!

답변

0

BEF 모듈은 이러한 옵션을 javascript 옵션으로 추가하므로 hook_js_alter()를 사용하여이 옵션을 무시할 수 있습니다.

/** 
* Implements hook_js_alter(). 
*/ 
function MODULE_js_alter(&$javascript) { 
    $settings = $javascript['settings']['data']; 

    foreach ($settings as $key => $value) { 
    if (isset($settings[$key]['better_exposed_filters']['slider_options']['commerce_price_amount']['max'])) { 
     $settings[$key]['better_exposed_filters']['slider_options']['commerce_price_amount']['max'] = 1000; 
    } 
    } 

    $javascript['settings']['data'] = $settings; 
}