সময় রেন্ডারের চেয়ে হুকগুলিতে এগুলি পরিবর্তন করা ভাল। যাতে আপনার সাইটের কর্মক্ষমতা এবং ক্যাচিংয়ের ক্ষতি হয় না। হুক_ভিউ_প্রিয়_বিল্ড () খুব দেরিতে আগুন নেওয়ার জন্য আমার বয়স নিয়েছে , আপনার দরকার হুক_ভিউ_প্রিয়_ভিউ () ।
আমি $ ভিউ-> অ্যাড_ইটিম () ব্যবহারের জন্য উল্লেখ পেয়েছি তবে উদাহরণের জন্য লড়াই করেছি, কেবলমাত্র কিছু ভোকাবকে অন্তর্ভুক্ত করার জন্য ট্যাক্সনোমির শর্তগুলির একটি সেট ফিল্টার করার জন্য নীচে আমার সমাধানটি ছিল:
function MODULENAME_views_pre_view(&$view, &$display_id, &$args) {
if ($view->name == 'VIEWNAME' && $display_id == 'DISPLAYID') {
// Add all the terms of a vocabulary to the terms listing widget select field
$vids = array();
$vocab = taxonomy_vocabulary_machine_name_load('vocab_name');
$vids[ $vocab->vid ] = $vocab->vid;
// Get the existing filters
$filters = $view->display_handler->get_option('filters');
if (empty($filters['vid'])) {
// There is no vid filter so we have to add it
$view->add_item(
$view->current_display,
'filter',
'taxonomy_term_data',
'vid',
array(
'operator' => 'in',
'value' => $vids,
'group' => 1
)
);
}
else {
// Add to pre-existing filter
foreach($vids as $vid) {
$filters['vid']['value'][ $vid ] = $vid;
}
$view->display_handler->override_option('filters', $filters);
}
}
}
সম্পাদনা দ্রষ্টব্য : ডো গ্রুপের এই মন্তব্যটি আমাকে কীভাবে ভিউ ফিল্টারগুলি ব্যবহার করতে হবে $view->display_handler->get_option('filters')
এবং তারপরে সেগুলি ব্যবহার করে ওভাররাইড করতে সাহায্য করতে পারে $view->display_handler->override_option('filters', $filters);
।
dpm($view);
?