Go to core/classes/bm/location.php and add the following lines in the get() func near line 70 after:
$dynamic_object_condition = "";
if (!empty($dynamic_object['object_id'])) {
$dynamic_object_scheme = Bm_SchemesManager::get_dynamic_object($dispatch, 'C');
if (!empty($dynamic_object_scheme)) {
$dynamic_object_condition = db_quote(
" AND (FIND_IN_SET(?i, l.object_ids) OR l.object_ids = '')",
$dynamic_object['object_id']
);
}
}
if($dispatch=='pages.view'){
$predispatch = 'pages.view&page_id='.$_REQUEST['page_id'];
$test = db_get_field("SELECT `dispatch` FROM ?:bm_locations WHERE `dispatch`='{$predispatch}'");
if($test){
$dispatch = $predispatch;
}
}
Now you are able to create new block manager locations for specific pages.
eg: Add new location and set dispatch as : pages.view&page_id=30
The same can be done for products with some minor changes on the snippet i gave you