ড্রুপাল 7 এবং ভিউ ৩ ব্যবহার করার সময়, কোনও ভিউ ফিল্টার মান পরিবর্তন করার সঠিক উপায় কী তা যাতে এটি কেবলমাত্র রেন্ডার করার মতো সামগ্রীকে প্রভাবিত করে?
আমি এখানে D6 এর জন্য উল্লিখিত সমস্ত কিছু চেষ্টা করেছিলাম ।
যদিও কিছু লোক এটি কাজ করতে পেরেছিল, মের্লিন বলেছেন যে ডিসপ্লে_প্লেশনগুলি পরিবর্তন করা এটি অর্জনের ভুল উপায়, তবে কী করবেন সে সম্পর্কে তার প্রতিক্রিয়ায় তিনি অস্পষ্ট (( http://drupal.org/node/789710#comment- 2927556 )।
আমি চেষ্টা করেছি:
function pages_views_pre_view($view){
$view = views_get_view('north_carolina');
$view->set_display('default');
$view->display_handler->options['filters']['province']['value'] = 'Georgia';
dsm($view->display_handler->options['filters']['province']);
}
মন্তব্য:
1) আমার কাছে এমন একটি ভিউ তৈরি করা আছে যার মধ্যে north_carolina
দুটি ধরণের প্রদর্শন রয়েছে - একটি পৃষ্ঠা এবং একটি ব্লক (পৃষ্ঠা_1 এবং ব্লক_1)।
2) আমার ফিল্টারগুলি আমার প্রদর্শনগুলিতে সমান তাই আমি 'ডিফল্ট' প্রদর্শনটি পরিবর্তন করার চেষ্টা করছি যাতে এটি তাদের সকলকে প্রভাবিত করে।
3) আমার ফিল্টারটির ডিফল্ট মান হ'ল 'নর্থ ক্যারোলিনা' (যা আমি ভিউআইআইতে সেট করেছি) তবে লক্ষ্য করুন যে আমি এটিকে 'জর্জিয়া'তে পরিবর্তন করার চেষ্টা করছি
4) আমি যদি ডিএসএমের সাথে সাথে চালাই তবে আমি দেখতে পাচ্ছি যে ফিল্টারটি পরিবর্তন করা হয়েছে, তবে আমার ফলাফলগুলি এখনও 'উত্তর ক্যারোলিনা' ফলাফলগুলি দেখায়। ক্যাচিং বন্ধ রয়েছে, এবং ড্রশ সিসি সমস্ত চালানোর পরেও আমি একই জিনিস পেয়েছি।
আমিও মাধ্যমে একই কোড চলমান চেষ্টা করেছি hook_views_pre_build
এবং hook_views_pre_execute
।
কোনও পরামর্শ?
সম্পাদনা করুন:
প্রস্তাবিত হিসাবে এটি অতিরিক্ত তথ্য পেতে সহায়তা করতে পারে। এখানে দেখার এক ডাম্প রয়েছে:
$view = new view();
$view->name = 'north_carolina';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'node';
$view->human_name = 'North Carolina';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'test nc block';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
/* Field: Content: Title */
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'node';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['label'] = '';
$handler->display->display_options['fields']['title']['alter']['word_boundary'] = FALSE;
$handler->display->display_options['fields']['title']['alter']['ellipsis'] = FALSE;
/* Sort criterion: Content: Post date */
$handler->display->display_options['sorts']['created']['id'] = 'created';
$handler->display->display_options['sorts']['created']['table'] = 'node';
$handler->display->display_options['sorts']['created']['field'] = 'created';
$handler->display->display_options['sorts']['created']['order'] = 'DESC';
/* Filter criterion: Content: Published */
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'node';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = 1;
$handler->display->display_options['filters']['status']['group'] = 1;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/* Filter criterion: Location: Province */
$handler->display->display_options['filters']['province']['id'] = 'province';
$handler->display->display_options['filters']['province']['table'] = 'location';
$handler->display->display_options['filters']['province']['field'] = 'province';
$handler->display->display_options['filters']['province']['value'] = 'North Carolina';
$handler->display->display_options['filters']['province']['exposed'] = TRUE;
$handler->display->display_options['filters']['province']['expose']['operator_id'] = 'province_op';
$handler->display->display_options['filters']['province']['expose']['label'] = 'State';
$handler->display->display_options['filters']['province']['expose']['operator'] = 'province_op';
$handler->display->display_options['filters']['province']['expose']['identifier'] = 'province';
$handler->display->display_options['filters']['province']['expose']['remember_roles'] = array(
2 => '2',
1 => 0,
3 => 0,
4 => 0,
);
/* Display: Block */
$handler = $view->new_display('block', 'Block', 'block_1');
$handler->display->display_options['block_description'] = 'test nc block';
নোট করুন যে এই হ্যান্ডলারগুলি অবস্থানের মডিউল দ্বারা সরবরাহ করা হয়েছে। বিশেষত "অবস্থান: প্রদেশ" ফিল্টারটির জন্য আমাকে একটি স্বয়ংক্রিয় পূর্ণ ফর্ম দেওয়া হয়েছে। আমি যখন উত্তর ক্যারোলিনা টাইপ করি তখন তা পপ আপ হয় এবং আমাকে এটি নির্বাচন করতে হবে। যাইহোক, এসকিউএল বিবৃতিতে বিজ্ঞপ্তি দেখুন যে এটি উত্পন্ন করে এটি রাষ্ট্রের জন্য দুটি অক্ষর সংক্ষেপণ ব্যবহার করে:
SELECT node.title AS node_title, node.nid AS nid, node.created AS node_created
FROM
{node} node
LEFT JOIN {location_instance} location_instance ON node.vid = location_instance.vid
LEFT JOIN {location} location ON location_instance.lid = location.lid
WHERE (( (node.status = '1') AND (location.province = 'NC') ))
ORDER BY node_created DESC
LIMIT 10 OFFSET 0