प्रोग्राम में उजागर फ़िल्टर को विचारों में कैसे बदलें


10

मेरे पास एक्सपोज़र फिल्टर्स वाला एक पेज व्यू है। फ़िल्टर में से एक शब्द शब्दावली है, और यह ड्रॉपडाउन सूची है, उपयोगकर्ता केवल एक श्रेणी (शब्द) का चयन कर सकता है।

जब मैं विशिष्ट URL से आता हूं तो मैं ड्रॉपडाउन सूची से प्रोग्रामेटिक रूप से एक शब्द सेट करना चाहता हूं। मैंने कोशिश की है कि views_query_alterकहां $categoryहै tid

 $set_exposed_input  = array();
 $set_exposed_input['field_category_tid'] = $category;

 if ($set_exposed_input) {
    $view->set_exposed_input($set_exposed_input);
 }

यहाँ भी उपयोगी लिंक है: groups.drupal.org/node/82219#comment-1116663
एंड्री

जवाबों:


14

ड्रुपल 7 के लिए आप उपयोग कर सकते हैं

$view->exposed_input[$key] = $value;

ये है

$view->exposed_input['title'] = 'My title is a cat';

एक पूर्ण उदाहरण के लिए आप यह कोशिश कर सकते हैं:

$name = 'name_of_view';
$display = 'page_1';
$alter = array('exposed' =>array('title' => 'title_value'));

$view = views_get_view($name);
$view->init_display($display);
$view->preview=TRUE;
$view->is_cacheable = FALSE;


if(isset($alter['exposed'])){
  foreach($alter['exposed'] as $key => $valor){

     $view->exposed_input[$key] = $valor;

  }
}

$view->pre_execute();
$output = $view->display_handler->preview();
$view->post_execute();

print_r($view->result);

अन्य तरीका view__ionion फ़ंक्शन का उपयोग कर रहा है

$filters = $view->display_handler->get_option('filters');

foreach($alter['exposed'] as $key => $valor){
   $filters[$key]['value'] = $valor;
   $view->display_handler->set_option('filters', $filters);
}

1
आप इसे कहां लगाते हैं, एक दृश्य में पूर्व निष्पादित या ऐसा कुछ?
मिका ए।

विचारों में tpl! और पूरा उदाहरण, जहाँ भी, इसका लोड व्यू फंक्शन है
rafinskipg

1
आप इसे हुक_ब्यूस_पर_व्यू
क्वेंटिन कैंपबेल

5
Tpl फ़ाइल का उपयोग प्रदान की गई सामग्री को प्रदर्शित करने के लिए किया जाना चाहिए, न कि व्यावसायिक तर्क को सेट करने के लिए। कृपया अन्य असंख्य दृश्यों में से एक को देखें: api.drupal.org/api/views/views.api.php/7
aaronbauman

गैर उजागर फिल्टर के बारे में क्या? मेरे पास बहुत कम उपयोग का मामला है और मुझे कस्टम कोड द्वारा फ़िल्टर मान सेट करने की आवश्यकता है।
कोडिएक

1

इस तरह उजागर फ़िल्टर मान सेट करें:

$view->exposed_input['field_category_tid'] = $category;

1

Drupal 7.54 के साथ जब आप उजागर किए गए फ़िल्टर को प्रोग्रामेटिक रूप से संसाधित करना चाहते हैं, तो यह है कि जब आप एक बहु-मूल्यवान फ़ील्ड रखते हैं तो आप इसे कैसे करते हैं। यह देखने के लिए कि उजागर किए गए फ़िल्टर को कैसे पास किया जाए, इसका समाधान यह है कि URL कैसे बनाया जाता है।

यहाँ: view_name? उपनाम [1] = 1

$view = views_get_view('view_name');
$view->init_display('display_id');

$filters = array('alias' => array('1'));
$view->set_exposed_input($filters);

$view->execute();

आप जहां चाहें वहां से इसे निष्पादित कर सकते हैं। अधिमानतः मॉड्यूल फ़ाइल से।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.