Drupal ビューとパスの URL
-
18-09-2019 - |
質問
私が構築している 1 つのビューで Drupal パスに問題があります。現在、私のビューは次の形式になっています。目次/2/6。
2 と 6 が 2 つのノードの ID である場合、これらの ID を操作して、たとえばそれらのノードのタイトルを翻訳したいと思います。
これらの値をパネルに送信しているため、ビューからこれを行うことはできません。パネルはノードの ID を受信する必要があります。
要約すると、(pathauto が行うように) これらの ID をタイトルに書き換えたいだけですが、それはできますか?これのための特定のモジュールはありますか?
ありがとう!
解決
私の理解が正しければ、元のパス 'content/[nid_x]/[nid_y]' を保持したいと考えていますが、ノードからのより多くの 'speaking' パス要素を持つパス要素 (例:タイトル)。それが正しい場合、次の 2 つの選択肢があります。
まず、「admin/build/path/add」の下に「content/[nid_x]/[nid_y]」の URL エイリアスを定義することで、これを手動で行うことができます。これは簡単に実行できますが、多くのエイリアスが必要な場合は、おそらく探しているものではありません。
2 番目に、次の方法でプログラム的に実行できます。 path_set_alias()
関数。この関数の使用は非常に簡単です。唯一の問題は、それをどこでトリガーするかということです。あなたの説明からは、これらのビューがいつどこで作成されるのかが明確ではないため、提案を思いつくのは難しいです。おそらく、質問を編集して、それについてもう少し具体的にすることができます。
特定のノードの組み合わせに対してビュー URL エイリアスを作成したい場合は、次の「挿入」、「更新」、および「削除」操作を使用してみてください。 hook_nodeapi()
エイリアスの作成をトリガーします。明らかに、これは、どのノードにエイリアスを作成するかどうかをコードから決定できる一貫したルールがある場合にのみ機能します。
特定のパスに URL エイリアスを設定すると、そのパスへのリンクが l() 関数。たとえば、「content/2/6」を指すメニュー エントリを作成すると、使用される URL は自動的にそのパスに対して作成したエイリアスになります。
編集:プログラムでエイリアスを作成することになった場合に備えて - とにかく pathauto を使用する場合は、そのパスオートを使用できます/使用する必要があります。 pathauto_cleanstring()
(「pathauto.inc」から) 関数を使用して、生成された URL が適切にエスケープされ、許可された文字に書き換えられるようにします。
他のヒント
専用のカスタム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#秒を代用することをお勧めします。この情報がお役に立てば幸いです。
おそらく便利aswellます:
<a href="nodeview/[title]/nid" title="[title]">link tekst</a>
のようなトークンの交換を使用してリンクを構築するためにビューを使用して開始するリンクを変更
そしてパスEXAのnodeview及び引数NULL、NULL、NIDのf.iとビュー内のノードを扱う。
より複雑なリンクのための私たちの文字列を構築するためのビューPHPのフィールド..