我已经在我的Drupal 7站点上安装了'better exposed form'模块,我为商业模块目录创建了一个视图,并在JQuery上制作了一个滑块范围过滤器,这里是(对不起,该站点是俄语的,但无论如何,最重要的是一个JQueryUI滑块)http://doors.ekt0.ru/。所以,问题是,如何从钩子以编程方式设置滑块的最小和最大可能值。这是因为a想让最小和最大价格是真实的,从数据库表的产品价格。下面是我的代码:
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'];
}
,这里是$form array的'commerce_price_amount'键的内容:
[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] =>
)
)
所以,正如我们在这里看到的,唯一的数组键,看起来像我需要的是#default_value,但它实际上不是一个,它不做任何可见的变化的形式,我也尝试了#value键(如在代码),但它设置默认的滑块范围值,只是移动旋钮,而不是使最小和最大值。所以问题是,如何做到这一点,第二个问题是,也许,模块中有任何设置可以自动设置最小和最大值(我无法在设置中找到任何东西)。提前感谢!
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;
}