0

これが私の現在の設定の問題なのか、それとも何をしたいのかわかりません。

Drupal 6サイトにプログラムでノードを作成するモジュールがあり、各モジュール内でさまざまなノード間にリンクを提供する必要があります。

基本的にいくつかのforeachループがあり、それぞれの中に現在のパスがあります。

例えば:

foreach ($page->category as $category) {
  $category_link = "category/" . $category['id'];

  // generate category pages
  ...
  $content = "<a href='$category_link'>".$category['name']."</a>";
  _create_node($content);

  foreach ($category->article as $article) {
    $article_link = $category_link . "/article/" . $article['id'];

    // generate article page
    $content = "<a href='$category_link'>".$category['name']."</a>";
    $content .= "<a href='$article_link'>".$article['name']."</a>";
    _create_node($content);
  }
}

私が見ている問題は、リンクが継続的に構築されているように見えることです。たとえば、メインのカテゴリページでは問題ありません(後で説明しますcategory/1234)。記事のリンクは問題ありませんが、カテゴリのリンクは本来よりも長くなっているように見えます。基本的に、私は見ることになります:

category/1234/article/5678/category/1234

私の最初の考えは、$base_url絶対パスを利用して作成することでしたが、モジュールからその変数を出力しようとすると、完全に空になります。これはローカルサーバー上にありますが、本番環境に移動すると、Drupalがルートにインストールされていないため、リンクの先頭にスラッシュを追加するだけでは不十分です。

4

3 に答える 3

2

$GLOBALS['base_path']を使用してベースパスを取得してみてください。

于 2012-11-14T20:36:39.597 に答える
1

$GLOBALS['base_path']は機能しますが、データベース接続情報やその他の重要な情報などが含まれているグローバル変数にアクセスしています。だから、指を滑らせるだけで、他のものをいじくりまわすことができます。私base_path()はどちらが同じことをするのが好きですが、少し安全です。

于 2012-11-15T22:34:37.507 に答える
0

使用する

global $base_url;

テーマフォルダへのパスには、

path_to_theme()

使用できますbase_path()が、ドメイン名は提供されません。
ベースURLはあなたに次のような完全なURLを提供します:www.example.com

base_path()はあなたに与えます:/

path_to_theme()あなたに与えます:sites / all / themes / yourthemename

于 2013-05-09T10:15:33.180 に答える