Điểm:0

Thay đổi đối tượng đoạn để hiển thị

lá cờ mx

Tôi có một loại đoạn văn với trường tham chiếu nút, nếu bạn để trống trường đó, nó sẽ hiển thị một nút ngẫu nhiên bằng cách sử dụng một số logic đã xác định.

Tôi có mã để thực hiện truy vấn và lấy nút, và lý tưởng nhất là tôi muốn đặt mã đó vào đối tượng đoạn văn trong một số hook kết xuất trước để đoạn văn có thể hiển thị bình thường bằng cách sử dụng cấu hình thông thường của nó. Một cái gì đó như thế này (cảnh báo: pseudo-codish):

function mymodule_paragraph_view($build, $paragraph, $display, $view_mode) {
  if (!is_my_paragraph_type($paragraph)) trả về;

  trả về if (!$paragraph->field_mynoderef->isEmpty());

  nút $ = getRandomNode();
  $paragraph->set('field_mynoderef', $node);
}

Điều này đang đặt giá trị chính xác, nhưng có vẻ như đã quá muộn trong quá trình kết xuất để nó ảnh hưởng đến đầu ra được kết xuất (tức là nó không thực sự hiển thị nút). Tôi cũng đã thử làm điều đó trên $build['#paragraph'] đối tượng, chứa cùng một đoạn văn, có kết quả tương tự. Làm thế nào tôi có thể làm cho công việc này?

THƯỞNG: Cách làm cho nó lưu đầu ra vào bộ đệm bằng cách sử dụng cấu hình dựa trên thời gian (ví dụ: hết hạn sau 60 giây, vì vậy cứ sau mỗi phút, nó sẽ hiển thị một nút khác và nó sẽ không chạy logic truy vấn trên mọi yêu cầu).

Điểm:0
lá cờ de

Bạn cần xây dựng nút đã tải thành một mảng có thể hiển thị và thêm nó vào xây dựng $ mảng.

nút $ = getRandomNode();

$entity_type = $node->getEntityTypeId();
$view_mode = 'đoạn giới thiệu';
$view_builder = \Drupal::entityTypeManager()->getViewBuilder($entity_type);
$storage = \Drupal::entityTypeManager()->getStorage($entity_type);
$build['field_mynoderef'] = $view_builder->view($node, $view_mode);

Câu hỏi của bạn về bộ nhớ đệm không liên quan đến vấn đề này và nên được tách thành một câu hỏi riêng. Drupal Answers là một trang web Hỏi & Đáp với định dạng một câu hỏi cho một câu trả lời và việc thêm câu trả lời cho câu hỏi đó sẽ làm loãng chủ đề này.

lá cờ mx
Nếu tôi muốn sử dụng lại cấu hình hiển thị đoạn văn thì sao? (có lẽ tôi đang yêu cầu quá nhiều, nhưng có vẻ như điều đó là có thể) Đây là lý do tại sao tôi muốn sửa đổi chính đối tượng đoạn văn đó và không chơi với các mảng kết xuất cho nút thực tế. Ý tưởng là có thể quên mã này, trong trường hợp cấu hình hiển thị đoạn thay đổi (ví dụ: chế độ xem cho nút).
lá cờ mx
Ngoài ra, hook_paragraph_view có phù hợp với điều này không? Bởi vì cũng có hook_paragraph_view_alter và tất nhiên là hook_pre process_paragraph (điều cuối cùng mà tôi nghĩ chắc chắn là quá muộn trong quy trình).
Jaypan avatar
lá cờ de
Tôi sẽ sử dụng `hook_paragraph_view_alter()` cho việc này. Và bạn nên tạo một chế độ xem mới cho màn hình này và gán các trường cho chế độ xem đó. Sau đó, sử dụng chế độ xem đó thay vì 'trêu ghẹo' và bạn sẽ không phải lo lắng về việc bất kỳ ai thay đổi hiển thị, vì chế độ này sẽ chỉ được sử dụng cho chế độ xem này.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.