Hi Dave Thanks for the hint. Furtunately url() flattens the query into a string if it's an array, before it calls custom_url_rewrite_outbound().
Regards Ernst 2010/11/19 Dave Reid <[email protected]> > Ernst, > > Keep in mind that $options['query'] can also be an array, so your code will > fail if I try to do url('mypath', array('query' => array('foo' => 'bar')); > > Dave Reid > [email protected] > > > > On Fri, Nov 19, 2010 at 2:33 AM, Ernst Plüss <[email protected]>wrote: > >> Sorry for the noise! I Just realized that the $options array is passes by >> reference to custom_url_rewrite_outbound as well. This means the correct >> code looks like this: >> >> function custom_url_rewrite_outbound(&$path, &$options, $original_path) { >> if (isset($_GET['iframe']) && 'on'==$_GET['iframe']) { >> $options['query'] .= (strlen($options['query'])>0 ? '?' : '') . >> 'iframe=on'; >> } >> } >> >> Regards >> Ernst >> >> >> 2010/11/19 Ernst Plüss <[email protected]> >> >> Hi Drupalfriends >>> >>> I'd like to add a query string to every url. If the URL is '/node/234' it >>> should change to '/node/234&iframe=on'. >>> >>> I found the custom_url_rewrite_outbound function and added it to my >>> settings.php: >>> >>> if (isset($_GET['iframe']) && 'on'==$_GET['iframe']) { >>> $path .= (strpos($path, '?') !== FALSE ? '&' : '?') . >>> 'iframe=on'; >>> } >>> >>> This works fine, but the url() method, which >>> calls custom_url_rewrite_outbound runns $path through drupal_urlencode() >>> afterwards. This means the url changes to '/node/234%3Fiframe%3Don' which >>> obviously does not work. >>> >>> Am I doing something wrong or is there another way of getting this to >>> work? >>> >>> Regards >>> Ernst >>> >>> >> >
