Làm cách nào để thay đổi giá trị trường tùy chỉnh duy nhất trong chế độ xem?


11

Tôi có chế độ xem với trường Toàn cầu: Văn bản tùy chỉnh, được sửa đổi dưới dạng liên kết. Tôi muốn thay đổi mã thông báo thay thế để tạo liên kết này, phụ thuộc vào giá trị của trường khác.

Đã cố gắng sửa đổi điều này trong hook_view_pre numnder nhưng tôi không thể tìm ra cách để làm điều này.

Trong hook_view_post_Vnder có hai mảng:

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

có chứa các liên kết được tạo cho mỗi hàng, nhưng chúng không có trong pre numnder và việc thay đổi chúng trong post_Vnder không hoạt động.

Tôi cũng đã cố gắng thực hiện điều đó trong template_pre process_view_view_fields nhưng đối với chế độ xem cụ thể đó, chức năng này không kích hoạt (đối với các chế độ xem khác thì không) và tôi không biết tại sao.

Câu trả lời:


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;
  }
}

Kiểm tra liên kết để biết thêm chi tiết Làm thế nào để chèn giá trị vào trường văn bản tùy chỉnh Toàn cầu của chế độ xem theo chương trình?

thêm nid làm trường trong chế độ xem và sử dụng trường đó cho điều kiện bạn có thể thêm điều kiện như sau: if ($nid == '124') { $view->field['nothing']->options['alter']['text'] = $nid}

Cách đơn giản là tạo trường mới_waga sẽ có trường_waga_1 làm tên mới nếu bạn kiểm tra chế độ xem và sau đó bạn có thể thay đổi nhãn và ghi đè trường đó bằng giá trị tùy chỉnh của bạn

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';
}

Giải pháp này thay đổi mọi trường thành 'Văn bản tùy chỉnh của tôi', tôi không thể thấy tùy chọn chỉ thay đổi các trường đã chọn và để thay đổi liên kết (nếu trường được sửa đổi để hiển thị dưới dạng liên kết) theo cách này. Thật không may, tôi không thể sử dụng hàm pre process_view_view_fields (), được đề cập trong liên kết mà bạn cung cấp, vì lý do không xác định (đối với tôi;)) vì chức năng này không được kích hoạt cho chế độ xem cụ thể này.
dmk.it

bạn có thể thêm điều kiện như sau: if ($ nid == '124') {$ view-> trường ['nothing'] -> tùy chọn ['thay đổi'] ['text'] = $ nid}
khắc nghiệt

kiểm tra câu trả lời được cập nhật
khắc nghiệt

Đã thêm điều kiện theo cách này: if ($ view-> result [0] -> field_waga [0] ['raw'] ['value'] == '10') {$ view-> trường ['nothing'] - > tùy chọn ['thay đổi'] ['văn bản'] = 'ALTER'; } Nếu a có giá trị '10' ở hàng đầu tiên hơn tất cả các trường 'không có gì' có giá trị 'THAY ĐỔI'. Không chỉ đầu tiên, mà tất cả các hàng, không may. Tôi nghĩ rằng đó là một thay đổi toàn cầu và nó không thể được sử dụng cho các hàng được chọn.
dmk.it

1
Không chỉ thêm một trường_waga mà bạn đã có lại bằng cách sử dụng trường thêm và sau đó sử dụng trường đó làm trường tùy chỉnh để nhập các giá trị tùy chỉnh của bạn
khắc nghiệt

0

Như một bản cập nhật cho câu trả lời ở trên, tôi đã phải đặt 'thay đổi' thành TRUE để làm việc này, ví dụ:

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;
  }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.