web-dev-qa-db-ja.com

Drupalページの完全なURLを取得する方法?

Drupalサイト。現在のページのURLを取得する必要があります。コンテンツタイプが何であるかは関係ありません。どのタイプのノードでもかまいません。

テーマへのパス、ベースURL、またはDrupalのget_destinationを探していません。以下を完全に提供する関数または変数を探しています。

http://example.com/node/number

http://の有無にかかわらず(可能性が高い)。

46
Kumiko-chan

drupal_get_destination() には、現在の内部パスを取得するための正しい場所を指す内部コードがあります。そのパスを絶対URLに変換するには、 rl() 関数がトリックを行う必要があります。 'absolute'オプションを渡すと、内部パスだけでなく完全なURLが生成されます。また、現在のパスのパスエイリアスもスワップします。

$path = isset($_GET['q']) ? $_GET['q'] : '<front>';
$link = url($path, array('absolute' => TRUE));
53
Eaton

これは私が有用であることがわかったものです

global $base_root;
$base_root . request_uri();

クエリ文字列を返し、コアで使用されるものです: page_set_cache()

37
mikeytown2

この方法でもできます:

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

それは少し速いです。

19
ThomasR

以下を試してください:

url($_GET['q'], array('absolute' => true));
14
ax.

このメソッドはすべて古いメソッドです。drupal 7では、非常に簡単に取得できます

    current_path()

そして、わずかな違いがある別の関数

request_path()
12
Yusef Mohamadi

トークンの使用はとてもきれいです。 Drupal 7.でコアに統合されています。

<?php print token_replace('[current-page:url]'); ?>
4
Yo-L

以下はより多くのDrupal-ish

url(current_path(), array('absolute' => true)); 
3
kenorb

For Drupal 8これを行うことができます:

$url = 'YOUR_URL';
$url = \Drupal\Core\Url::fromUserInput('/' . $url,  array('absolute' => 'true'))->toString();
0
Jitendra Mittal