2009-09-02 6 views
0

Drupal 5보기 ("Views 1"이어야 함)에 실제 날짜가있는 필드에 대해 보통 표시되는 Event_StartTime 필드가 있습니다. 그러나 나는 또한 사건 번호가 1969 년 12 월 31 일 - 오후 8 시인과 같이 Event_StartTime 필드 값이 많은 레코드를 보유하고 있으며 "No Date Available"과 같은 일부 사용자 정의 레이블로 대체해야합니다.Drupal :보기에서 필드 값 바꾸기

어떻게하면이 조건 (값 = x의 표시 값 y)을보기에 주입 할 수 있습니까? "No Date Available"을 SQL에 인쇄해도보기에는 빈 필드가 표시됩니다.

요약하면 일반적으로보기 필드는 종류가 제한되어 있고 일부 필드 값을 바꿀 필요가 있지만 "날짜 또는 아무것도 없음"또는 "노드 참조 ID 또는 없음"중 하나입니다.

P. 내보기가 CSV 데이터를 반환하게하는 "보너스 :보기 내보내기"모듈을 사용하기 때문에 상황이 약간 복잡 할 수 있습니다.

답변

1

헨릭의 의견에 비추어 볼 때, 테마는 나에게이 작업을 수행하는 데 가장 좋은 장소 인 것처럼 보입니다. 특정보기를 재정의하려면 template.php 파일에 함수를 추가해야합니다. Views 1 theming documentation을 참조하십시오. 이 문서를 기반으로 전체보기를 테마로보기의 이름이

function THEMENAME_view_view_VIEWNAME($view, $type, $nodes, $level = NULL, $args = NULL) 

인 함수를 만듭니다. $nodes은 뷰에 포함 된 부분로드 노드 객체의 배열입니다. 각 노드를로드하고 확인 Event_StartTime 필드의 값을 이런 식으로 뭔가 함께 할 수

foreach ($nodes as $id => $node) { 
    $temp_node = node_load($node->nid); 
    //now check value of Event_StartTime assuming that is what you named the field 
    if ($temp_node->Event_StartTime === 'Dec 31 1969 - 8:00pm') { 
    $temp_node->Event_StartTime = 'No Date Available'; 
    } 
//output the fields of your view . . . 
} 

나는 단지 Event\_StartTime 필드의 값을 확인하는 방법을 보여, 나는 실제 값이 무엇인지 모르겠습니다. 1969 년 12 월 31 일이 time() 함수에 의해 반환 된 날짜보다 이전이므로 이것이 작동하지 않으면 Event_StartTime === ''인지 확인하는 것이 좋습니다. 이벤트 필드가 비어있는 경우 참일 수 있습니다. 나머지 필드를 테마로하여 HTML로 출력해야하므로 한 필드의 출력을 변경하는 것만 큼 힘들 수 있습니다. 개별 필드의 출력을 무시할 수도 있습니다. 나는 이것을 수행하지 않았으므로 당신을 따라갈 수는 없지만 위에서 준 링크는 필드 테마 함수를 재정의 (override)하는 것에 관한 문서를 가지고있다.

2

난 더 이상보기 1 정말 익숙하지 않은,하지만 난 당신이 적어도 두 가지 옵션이 있다고 생각 : 테마 조성 수준에서

  1. 을 - 당신은 필드 템플릿을 무시하고 특정 날짜 값에 대한 체크를 넣어 수 거기에서, 발견되면 그것을 바꾼다. 물론이 수표는 날짜의 서식에 따라 달라 지므로 변경할 경우 수표를 조정해야합니다.
  2. 뷰 생성 수준 - 코드에서 '수동으로'보기를 실행하고 인스턴스 생성 직후 및 실행 후 (렌더링 전에) 뷰 객체를 검사 할 수 있습니다 (example of manipulationg the view object in Views2 참조). 실행 후에 결과 속성을 조작 할 수도 있지만 렌더링 전에 미리 인스턴스화 한 직후에 미리 렌더링 콜백을 넣을 수도 있습니다 (그러나 이것이 Views1에서 이미 가능한지 확실하지 않습니다).