0

私が構築している 1 つのビューの drupal パスに問題があります。現在、私のビューは次の形式になっています: contents/2/6.

2 と 6 は 2 つのノードの ID です。これらの ID を操作して、これらのノードのタイトルとしましょう。

これらの値をパネルに送信しているため、ビューからこれを行うことはできません。パネルはノードの ID を受信する必要があります。

要約すると、これらの ID をタイトルに (pathauto のように) 書き換えたいだけですが、それはできますか? このための特定のモジュールはありますか?

ありがとう!

4

3 に答える 3

3

私が正しく理解している場合、元のパス 'content/[nid_x]/[nid_y]' を保持したいが、ノードからのより多くの 'speaking' パス要素 (タイトルなど) を持つパスの URL エイリアスを追加します。それが正しければ、次の 2 つのオプションがあります。

まず、'admin/build/path/add' の下で 'content/[nid_x]/[nid_y]' の URL エイリアスを定義することにより、手動で行うことができます。これは簡単に実行できますが、これらのエイリアスが多数必要な場合は、探しているものではない可能性があります。

次に、path_set_alias()関数を使用してプログラムで実行できます。関数の使用は非常に簡単です。唯一の問題は、どこでそれをトリガーするかです。あなたの説明から、これらのビューがいつ/どこで作成されるかが明確ではないため、提案を思いつくのは難しいです.質問を編集して、それについてもう少し具体的にすることができます.

特定のノードの組み合わせに対してそのビュー URL エイリアスを作成する場合は、「挿入」、「更新」、および「削除」操作を使用hook_nodeapi()して、エイリアスの作成をトリガーすることができます。明らかに、これは、どのノードのエイリアスを作成するかどうかをコードから決定できる一貫したルールがある場合にのみ機能します。

特定のパスに URL エイリアスを配置すると、そのパスへのリンクがl()関数を介して作成されるたびに、元のエイリアスの代わりに使用されます。たとえば、'content/2/6' を指すメニュー エントリを作成すると、使用される URL は自動的にそのパス用に作成したエイリアスになります。


編集:プログラムでエイリアスを作成する場合に備えて-とにかくpathautoを使用する場合は、そのpathauto_cleanstring()関数(「pathauto.inc」から)を使用して、生成されたURLが適切にエスケープ/許可された文字に書き換えられるようにする必要があります。

于 2009-12-08T20:39:58.553 に答える
0

カスタム URL 関数を使用して専用のカスタム URL を作成する方法があります。ただし、パネルを使用している場合、非常に静的であるため、この方法を使用するかどうかはわかりません。

function custom_url_rewrite($op, $result, $path) {

  if ($op == 'alias') {
    if (preg_match('|^[node_id#_here](/{0,1}.*)|', $path, $matches)) {
      return '[desired_alias]'. $matches[1];
    }
  }

  if ($op == 'source') {
    if (preg_match('|^[node_id#](/{0,1}.*)|', $path, $matches)) {
      return '[desired_source]'. $matches[1];
    }
  }

  return $result;

}

ノード ID 番号を独自のエイリアスとソースに置き換えるだけでなく、独自のエイリアスとソースを使用することもできます。お役に立てれば。

于 2009-12-08T18:10:23.367 に答える
0

おそらく同様に便利です:

ビューを使用して開始リンクを変更し、トークン置換などを使用してリンクを構築し、<a href="nodeview/[title]/nid" title="[title]">link tekst</a> パス exa nodeview と引数 null、null、nid fi を使用してビューでノードを処理します

より複雑なリンクについては、文字列を作成するビュー php フィールドを使用します。

于 2011-04-27T07:17:12.327 に答える