ノードBへのノード参照を持つノードAがあります。
ビューには、特定のノードBが参照されているすべてのノードAが表示されます(nid:123、title:node-B-title)。
コンテキストフィルターでnidを使用する代わりに、ノードタイトルを使用したいと思います。たとえば、次の代わりに:
view-name/123
使いたい
view-name/node-B-title
どうすればできますか?
私は非常によく似た問題を抱えていて、その解決策を見つけただけでなく、ビューがどのように機能するかについて新しいことも学びました。私が学んだこととあなたの問題の解決策も共有しましょう。
1つ以上のコンテキストフィルターを使用してビューを作成する場合、ビューはどこかからそれらのフィルターの値を受け取る必要があります。これは-
foo/%/bar
_または_foo/bar/%
_の形式のURLが含まれます。複数のフィルターの場合、_foo/%/bar/%
_または_foo/bar/%/%
_の形式の_特定の問題の解決策上の画像の矢印が指すセクションで非常に類似したコードを使用することにあります。
このリンク は私にとって大きな助けになることがわかりました。ここからの抜粋です:
_$np = explode('/', drupal_get_normal_path($argument));
if (!empty($np[1])) {
$handler->argument = $np[1];
return TRUE;
} else {
return FALSE;
}
_
受け入れられた回答を編集しましたが、実際のコードをここに追加したいと思います。
コンテキストフィルターの検証オプションの下でPHP検証済みオプションを使用します。
$np = explode('/', drupal_get_normal_path($argument));
if (!empty($np[1])) {
$handler->argument = $np[1];
return TRUE;
} else {
return FALSE;
}
これはすべての状況で機能するわけではありませんが、問題の問題への1つのアプローチは、ノードB(またはノードタイプB)の実際のノード表示を使用して、パスまたはパス自動モジュールで希望する方法でパスを設定することです。次に、viewsブロックを使用して、コンテンツの関係と必要なビューを追加します。
NIDでコンテキストフィルターを使用してから、Provide default value > Content ID from URL
。次に、viewsブロックをページまたはページのセットに追加します。
コンテキストで、ビューページではなくノード自体でビューブロックを使用できる場合、これにより、必要なパスを取得し、必要なビューを簡単に表示できます。
ビューの引数は、コンテンツタイプのフィールド参照である必要があります。次に、[デフォルトの引数を提供]オプションを選択し、オプションId Node(like like))をオンにします。
1)引数「Xフィールド参照」を追加する2)URLからIDノードを確認する(デフォルト引数を追加する)3)検証セクションでノードのコンテンツタイプを確認し、設定「ノードタイプ」で「ノードID」を選択する
これで完了です。 :)
古い質問ですが、Googleを介してそれを見つけ、将来それを見つけた人のために私の解決策を共有すると思いました。
safeword という名前のモジュールができました。これは、基本的にSumeet Pareekが提案したことを正確に実行します:(自動的に)URLフレンドリーなフィールドを作成します。
拡張パスエイリアス(path_alias_xt)モジュール をお勧めします。設定なしでインストールするだけでこの問題を修正できます。基本的には魔法のようです。 :D実際にはありませんが、モジュールページからの抜粋は、インストール方法と、その他の問題を修正する方法を説明していますが、モジュールがバックグラウンドで実行する方法については触れていません... O、ええと、常にコードを読む:Dビューパスの修正については具体的には触れていませんが、私はそれを使って完全に機能しています。
モジュールのページから、それが解決する問題のリスト:
- たとえば、node/123にabout-usのようなエイリアスを定義した後、ページが/ node/123/edit、node/123/revisionsなどの醜いマシン生成のタブやリンクでいじられている理由を疑問に思ったことはありませんか? 。?
- 同様に/ taxonomy/term /%および/ user /%リンクの場合:/ dries/trackが表示されることを期待していましたが、/ user/5/trackを取得しましたか?
- ブラウザのアドレスバーにも、エイリアスではなく醜い数字が表示されていますか?