Drupal。インストールのフォルダー引数なしで現在のURLからパスエイリアスを取得する

StackOverflow https://stackoverflow.com/questions/2998295

  •  24-10-2019
  •  | 
  •  

質問

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

drupal_get_path_alias(request_uri())

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

前もって感謝します :)

役に立ちましたか?

解決

それを見つけた。それは実際に両方の提案の組み合わせでした:

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

ありがとう。


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

代替方法を使用することを提案した人が次のとおりです。

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

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

ありがとう

他のヒント

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

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」クエリ文字列値を確認できます。

たぶん、このようなbase_path()とstr_replaceを使用できます。

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

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

$current_page_url = drupal_get_path_alias( implode( '/', arg() ) );

また、機能します

やってみました $_GET['q']?

base_path()が単なる「/」ではないときに発生する問題を避けるために、私は代わりに完全なURLのためにふっくらとする傾向があります。

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

またはさらに簡単に:

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

最速のソリューション。

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

それを議論に渡す

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top