Điểm:2

Tại sao cookie được lưu vào bộ đệm trong hook_prepress_node() và làm cách nào tôi có thể ngăn chặn hoặc khắc phục sự cố này?

lá cờ ng

Trong Drupal 9, chúng tôi có hook _pre process_node() tải cookie của người dùng như:

function THEME_pre process_node(&$variables) {


  tham số $ = [];
  nếu (isset($_COOKIE['utm_source'])){
    $parameters[] = 'utm_source=' . $_COOKIE['utm_source'];
    $parameters['#cache']['contexts'][] = 'cookies:utm_source';
  }
  if (isset($_COOKIE['utm_medium'])){
    $parameters[] = 'utm_medium=' . $_COOKIE['utm_medium'];
    $parameters['#cache']['contexts'][] = 'cookies:utm_medium';
  }
  if (isset($_COOKIE['utm_campaign'])){
    $parameters[] = 'utm_campaign=' . $_COOKIE['utm_campaign'];
    $parameters['#cache']['contexts'][] = 'cookie:utm_campaign';
  }
  $parameters = implode('&', $parameters);

  $variables['parameters'] = '&' . tham số $;
}

Trong mẫu Nút của tôi:

{{ thông số }}

Nhưng nó sẽ tải các cookie đã lưu trong bộ nhớ cache, thậm chí từ những khách truy cập khác cho đến khi bộ nhớ cache được xóa.

Chúng tôi đang cố gắng tải các tham số cookie vào một mẫu nút nhưng có vẻ như các hook tiền xử lý đang lưu dữ liệu vào bộ đệm ẩn. Ngay cả khi tắt tất cả các mô-đun bộ nhớ đệm.

Vì vậy, có cách nào khác để chúng tôi kiểm tra và chuyển dữ liệu cookie sang mẫu nút không?

lá cờ id
Bạn đã sử dụng bối cảnh bộ đệm nào cho nội dung được hiển thị?
quantumized avatar
lá cờ ng
Xin lỗi, tôi không chắc ý của bạn là hiển thị nội dung.Bạn có thể vui lòng chỉ cho tôi đến đúng nơi để tìm thông tin để trả lời câu hỏi của bạn không?
lá cờ id
Đây là một câu hỏi gần như giống hệt nhau: https://www.drupal.org/project/drupal/issues/2587489
quantumized avatar
lá cờ ng
Tôi đã thêm các thẻ bộ đệm nhưng nó vẫn không hoạt động đối với tôi.Tôi đã thêm mã chức năng đầy đủ vào bài đăng gốc.
lá cờ id
Tôi đã cập nhật câu trả lời của mình. Theo câu hỏi đã được trả lời, https://drupal.stackexchange.com/questions/189451/cache-in-hook-pre process-page, nơi đặt cài đặt bộ đệm.
lá cờ id
Tôi đề nghị đóng câu hỏi này dưới dạng trùng lặp.
leymannx avatar
lá cờ ne
Điều này có trả lời câu hỏi của bạn không? [Trang tiền xử lý bộ đệm trong hook](https://drupal.stackexchange.com/questions/189451/cache-in-hook-pre process-page)
quantumized avatar
lá cờ ng
@leymannx, vâng, tôi đã triển khai người đăng ký sự kiện và có thể tải đúng các giá trị cookie ngay bây giờ nhưng tôi chưa tìm ra cách chuyển các giá trị đó vào mẫu nút của mình từ người đăng ký sự kiện. Bất kỳ ý tưởng về điều này? Cảm ơn!
Điểm:4
lá cờ id

Bạn phải xem xét kết xuất bộ nhớ đệm. Trong trường hợp này, bạn phải thêm ngữ cảnh bộ đệm tham khảo cookie. Có các câu hỏi khác trong diễn đàn này với các ví dụ, và mô-đun ống lớn có cái khác:

$has_big_pipe_nojs_cookie = $request->cookies->has(BigPipeStrategy::NOJS_COOKIE);
$page['#cache']['contexts'][] = 'cookie:' . BigPipeStrategy::NOJS_COOKIE;

Bạn chưa hiển thị tất cả mã của mình, nhưng những gì tôi nghĩ bạn cần ở đây là:

$variables['#cache']['contexts'][] = 'cookie:utm_source';
sonfd avatar
lá cờ in
Bạn có thể chỉ ra một ví dụ?
lá cờ id
Tôi không biết tham số $ là gì vì chúng tôi không thấy tất cả mã của bạn.
sonfd avatar
lá cờ in
Chúng đang ở trong nút tiền xử lý, vì vậy có lẽ chúng cần thêm ngữ cảnh vào màn hình nút.

Đă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.