Điểm:-3

Làm cách nào để theo dõi các nút đã xem gần đây bằng JavaScript trên một trang web được lưu trong bộ nhớ cache hoàn toàn?

lá cờ in
NSp

Tôi muốn tạo một khối các nút được xem gần đây trên một trang web được lưu vào bộ nhớ đệm hoàn toàn bằng cách sử dụng mô-đun Boost (nó lưu một trang HTML tĩnh cho mọi yêu cầu trên trang web). Thay vào đó, tôi không muốn tắt tính năng Tăng tốc và lưu lại trang mỗi khi khối này được cập nhật, tôi tự hỏi liệu có thể sử dụng JavaScript ở đây hay không. Có cách nào tôi có thể làm điều này?

Kevin avatar
lá cờ in
Câu trả lời ngắn, chắc chắn? Bạn sẽ phải kết nối một tuyến trình đơn và JS với ajax để kích hoạt API thống kê nút (tôi cho rằng đây là những gì bạn đang nói đến).
NSp avatar
lá cờ in
NSp
@Kevin Tôi đang nghĩ đến cách tiếp cận chỉ dành cho khách hàng bằng cách sử dụng một số theo dõi các trang đã truy cập được lọc theo địa chỉ trang (nếu JS có cơ chế như vậy). Nhưng tôi sẽ hài lòng với bất kỳ phương pháp nào có sẵn, vì hầu như không đáng để viết nó từ đầu.
Kevin avatar
lá cờ in
Dữ liệu đó vẫn phải được lưu trữ ở đâu đó - phải không? Hay bạn đang nói chỉ sử dụng cookie hoặc HTML5 LocalStorage? Về cơ bản, đó sẽ là JS vào thời điểm đó, không có nhiều Drupal. Phần Drupal duy nhất có thể nhận được đầu ra đó trên trang, điều mà bạn có thể làm với cách viết JS dom.
Điểm:0
lá cờ in
NSp

Không phải là một mô-đun, nhưng vẫn tốt hơn là không có gì. Lưu ý rằng một số phần của tập lệnh nhận biết chủ đề.

Điều này đi đến cuối nút--[type].tpl.php:

<?php if ($page): ?>
  <script type="text/javascript">updateRecentlyVisited();</script>
<?php endif; ?>

Đây là khối mới (định dạng văn bản của khối không được thay đổi thẻ):

<script type="text/javascript">
var thisBlock = document.getElementById('[PUT BLOCK ID HERE]');
if (currentlyStored) {
  var recentlyVisited = '<ul">';
  for (var i = 0; i < currentlyStored.length; i++) {
    recentlyVisited += '<li><a href="' + currentlyStored[i][0] + '">' + currentlyStored[i][1] + '</a></li>';
  }
  recentlyVisited += '</ul>';

  thisBlock.innerHTML = recentlyVisited;
}
else
   thisBlock.remove();
</script>

Và script.js để đính kèm trong theme.info

var hiệnStored = JSON.parse(localStorage.getItem('recentlyVisited'));

cập nhật chức năng Gần đây đã truy cập () {
    var maxLinks = 20;
    var currentPage = new Array (document.URL, document.getElementsByClassName('node-title').item(0).textContent);

    nếu (hiện đang được lưu trữ)        
        for (var i = 0; i <currentStored.length; i++) {
            if (currentStored[i][0] == currentPage[0]) {
                hiệnStored.splice([i],1);
                nghỉ;
            }
        }
    khác
        hiệnStored = new Array();
    hiệnStored.unshift(currentPage);
    nếu (currentStored.length > maxLinks)
        hiệnStored.pop();
        
    localStorage.setItem('Đã truy cập gần đây', JSON.stringify(hiện đã được lưu trữ));
}

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