Puncte:-3

Cum să urmăriți nodurile vizualizate recent folosind JavaScript pe un site web complet în cache?

drapel in
NSp

Vreau să fac un bloc de noduri vizualizate recent pe un site web care este complet în cache folosind modulul Boost (salvează o pagină HTML statică pentru fiecare solicitare de pe site). Nu vreau să dezactivez Boost și cache o pagină de fiecare dată când acest bloc s-a actualizat, în schimb, mă întreb dacă este posibil să utilizez JavaScript aici. Există vreo modalitate prin care pot face asta?

Kevin avatar
drapel in
Răspuns scurt, sigur? Ar trebui să conectați o rută de meniu și JS cu ajax care declanșează API-ul statistici nodului (presupun că despre asta vorbiți).
NSp avatar
drapel in
NSp
@Kevin Mă gândeam la o abordare exclusiv pentru client, folosind o urmărire a paginilor vizitate care sunt filtrate după adresa paginii (dacă JS are un astfel de mecanic). Dar voi fi mulțumit de orice metodă disponibilă, deoarece abia merită să o scriu de la zero.
Kevin avatar
drapel in
Aceste date trebuie încă stocate undeva - nu? Sau vrei să spui că folosești cookie-uri sau HTML5 LocalStorage? Toate acestea ar fi JS la acel moment, practic, nu prea mult Drupal. Singura parte Drupal ar putea fi obținerea acelei rezultate pe pagină, ceea ce poate oricum ați putea face cu scrierea JS dom.
Puncte:0
drapel in
NSp

Nu este un modul, dar mai bine decât nimic. Rețineți că unele părți ale scenariului sunt conștiente de temă.

Aceasta merge în partea de jos a nodului--[type].tpl.php:

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

Acest lucru pentru noul bloc (formatul de text al blocului nu ar trebui să schimbe etichetele):

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

Și script.js de atașat în theme.info

var currentStored = JSON.parse(localStorage.getItem('recentlyVisited'));

function updateRecentlyVisited() {
    var maxLinks = 20;
    var currentPage = new Array (document.URL, document.getElementsByClassName('node-title').item(0).textContent);

    dacă (în prezent)        
        pentru (var i = 0; i < în prezentStored.length; i++) {
            if (actuallyStored[i][0] == currentPage[0]) {
                currentStored.splice([i],1);
                pauză;
            }
        }
    altfel
        în prezentStored = nou Array();
    currentStored.unshift(currentPage);
    dacă (currentlyStored.length > maxLinks)
        momentanStored.pop();
        
    localStorage.setItem('recentlyVisited', JSON.stringify(currentlyStored));
}

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.