it-swarm-ko.tech

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

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 에서이 작업을 시도했지만 해당 특정보기의 경우이 기능이 실행되지 않으며 (다른보기의 경우) 그 이유를 모르겠습니다.

11
dmk.i-t
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';
}
16
harshal

위의 답변을 업데이트 할 때이 기능을 수행하려면 '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;
  }
}
0
Tyler Fahey