If you changed your url from
www.example.com/experience/asia
to
www.example.com/experience?type=asia
you should be able to access asia
and any other "type" from your block like this:
$types = drupal_get_query_parameters();
foreach ($types as $key => $value){
switch ($key) {
case 'asia':
// code for asia goes here...
break;
case 'europe':
// code for europe goes here...
break;
// etc
}
}
Otherwise, as the comments suggest, www.example.com/experience/whatever
is going to fail because drupal hasn't declared a menu item for that path. However, variables can be passed in practically anywhere without drupal needing to know about them all as they don't change the base url.
If you still wanted the "cleaner" looking url, I suppose you could create a hook_menu() item like:
$item['experience/%'] = array(
'title' => 'Experience',
'page callback' => 'experience_type',
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
and then function called experience_type
that returned the contents of node/4
or whatever experience
is aliased to. Then, in your block you could do something like:
switch (arg(1)) {
case 'asia':
// code for asia goes here...
break;
case 'europe':
// code for europe goes here...
break;
// etc
}
and if all is good in the world, www.example.com/experience/asia
would work.