뷰 컨텍스트 필터는 어떻게 작동합니까?


9

상황 별 필터를 다시 머리로 감싸려고합니다! 나는 그것을 잠시 동안 사용했지만 방금 완전히 다시 넘어졌습니다. 내가하려고하는 일은 다음과 같습니다.

  1. 이 복제 된 페이지에 분류 용어가 삽입 된 복제 된 컨텐츠 노드 페이지를 생성하십시오.

예 : EXAMPLE.com/white-shoes/blue

사용자가 / white-shoes 페이지에 도달하면 흰색을 향한 원본 노드 페이지가 표시됩니다. 이제 사용자가 / white-shoes / blue를 방문하면 동일한 노드 페이지가 표시되지만 이번에는 모든 본문 내용이 다시 작성되어 흰색을 파란색으로 바꿉니다.

에서 보기 나는의 경로로 페이지 표시를 만들어야 할 것입니다 : % / %

이제 nid를 검색하기위한 컨텍스트 필터를 작성하겠습니다. 콘텐츠 필터를 문맥 필터로 추가합니다. 기본 값 제공을 선택 하고 다음 PHP 코드를 넣습니다.

$ x = drupal_lookup_path ( 'source', arg (0));

$ y = 폭발 ( '/', $ x);

return $ y 1 ;

이 PHP 코드는 기본적으로 URL의 / white-shoes 부분을 NID로 변환합니다. 그러나 작동하지 않습니다. 터미널을 통해 drush ev 를 통해 코드를 테스트했으며 실제로 반환 결과를 얻으므로 작동한다는 것을 알고 있습니다.

분류 용어 이름에 대해서도 똑같이하고 그에 대한 문맥 필터를 추가하십시오. 이번에 는 기본 값 제공을 선택하고 URL 에서 RAW 값 을 선택하고 두 번째 인수를 선택하십시오.

여기에 이미지 설명을 입력하십시오

컨텍스트 필터에 대해 PREVIEW VALUE (AAA / BBB / CCC)를 입력하면 알 수 있습니다. 내 기본값은 무시됩니다. 그것은 두 번째 논쟁을 잡아야하지만, 첫 번째 논쟁 만 가져옵니다. SQL 문 WHERE를 보면 BBB가되어야 할 때 AAA를 받고 있음을 알 수 있습니다.

여기에 이미지 설명을 입력하십시오

그래서 문제는 내가 뭘 잘못하고 있거나 달성하려는 것에 대한 더 나은 해결책이 있습니까?


어리석게 들리지만 좀 더 자세하게 설명해 주시겠습니까? 나는 당신이 무엇을하려고하는지 이해하는 데 약간의 시간을 보내고 있습니다. 원시 값 또는 기본값 제공 대신 URL의 컨텐츠 ID를 사용하십시오. 그것은 NID를 제공 할 것입니다.
kyletaylored

kyle 님, URL에 상륙 한 이후 콘텐츠 ID가 없습니다 : / white-shoes / blue .... / blue url은 뷰에서 렌더링 한대로 존재하지 않습니다. 따라서 잡을 콘텐츠 ID가 없습니다 ... URL의 첫 번째 인수를 구문 분석 한 다음 해당 URL을 NID 경로로 변환해야합니다.
Patoshi パ ト シ

답변:


2

다음은 동영상과 관련 기사를 사용하는 방법을 설명하는 동영상입니다.이 예제에서는 애완 동물 (개, 고양이)을 사용합니다.이 문맥은 Views Contextual Filters를 사용하는 방법을 이해하는 데 도움이되는 간단한 예일 수 있습니다.

비디오 : https://www.youtube.com/watch?v=lJFMTDuaxy8 (YouTube 비디오 짧은 URL : lJFMTDuaxy8)

기사 : http://www.metaltoad.com/blog/using-drupal-contextual-filters-views


5

상황 별 필터는 URL 인수로보기의 출력을 필터링하는 데 사용되며,이 형식으로 인수를 수동으로 전달할 수도 있습니다.

<?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_3(arg_2 에는 경로 구성 요소 2 (보기 설정 페이지)가 있음)가 있습니다.

필터 값을 사용할 수없는 경우 :

그것은 drupal이 어떤 필터도 찾을 수 없다는 것을 의미합니다.

기본값을 제공하십시오.

필터 값을 사용할 수없는 경우이 옵션을 사용하여보기 출력에 대한 필터를 작성할 수 있습니다.이 필터는 PHP 코드 (PHP 필터 모듈이 사용 가능한 경우)이거나 URL 인수에서 값을 얻을 수 있습니다. URL에서). 예외 텍스트 상자에서 값을 속이고 모든 결과를 표시 할 수 있습니다.

필터 값을 사용할 수있는 경우

이 경우 drupal이 필터 값을 찾을 수있을 때 필요와 다른 옵션으로 유효성 검사를 수행합니다.


views_embed_view () 함수가 주어졌습니다. / white-shoes / blue의 하위 경로에 어떻게로드합니까? / blue는 뷰에서 생성 된대로 존재하지 않습니다. 사용자가 / blue 경로에 도달하면 첫 번째 인수를 구문 분석하고 해당 별칭의 NID를 가져온 다음 내용을로드해야합니다. 상황 별 필터의 문제점은 필터 값을 사용할 수있는 경우 PHP 값을 제공 할 방법이 없다는 것입니다.
Patoshi パ ト シ

@duckx, 필터를 사용할 수있을 때 PHP 값을 제공하는 탁월한 옵션이 있습니다 VALIDATION (type: PHP Code). 이 옵션을 사용하면 뷰 객체를 사용하고 필요한 모든 것을 할 수 있습니다. 귀하의 경우 /blue뷰에 의해 생성 된 경로는 해당 별칭의 노드 ID를 가져 오는 데 사용됩니다.
Jack-PL
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.