Mam model Entry z m.in. z polem url , w widoku generuję linki z tym url i chciałbym w modelu dodać pole click_count i zwiększać je przy kliknięciu w link. Jak do tego się zabrać gdy link prowadzi do strony poza naszą aplikację?
ps. po pewnej liczbie postów można by na forum wyłączyć to zabezpieczenie spambotowe z pytaniem o dzień tygodnia.
Popatrz na gotowe narzędzia, na pewno coś jest (może nawet w Google Analytics) co śledzi to. Na poziomie JavaScriptu musi być to raczej zrobione, redirect będzie co prawda działał OK, albe będzie upierdliwy i nie SEO-friendly, ogólnie dość niegrzeczna rzecz do zrobienia
Zrobiłem to w miarę prosto (pewnie zacznie się komplikować jak będę chciał unikalne klinięcia itd.)
Stworzyłem model Event (user_id, subject_id, action, date) i po after_save zwiększenie licznika w odpowiednim Entry.
I dałem taki kod w javascripcie:
$('.entry-title a.entry-url').click(function() {
var entry_id = $(this).data('entry-id');
$.ajax({
type: "POST",
url: "/events",
data: {entry_id: entry_id},
});
});
Jak na razie zlicza mi ładnie kliknięcia.
Ja bym tu jeszcze dodał pomijanie zliczania gdy navigator.userAgent ma ciag Googlebot itp. O ile roboty wywołują akcje javascript, tego nie wiem i sam chętnie sie dowiem.
Przetestuj to na czymś “dalszym” od Twojej przeglądarki niż localhost. Może się okazać że przeglądarka zarzuci żądanie ajaxowe kiedy już będzie pewna że chce zmienić window.location.