欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

得到 当前页面的 url 链接 当前路径 path 当前页面 有大用

function current_path() {

  return $_GET['q'];
}

drupal7 current_path()
drupal6 $_GET['q']


$GLOBALS['base_url'] + request_uri()



global $base_root; $base_root . request_uri();


drupal 6 中 假如url为 http://www.aaaa.com/node/468030/edit?destination=listkefu

$_GET['q']  为 node/468030/edit


request_uri() 为 /node/468030/edit?destination=listkefu

$_SERVER['REQUEST_URI'] 为 /node/468030/edit?destination=listkefu

 drupal_get_path_alias(request_uri()) 为  /node/468030/edit?destination=listkefu


标签: urlpathserverapi    
2012-08-07 00:15 3452人阅读 评论(0) 收藏 举报    
 分类:    

版权声明:本文为博主原创文章,未经博主允许不得转载。

在Drupal7 当中可以使用最新的API获取URL    

 

current_path()  为 node/468030/edit
   
request_path()   为 node/468030/edit
可以参考如下的文章:    

 

http://stackoverflow.com/questions/703426/how-to-get-the-full-url-of-a-drupal-page    

 

下面的是老方法:    

1.    

drupal_get_path_alias(request_uri())
   

2.    

$current_path = drupal_get_path_alias($_GET["q"]);
3.$current_url = 'http://' .$_SERVER['HTTP_HOST'] .$_SERVER['REQUEST_URI'];


来自  http://blog.csdn.net/habout632/article/details/7837326

 
up vote45down votefavorite                            
17                            

I need to be grabbing the URL of the current page in a Drupal site. It doesn't matter what content type it is - can be any type of node.

I am NOT looking for the path to theme, or the base url, or Drupal's get_destination. I'm looking for a function or variable that will give me the following in full:

http://example.com/node/number                                

Either with or without (more likely) the http://.

                              
shareimprove this question                                            
edited Mar 3 '15 at 22:23                                                
                                                   
kenorb                                                    
29.2k13191180                                                    
asked Mar 31 '09 at 23:04                                                
 
Kumiko-chan 
 
   
drupal_get_destination is the solution since you know the domain name and if you are coding for the same domain, you can use it! – Bhavin Joshi Apr 16 '13 at 4:43                                            
   
Related: How do I get the full URL of the current page? at Drupal SE – kenorb Mar 3 '15 at 23:01                                            
       

9 Answers

activeoldestvotes                    
       
up vote53down vote                            

drupal_get_destination() has some internal code that points at the correct place to getthe current internal path. To translate that path into an absolute URL, the url() function should do the trick. If the 'absolute' option is passed in it will generate the full URL, not just the internal path. It will also swap in any path aliases for the current path as well.

$path = isset($_GET['q']) ? $_GET['q'] : '<front>';
$link = url($path, array('absolute' => TRUE));
                           
shareimprove this answer                                            
edited Apr 3 '09 at 20:32                                                
  
answered Apr 1 '09 at 0:30                                                
                                                   
Eaton                                                    
6,91522023                                                    
 
1                                                             
according to your link, drupal_get_destination() returns "destination=/node/number" or, for /node/number?destination=bla, "destination=bla". passing this to url() doesn't seem to work to me. – ax. Apr 3 '09 at 13:23                                                
1                                                             
Doh. You're correct. I've updated the snippet with the correct code. Thanks! – Eaton Apr 3 '09 at 20:31                                                
   
Cool, but I had to add: $echo link; for a facebook app to work! Thanks! – user472717 Feb 6 '11 at 18:24                                                
         
up vote37down vote                            

This is what I found to be useful

global $base_root;
$base_root . request_uri();
                               

Returns query strings and it's what's used in core: page_set_cache()                                

shareimprove this answer                                            
answered Aug 3 '09 at 4:32                                                
                                                   
mikeytown2                                                    
1,2211826                                                    
 
1                                                             
Note that this method won't work if your site is not at the domain root. For example, if your base URL isexample.com/folder, this method will result in example.com/folder/folder/page. – Brandon Gano Sep 12 '12 at 0:22                                                
   
If that is the case then there is a bug in core. see that the code comments inapi.drupal.org/api/drupal/includes!bootstrap.inc/function/… "Build $base_root (everything until first slash after "scheme://")." – mikeytown2 Sep 12 '12 at 0:36                                                
   
Another thing that could be causing issues that you're seeing if if you're web server is passing the wrong values in for $_SERVER see api.drupal.org/api/drupal/includes!bootstrap.inc/function/…. – mikeytown2 Sep 12 '12 at 0:42                                                
       
up vote19down vote                            

You can also do it this way:

$current_url = 'http://' .$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
                               

It's a bit faster.

shareimprove this answer                                            
edited Mar 3 '15 at 22:24                                                
                                                   
kenorb                                                    
29.2k13191180                                                    
answered Jan 27 '10 at 14:15                                                
                                                   
ThomasR                                                    
19112                                                    
 
4                                                             
Always program to an interface not an implementation. – Rimian Mar 13 '11 at 10:28                                                
       
up vote14down vote                            

Try the following:

url($_GET['q'], array('absolute' => true));
                           
shareimprove this answer                                            
edited Mar 3 '15 at 22:25                                                
                                                   
kenorb                                                    
29.2k13191180                                                    
answered Apr 3 '09 at 13:56                                                
                                                   
ax.                                                    
37k55960                                                    
 
2                                                             
This is a little more drupaly: url(current_path(), array('absolute' => true)); – Bala Clark Jul 11 '13 at 14:06                                                
       
up vote12down vote                            

This method all is old method, in drupal 7 we can get it very simple

    current_path()
                               

and another function with tiny difference

request_path()
                               
shareimprove this answer                                            
edited Nov 29 '13 at 19:13                                                
                                                   
Benjamin                                                    
12.2k1697184                                                    
answered May 22 '12 at 5:16                                                
                                                   
zhilevan                                                    
1,41162248                                                    
 
   
The question is about getting the full URL, i. e. something like http://example.com/node/number . – ax.Sep 24 '12 at 11:16                                                
       
up vote4down vote                            

I find using tokens pretty clean. It is integrated into core in Drupal 7.

<?php print token_replace('[current-page:url]'); ?>
                           
shareimprove this answer                                            
answered Sep 20 '12 at 13:03                                                
                                                   
Yo-L                                                    
3971310                                                    
 
   
Token [site:current-page:path] should work either. – kenorb Aug 8 '14 at 13:36                                                
       
up vote3down vote                            

The following is more Drupal-ish:

url(current_path(), array('absolute' => true)); 
                           
shareimprove this answer                                            
answered Mar 3 '15 at 22:26                                                
                                                   
kenorb                                                    
29.2k13191180                                                    
 
       
up vote0down vote                            

For Drupal 8 you can do this :

$url = 'YOUR_URL';
$url = \Drupal\Core\Url::fromUserInput('/' . $url,  array('absolute' => 'true'))->toString();
                           
shareimprove this answer                                            
edited Feb 22 at 14:06                                                
                                                   
Thomas Rollet                                                    
7711519                                                    
answered Feb 22 at 12:12                                                
                                                   
Jitendra Mittal                                                    
1                                                    
 
       
up vote-1down vote                            

Maybe what you want is just plain old predefined variables.

Consider trying

$_SERVER['REQUEST_URI'']
                               

Or read more here.

来自  http://stackoverflow.com/questions/703426/how-to-get-the-full-url-of-a-drupal-page


普通分类: