私は再びコンテキストフィルターに頭を回そうとしています!しばらく使っていましたが、またまた困惑しました。これが私がやろうとしていることです:
例:EXAMPLE.com/white-shoes/blue
ユーザーが/ white-shoesページに到達すると、白色に向けられた元のノードページが表示されます。ここで、ユーザーが/ white-shoes/blueに到達すると、同じノードページが表示されますが、今回はすべてのボディコンテンツが書き直され、白色が青色に置き換えられます。
Views では、次のパスでページ表示を作成する必要があります:%/%
次に、nidを取得するためのコンテキストフィルターを作成します。 Content:nidをコンテキストフィルターとして追加します。 PROVIDE A DEFAULT VALUEを選択し、これをPHPコード:
$ x = drupal_lookup_path( 'source'、arg(0));
$ y = explode( '/'、$ x);
$ y 1 ;を返す
つまり、PHPコードは、基本的にURLの/ white-shoes部分をNIDに変換します。しかし、それは機能しません。drush ev端末を介して、私は確かに返された結果を取得するので、私はそれが機能することを知っています。
分類用語の名前についても同じことを行い、そのためのコンテキストフィルターも追加します。今回はPROVIDE A DEFAULT VALUEを選択し、RAW VALUE FROM URLを選択します2番目の引数を選択します。
ご覧のとおり、コンテキストフィルターのプレビュー値を入力すると、AAA/BBB/CCCになります。デフォルト値は無視されます。 2番目の引数を取得することになっていますが、1番目のみを取得しています。 SQLステートメントのWHEREを見ると、BBBであるはずのときにAAAを取得していることがわかります。
だから問題は何が間違っているのですか、または私が達成したいことにもっと良い解決策がありますか?
以下は、ビデオとその使用方法を説明する関連記事です。この例では、ペット(犬、猫)を使用しています。これは、ビューコンテキストフィルターの使用方法を理解するのに役立つ単純な例です。
動画:https://www.youtube.com/watch?v=lJFMTDuaxy8 (YouTube動画の短いURL:lJFMTDuaxy8 )
記事:http://www.metaltoad.com/blog/using-drupal-contextual-filters-views
Contextual Filterを使用して、URL引数でビューの出力をフィルタリングします。また、uは次の形式で引数を手動で渡すことができます。
<?php print views_embed_view($name,$display_id,$arg1,$arg2,$arg3); ?>
ここで、 "$ name"はビューの名前(例: 'example_view')で、 '$ display_id'はビューの表示タイプ(例: 'default')であり、 "$ arg1、$ arg2、$ arg3"は引数ですURLと同じように。
URL引数の構造は次のとおりです:
http://example.com/arg_1/arg_2/arg_ (arg_2にはパスコンポーネント2(ビュー設定ページ内)があります)。
フィルター値が利用できない場合:
drupalはフィルターを見つけることができません。
デフォルト値を指定:
フィルター値が使用できない場合、このオプションを使用してビュー出力用のフィルターを作成できます。このフィルターは、PHP code(if PHP filter module有効)または、URL引数から値を取得できます->(URLからの生の値)例外テキストボックスでは、値をカンニングしてすべての結果を表示できます。
フィルター値が使用可能な場合
この場合、drupalがフィルター値を見つけることができる場合、必要に応じて検証を行い、他のいくつかのオプションを実行します。