Score:-3

จะติดตามโหนดที่ดูล่าสุดโดยใช้ JavaScript บนเว็บไซต์ที่แคชไว้ทั้งหมดได้อย่างไร

ธง in
NSp

ฉันต้องการสร้างบล็อกของโหนดที่ดูล่าสุดบนเว็บไซต์ซึ่งแคชไว้อย่างสมบูรณ์โดยใช้โมดูล Boost (จะบันทึกหน้า HTML แบบคงที่สำหรับทุกคำขอบนเว็บไซต์) ฉันไม่ต้องการปิดใช้งาน Boost และแคชหน้าใหม่ทุกครั้งที่บล็อกนี้อัปเดต แต่ฉันสงสัยว่าเป็นไปได้ไหมที่จะใช้ JavaScript ที่นี่ มีวิธีใดบ้างที่ฉันสามารถทำได้

Kevin avatar
in flag
ตอบสั้นๆ แน่ใจนะ? คุณต้องเชื่อมต่อเส้นทางเมนูและ JS กับ ajax ที่เรียกใช้ API สถิติของโหนด (ฉันคิดว่านี่คือสิ่งที่คุณกำลังพูดถึง)
NSp avatar
in flag
NSp
@Kevin ฉันกำลังคิดถึงวิธีการเฉพาะลูกค้าโดยใช้การติดตามหน้าที่เยี่ยมชมซึ่งกรองตามที่อยู่ของหน้า (หาก JS มีกลไกดังกล่าว) แต่ฉันจะพอใจกับวิธีใดก็ตามที่มี เพราะมันแทบไม่คุ้มที่จะเขียนใหม่ตั้งแต่ต้น
Kevin avatar
in flag
ข้อมูลนั้นยังคงต้องเก็บไว้ที่ไหนสักแห่ง - ใช่ไหม หรือคุณกำลังบอกว่าแค่ใช้คุกกี้หรือ HTML5 LocalStorage? นั่นคือทั้งหมดจะเป็น JS ณ จุดนั้นโดยพื้นฐานแล้วไม่ใช่ Drupal มากนัก ส่วนเดียวของ Drupal อาจได้รับผลลัพธ์นั้นบนหน้า ซึ่งคุณอาจทำได้ด้วยการเขียน JS dom
Score:0
ธง in
NSp

ไม่ใช่โมดูล แต่ก็ยังดีกว่าไม่มีอะไรเลย โปรดทราบว่าบางส่วนของสคริปต์เป็นแบบทราบธีม

ไปที่ด้านล่างของโหนด--[type].tpl.php:

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

สิ่งนี้ไปยังบล็อกใหม่ (รูปแบบข้อความของบล็อกไม่ควรเปลี่ยนแท็ก):

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

และ script.js เพื่อแนบใน theme.info

varcurrentStored = JSON.parse(localStorage.getItem('recentlyVisited'));

ฟังก์ชั่น updateRecentlyVisited() {
    var maxLinks = 20;
    var currentPage = อาร์เรย์ใหม่ (document.URL, document.getElementsByClassName('node-title').item(0).textContent);

    ถ้า (ปัจจุบันจัดเก็บ)        
        สำหรับ (var i = 0; i <currentStored.length; i++) {
            ถ้า (ปัจจุบันจัดเก็บ [i] [0] == หน้าปัจจุบัน [0]) {
                currentStored.splice([i],1);
                หยุดพัก;
            }
        }
    อื่น
        ปัจจุบันจัดเก็บ = อาร์เรย์ใหม่ ();
    currentStored.unshift(หน้าปัจจุบัน);
    ถ้า (currentStored.length > maxLinks)
        ปัจจุบันจัดเก็บป๊อป ();
        
    localStorage.setItem ('recently Visited', JSON.stringify (ที่จัดเก็บอยู่ในปัจจุบัน));
}

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา