2010-06-16 2 views
2

배경 : 캐시에 해시 및 쿼리를 저장하는 복잡한 검색 양식이 있습니다. 캐시가 설정되면, /searchresults/e6c86fadc7e4b7a2d068932efc9cc358과 같은 방향으로 리디렉션됩니다. 마지막에 큰 긴 문자열은 내 쿼리의 md5 해시입니다. 해시가 무엇인지 알기 위해 뷰에 대한 새로운 인수를 만들어야합니다.Drupal Views api, 간단한 인수 처리기를 추가하십시오.

원래의 검색 양식이 복잡하기 때문에 많은 인수를 사용하여 모든 경로를 경로에 넣고 일반보기 인수로 필터링하는 방법을 고려해야하기 때문입니다.

내 질문에 대한 지금. 보기 2 설명서를 읽었지 만이 사용자 지정 인수를 수행하는 방법을 파악하지 못했습니다. 내게 그렇게 느껴지지 않는 것 같아. veiws api에 대한 지식이 없으면, 필자가 필요한 것은 단지 인수 일 뿐이므로 경로에서 인수를 취하여 필터링 할 노드 ID 목록을 반환하는 콜백 함수가 필요한 것처럼 보일 수 있습니다.

누구든지 솔루션을 알려 주거나 예제 코드를 알려줄 수 있습니까?

도움 주셔서 감사합니다. 너희들은 위대해.

추신. 나는 내 설계가 내가 생각해 낼 수있는 최선이라고 확신한다. 우리가 도울 수 있다면 나의 설계 논리를 점검하면서 내 질문에서 벗어나지 못하게하자.

답변

1

만들기가 쉽지 않습니다.

보기에서 인수는 개체, fx 사용자, 노드, 용어, 사용자 지정 개체를 반환하는 데 사용됩니다. 그래서 당신은 "쿼리 객체"를 얻기 위해 사용자 정의 코드를 만들 수 있습니다. 그것은 첫 단계 일뿐입니다. 그런 다음 쿼리 개체에서 정보를 가져와야합니다. 노드와 사용자 정의 관계 본드를 만들거나 자신 만의 필터를 만들어 필요한 SQL을 만들 수도 있습니다. 이것은 빠르게 혼란을 야기 할 수 있습니다.

대신 hook_views_query_alter을 사용하면 쿼리를 변경할 수 있습니다. 이미 SQL이 있으므로 해시를 확인하는 것만으로 문제가 발생하면 쿼리를 변경하십시오. 할 아주 간단한 일이되어야합니다. 조금 까다 롭습니다. 뷰를 사용하는 쿼리 개체를 사용하여 쿼리를 만들어야하지만 알아 내기가 어렵지 않습니다.

+0

답변 해 주셔서 감사합니다. 실제로 필자가 필요로하는 것을 성취하기위한 시점까지 api가 알아 낸 사실을 얻는 데 단지 두 시간이 걸렸습니다. 나는 그것을 결코 마스터하지는 못했지만 효과가있다! 시간 내 응답을 얻으려면 1 시간 또는 2 시간을 절약 할 수 있습니다 ... 오 잘. :) – Icode4food

관련 문제