web-dev-qa-db-ja.com

ビューのコンテキストフィルターはどのように機能しますか?

私は再びコンテキストフィルターに頭を回そうとしています!しばらく使っていましたが、またまた困惑しました。これが私がやろうとしていることです:

  1. このクローンページに挿入された分類用語を使用して、クローンコンテンツノードページを生成します。

例: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番目の引数を選択します。

enter image description here

ご覧のとおり、コンテキストフィルターのプレビュー値を入力すると、AAA/BBB/CCCになります。デフォルト値は無視されます。 2番目の引数を取得することになっていますが、1番目のみを取得しています。 SQLステートメントのWHEREを見ると、BBBであるはずのときにAAAを取得していることがわかります。

enter image description here

だから問題は何が間違っているのですか、または私が達成したいことにもっと良い解決策がありますか?

9

以下は、ビデオとその使用方法を説明する関連記事です。この例では、ペット(犬、猫)を使用しています。これは、ビューコンテキストフィルターの使用方法を理解するのに役立つ単純な例です。

動画:https://www.youtube.com/watch?v=lJFMTDuaxy8 (YouTube動画の短いURL:lJFMTDuaxy8 )

記事:http://www.metaltoad.com/blog/using-drupal-contextual-filters-views

2
Chris Charlton

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がフィルター値を見つけることができる場合、必要に応じて検証を行い、他のいくつかのオプションを実行します。

5
Reza Shadman