Additional parameters to aliased panels paths I'm trying to build a news/blog feed for each of our internal departments.  I have a vocabulary with terms for each department, and have successfully created a panels page at extranet/news/&lt;tid&gt; which displays a content pane view of the most recent N posts.  The departments want to be able to alias their newsfeed, to something like hr-news, so add a url alias hr-news =&gt; /extranet/news/&lt;tid-for-hr&gt;.  This all works fine thus far.

The problem comes when I try to put a summary view in another pane on the same panel to link to previous months of posts, where the goal would be to use a path like hr-news/2011/10 or similar.  But to do this, it seems that I would have to create a url alias for each month/year/department combination.

The other option would be to use GET parameters, but I cant figure out how to load a GET parameter into a panels context so i can pass it to the view.  Am I approaching this problem wrong?
I have a similar problem on a Drupal 7 site, and am posting as much to share my solution as to "subscribe" and hear from others about the potential pitfalls or alternative solutions. 

In my case, I have a number of panels that display "related" content to a node. 

Let's say that it's an artist node, and that I have a few panels or variants representing the 


artist (url artist/[artist-nid])
their albums (albums/[artist-nid])
their band history (history/[artist-nid]). 


For SEF urls, I want to alias those to something like 


artist-name-profile
artist-name-albums
artist-name-band-history


Because pathauto doesn't "see" the panels, and because the urls are of an unusual structure (no '/' ) I wrote a custom module to do url rewriting using hook_url_inbound_alter() and hook_url_outbound_alter().

For Drupal 6 you can use http://drupal.org/project/url_alter It's baked into Drupal 7. 

So basically, I maintain a cck field on the artist node containing a url friendly version of the artist name. Then use code something like the following. 

function myModule_url_outbound_alter(&amp;$path, &amp;$options, $original_path) {
  $parts = explode('/', strtolower($original_path));
  $prefix = array_shift($parts);

  switch($prefix) {
    case 'albums': 
      if (!empty($parts[0]) &amp;&amp; is_numeric($parts[1])) {
        $url_fragment = myModule_get_unique_url_safe_artist_name($parts[1]);
        $path = $url_fragment.'-albums';
      }
      break;
    // etc
  }
}

function myModule_url_inbound_alter(&amp;$path, $original_path, $path_language) {
  $parts = explode('-', strtolower($original_path));

  $suffix = array_pop($parts);

  switch ($suffix) {
    case 'albums':
      $map = implode('-', $parts);
      $nid = myModule_get_nid_from_unique_url_safe_artist_name($map);
      $path = 'albums/'.$nid;
      break;
    // etc
  }
}


Pros, 


I get a great deal of flexibility on the url design - non-conventional urls are possible
I do not need to have over 50,000 records in the url_alias table. 
I can quickly and easily change the urls without having to rebuild the alias table
I can reach those pages pathauto can't
It works. 


Cons,


every url passes through this test and the ones that match will be slowed down by at least one db query. (this doesn't appear to be much of a performance hit by YMMV)
url changes require developer intervention
For large numbers of panel variants, this function can become difficult to maintain, particularly because you have to be careful not to allow conflicts to arise. See below for example. 
This doesn't smell right as an approach


Conflicts can come up based on your url matching methodology. I the above case we split on '-', this can become a problem in this specific case if the artist url were simply artist-name and the artist's name was literally "Michael-albums" since this would be interpreted as an album page for "Michael" rather than an artist page for "Michael Albums".