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