4

インストールのフォルダー引数なしで現在のページ パス エイリアスを取得したいと思います。私は使用しています:

drupal_get_path_alias(request_uri())

しかし、これはインストール/何でも/実際の/パスを返します。インストールが何であれ、実際の/パスのみを取得したいと思います。

前もって感謝します :)

4

7 に答える 7

9

それを見つけた。実際には、両方の提案が混在していました。

$current_path = drupal_get_path_alias($_GET["q"]);

でもありがとう。


更新: 以前のソリューションが常に機能するとは限りません

誰かが別の方法を使用することを提案しました:

str_replace(base_path(), '', drupal_get_path_alias(request_uri(), 1));

しかし、少し高価な str_replace を使用せずに同じことを行う方法はありますか?

ありがとう

于 2010-06-08T14:46:16.243 に答える
2

あなたがいるノードのパスは?

http://api.drupal.org/api/function/drupal_get_path_alias/6

if ($node || (arg(0) == 'node' && arg(2) != 'edit')) {
   $system_path = 'node/'.arg(1);
   $current_path = drupal_get_path_alias($system_path);
}

そのコードはノード ページで実行され、ページ エイリアスが通知されます。

詳細については、$_GET をダンプして、'q' クエリ文字列の値を確認してください。

于 2010-06-08T14:41:27.050 に答える
1
$current_page_url = drupal_get_path_alias( implode( '/', arg() ) );

も動作します

于 2011-03-23T15:01:07.983 に答える
1

おそらく、次のように base_path() と str_replace を使用できます。

str_replace (base_path(), '', drupal_get_path_alias(request_uri()), 1);

base_path はデータベースに保存されます。

于 2010-06-08T14:50:42.193 に答える
0

base_path()が'/'だけではない場合に発生する問題を回避するために、代わりに完全なURLを使用する傾向があります。

$url = (($_SERVER['HTTPS'])?"https://":"http://")  .  $_SERVER['HTTP_HOST'] . url($_GET['q']);

またはさらに簡単に:

$url = url($_GET['q'], array('absolute'=>true));
于 2011-09-14T16:59:52.653 に答える
0

最速のソリューション。

substr(drupal_get_path_alias(request_uri(), 1), strlen(base_path()));

引数に渡すには

$arg = explode('/', substr(drupal_get_path_alias(request_uri(), 1), strlen(base_path())));

于 2014-03-04T01:41:32.907 に答える
0

試しました$_GET['q']か?

于 2010-06-08T14:42:19.717 に答える