2 개의 필드를 비교하여보기를 필터링하는 방법 field-a <field-b 인 경우


18

가격 입력란이 2 개인 제품 콘텐츠 유형이 있습니다.

가격 -A가 가격 -B보다 작은 모든 제품을 표시하는보기를 작성하려고합니다.

필터를 추가하고 가격 -A를 선택한 다음 더 작게 운영을 선택하고 값을 가격 -B로 설정할 수 있기를 바랐지만 그렇게 할 수는 없었습니다.

나는 주로 hook_views_query_alter와 같은 뷰 후크를 사용하여 살펴 보았지만 운이 없었습니다.

또한 Views PHP 모듈을 사용해 보았지만 작동하지 못했습니다.

누구든지 이것을 달성하는 가장 좋은 방법을 알고 있습니까?

답변:


10

당신이 찾고있는 것은 필터 기준입니다 Global: Fields comparison:)


3
이것이 정답입니다.
joe_flash

4

Drupal Answers Stack Exchange에 오신 것을 환영합니다! 현재 Drupal보기에서 내가 아는 것처럼 이것을 달성 할 수있는 직접적인 방법은 없습니다.

Views PHP 모듈을 사용 하여이 작업을 수행 할 수 있습니다 . 이 모듈을 활성화하고 위의 모듈을 설치 한 후 뷰 필터 글로벌 범주에서 선택할 수있는 필터 PHP 필터를 추가하십시오.

필터의 PHP 코드 섹션에 아래와 같은 PHP 코드를 추가하십시오.

$node = node_load($data->nid);

$field_a = field_get_items('node', $node, 'field_price_a');
$price_a = field_view_value('node', $node, 'field_price_a', $field_a[0]);

$field_b = field_get_items('node', $node, 'field_price_b');
$price_b = field_view_value('node', $node, 'field_price_b', $field_b[0]);

if ($price_a >= $price_b) {
  return TRUE;
}

가격 A 필드 이름으로 field_price_a를 변경하고 가격 B 필드 이름으로 field_price_b를 변경하십시오.

나는 테스트했고 그것은 나를 위해 일했다! 당신도 그것을 깨뜨릴 수 있기를 바랍니다 :-)


제안 해 주셔서 감사합니다. 여전히이 코드로 작업 할 수없고 dsm ($ data)를 수행 할 때 표시되는 필드를 사용했습니다. 확인란을 추가하고 확인란을 선택하면 필터링 할 수 있다고 생각합니다. 당신의 도움을 주셔서 감사합니다.
Fadzy

한편, 커스텀 코딩없이 필요한 기여 모듈을 볼 수있어 뷰가 가능하다.
Елин Й.



-2

가격이 컨텐츠 유형의 필드 인 경우 Drupal 7보기에서 필드 비교기를 자동으로 쉽게 선택할 수 있습니다. 나는 이것이 작동해야한다고 생각한다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.