뷰에서 단일 사용자 정의 필드 값을 변경하는 방법은 무엇입니까?


11

Global : Custom Text 필드가있는 뷰가 있는데 링크로 수정되었습니다. 다른 필드의 값에 따라이 링크를 생성하기위한 대체 토큰을 변경하고 싶습니다.

hook_views_pre_render에서 이것을 수정하려고 시도했지만 이것을 수행하는 방법을 찾을 수 없습니다.

hook_views_post_render에는 두 개의 배열이 있습니다 :

$view->style_plugin->render_tokens
$view->style_plugin->row_tokens

모든 행에 대해 생성 된 링크가 포함되어 있지만 pre_render에는 존재하지 않으며 post_render에서 변경하면 작동하지 않습니다.

또한 template_preprocess_views_view_fields 에서이 작업을 시도했지만 해당 특정보기의 경우이 기능이 실행되지 않으며 (다른보기의 경우) 그 이유를 모르겠습니다.

답변:


16
function hook_views_pre_render(&$view) {

  switch ($view->name) {
    case 'YOUR_VIEW_NAME':
      //  override the global custom text field value
      $view->field['nothing']->options['alter']['text'] = 'My custom text';
    break;
  }
}

자세한 내용은 링크를 확인하십시오. 프로그래밍 방식으로 전역 사용자 정의 텍스트 필드에 값을 삽입하는 방법은 무엇입니까?

보기에서 필드로 nid를 추가하고 조건에 해당 필드를 사용하여 다음과 같이 조건을 추가 할 수 있습니다. if ($nid == '124') { $view->field['nothing']->options['alter']['text'] = $nid}

간단한 방법은 뷰를 체크인하면 field_waga_1을 새 이름으로 사용하는 field_waga 필드를 새로 작성하여 레이블을 변경하고 해당 필드를 사용자 정의 값으로 대체 할 수 있습니다.

if($view->result[0]->field_waga[0]['raw']['value'] == '10') {
//here you can create the field to act as custom text field and enter the custom //value
$view->result[0]->field_waga_1[0]['#markup'] = 'alter';
}

이 솔루션은 모든 필드를 '내 사용자 정의 텍스트'로 변경하고 선택한 필드 만 변경하고 링크를 변경하는 옵션 (필드가 링크로 표시되도록 수정 된 경우)을 볼 수 없습니다. 불행히도 나는 preprocess_views_view_fields () 함수를 사용할 수 없습니다.이 함수는 알 수없는 (나를 위해;) 이유로이 함수는이 특정 뷰에서 시작되지 않기 때문에 제공된 링크에 언급되어 있습니다.
dmk.it

다음과 같이 조건을 추가 할 수 있습니다. if ($ nid == '124') {$ view-> field [ 'nothing']-> options [ 'alter'] [ 'text'] = $ nid}
harshal

업데이트 된 답변을 확인하십시오
harshal

이런 식으로 조건을 추가했습니다 : if ($ view-> result [0]-> field_waga [0] [ 'raw'] [ 'value'] == '10') {$ view-> field [ 'nothing']- > 옵션 [ 'alter'] [ 'text'] = 'ALTER'; } 첫 번째 행에서 'nothing'필드보다 '10'값이 있으면 'ALTER'값이 있습니다. 불행히도 첫 번째뿐만 아니라 모든 행. 나는 그것이 글로벌 변경이라고 생각하며 선택한 행에 사용할 수 없습니다.
dmk.it

1
추가 필드를 다시 사용하여 이미 사용한 field_waga를 추가 한 다음 해당 필드를 사용자 정의 필드로 사용하여 사용자 정의 값을 입력하십시오
거친

0

위의 답변을 업데이트하기 위해이 작업을 수행하려면 'alter_text'를 TRUE로 설정해야합니다.

function hook_views_pre_render(&$view) {

  switch ($view->name) {
    case 'YOUR_VIEW_NAME':
    //  override the global custom text field value
    $view->field['nothing']->options['alter']['text'] = 'My custom text';
    $view->field['nothing']->options['alter']['alter_text'] = TRUE;

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