Cum sa-ti fortezi vizitatorii sa faca Like, Tweet, Google+

Am cautat zilele astea cum sa sa fortezi  vizitatorii sitului, ori unei anume pagini sa faca Like paginii respective si am gasit o multime de plugin-uri pentru Wordpress care fac acest lucru. Cam toate functioneaza pe acelasi principiu: continutul paginii este blocat, incomplet sau ascuns, iar pentru a afisa toata pagina vizitatorul este 'rugat' insistent sa voteze pagina; adica sa faca click pe LIKE, TWEET sau GOOGLE+.
Facebook LIKE
Facebook LIKE
Insa nu prea am gasit mare lucru pentru siturile care nu ruleaza pe Wordpress. Problema este ca aceste extensii Wordpress se foloseau si de fisierele Wordpress-ului pentru a incarca continutul incomplet sau ascuns in ajax. Alta problema este ca aceste plugin-uri nu sunt gratuite. Din fericire majoritatea acestor situri care vand extensiile platite ofera si demo-uri online si la o scanare a sursei paginii se poate copia/modifica codul lor. Am scanat asadar sursele lor si am combinat cateva dintre aceste plugin-uri a.i. sa poata fi folosite pe orice sit, fara a fi nevoie de Wordpress.
Scriptul meu functioneaza tot in acelasi fel. Pentru a fi cat mai simplu am ales sa ascund continutul interesant, continutul pentru care vizitatorii ar face click pe LIKE pentru a-l vedea, folosing CSS:

<style type="text/css">
div.post-body img{display:none}
</style>
Asadar, codul CSS de mai sus ascunde, sau mai bine zis nu afiseaza (display:none) imaginile (img) din elementele div din clasa post-body. Mai departe, trebuie sa spun din timp ca JavaScript-ul meu foloseste jQuery. va trebui sa-l integrati in codul paginii si recomand sa-l introduceti inainte de </head>
<script src='//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js' type='text/javascript'></script>
In continuare, spre deosebire de altele, acest script permite vizitatorilor sa deblocheze continutul unei pagini facand un click pe Like (Facebook), postand un post pe Twitter (Tweet) sau pe Google+ (G+). Asta va spori popularitatea sitului dvs pe toate aceste 3 retele sociale. Iar daca, din intamplare, vreunul dintre vizitatori nu are cont pe nici una dintre aceste 3 retele, el va putea vizita o pagina anume, sa-i spunem pagina sponsorilor, unde va primi acces automat cu ajutorul unui cookie. Pentru a scrie acest cookie folositi urmatorul script:

<script type='text/javascript'>jQuery.cookie = function (key, value, options) {
    if (arguments.length > 1 && String(value) !== "[object Object]") {
        options = jQuery.extend({}, options);
        if (value === null || value === undefined) {
            options.expires = -1;
        }
        if (typeof options.expires === 'number') {
            var days = options.expires, t = options.expires = new Date();
            t.setDate(t.getDate() + days);
        }
        value = String(value);
        return (document.cookie = [
            encodeURIComponent(key), '=',
            options.raw ? value : encodeURIComponent(value),
            options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
            options.path ? '; path=' + options.path : '',
            options.domain ? '; domain=' + options.domain : '',
            options.secure ? '; secure' : ''
        ].join(''));
    }
    // key and possibly options given, get cookie...
    options = value || {};
    var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;
    return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;
};
</script>
 Adaugati acest cod dupa jQuery. Pentru a nu avea probleme cu executia in nici unul dintre browsere, inserati scripturile siturilor sociale in mod sincron si nu asincron (async),in felul urmator:

<div id="fb-root"></div>
<script type='text/javascript' src='//apis.google.com/js/plusone.js'></script>
<script type='text/javascript' src='//platform.twitter.com/widgets.js'></script>
<script type='text/javascript' src='//connect.facebook.net/en_GB/all.js#xfbml=1'></script>
Mai sus am inserat si div-ul fb-root care vine odata cu scriptul Facebook. In continuare scriptul propriu-zis:

<script type="text/javascript">
var virallocker_use = false;
function virallocker_plusone(plusone) {
if (plusone.state == "on") {
var data = {post: "1", action: "virallocker", network: "google"};
jQuery.cookie('visitor_cooke_ASDFG', '1', { expires: 365, path: '/', domain: 'www.id.atat.ro'});
jQuery('div.post-body img').show('slow');
jQuery('div.post-body img').css("display","block");
jQuery('#virallock-box').css("display","none");
jQuery('#virallock-box').css("visibility","hidden");
jQuery('#virallock-box').hide();
}
}
FB.init();
jQuery(document).ready(function() {
FB.Event.subscribe("edge.create", function(href, widget) {
var data = {post: "1", action: "virallocker", network: "facebook"};
jQuery.cookie('visitor_cooke_ASDFG', '1', { expires: 365, path: '/', domain: 'www.id.atat.ro'});
jQuery('div.post-body img').show('slow');
jQuery('div.post-body img').css("display","block");
jQuery('#virallock-box').css("display","none");
jQuery('#virallock-box').css("visibility","hidden");
jQuery('#virallock-box').hide();
});
twttr.ready(function (twttr) {
twttr.events.bind("tweet", function(event) {
var data = {post: "1", action: "virallocker", network: "twitter"};
jQuery.cookie('visitor_cooke_ASDFG', '1', { expires: 365, path: '/', domain: 'www.id.atat.ro'});
jQuery('div.post-body img').show('slow');
jQuery('div.post-body img').css("display","block");
jQuery('#virallock-box').css("display","none");
jQuery('#virallock-box').css("visibility","hidden");
jQuery('#virallock-box').hide();
});
});
});
</script>
Va trebui sa modificati linia:
jQuery.cookie('visitor_cooke_ASDFG', '1', { expires: 365, path: '/', domain: 'www.id.atat.ro'});
si sa alegeti un alt nume (recomandat) pentru cookie, in locul  visitor_cooke_ASDFG. Deasemenea, 365 este numarul de zile pentru care acest cookie va exista - ganditi-va ca vizitatorii sitului vor avea acces la continutul ascuns timp de 365 de zile... daca nu-si curata intre timp cache-ul browser-ului. Apoi schimbati numele domeniului (www.id.atat.ro) cu cel unde veti insera codul.
Imediat dupa acest cod introduceti urmatoarele 3, care au rolul de a verifica existenta cookie-ului si de a ascunde sau afisa continutul (imaginea din div.post-body), precum si elementul div ce va afisa butoanele siturilor sociale:

<script type="text/javascript">
jQuery(document).ready(function() {
if(jQuery.cookie('visitor_cooke_ASDFG')!=1){
virallocker_use = true;
jQuery('#virallock-box').css("z-index","99999999");
jQuery('#virallock-box').css("display","block");
}});</script>
<script type="text/javascript">
jQuery(document).ready(function() {
if(jQuery.cookie('visitor_cooke_ASDFG')==1){
virallocker_use = false;
jQuery('div.post-body img').css("display","block");
jQuery('#virallock-box').css("display","none");
jQuery('#virallock-box').css("visibility","hidden");
jQuery('#virallock-box').hide();
}});</script>
<div class="virallock-box" id="virallock-box"><div style="width:250px;float:left;height:110px;font-size:0.9em;color:#000">Doua posibilitati de a afisa pozele id-urilor<ul><li style="border-top: dashed 1px rgba(128, 128, 128, .5)">1. Faceti un click pe butoanele din dreapta: LIKE, GOOGLE+, TWEET</li><li style="border-top: dashed 1px rgba(128, 128, 128, .5)">2. <a rel="nofollow" href="http://www.id.atat.ro/p/adauga-un-id.html" title="Inregistrare id"><span style="color:blue">Inregistati-va id</span></a>-ul pe sit</li></ul><span style="font-size:0.8em;"><em>Casuta aceasta va disparea dupa efectuarea uneia dintre operatiile descrise mai sus</em></span></div><div style="width:250px;overflow:hidden;height:110px;"><div><a href="https://twitter.com/share" class="twitter-share-button" data-url="http://www.id.atat.ro/" data-text="Cel mai mare sit romanesc de id-uri de mess, baieti si fete:" data-count="horizontal" data-lang="en" data-via="www_id_atat_ro" data-related="www_id_atat_ro" data-hashtags="atat.ro">Tweet</a></div><div><g:plusone size="medium" annotation="inline" callback="virallocker_plusone" href="http://www.id.atat.ro"></g:plusone></div><div><fb:like id="fbLikeButton" href="http://www.id.atat.ro" show_faces="false" width="230"></fb:like></div></div></div><script type="text/javascript">
FB.XFBML.parse();
</script>
Scriptul va ascunde si acest div, cu butoanele sociale, dupa scrierea cookie-ului... care, reamintesc, se face dupa click pe oricare dintre butoane sau, in exemplul de mai sus, atunci cand cineva viziteaza pagina  http://www.id.atat.ro/p/adauga-un-id.html. Practic mesajul care indeamna vizitatorii sa se inregistreze este eronat deoarece imediat ce pagina se deschide imaginile ascunse vor fi afisate, deci nu este necesara nici o inregistrare ;) Acest lucru este posibil de catre codul inserat pe pagina http://www.id.atat.ro/p/adauga-un-id.html si care arata cam asa:

<script type="text/javascript">
jQuery(document).ready(function() {
jQuery.cookie('visitor_cooke_ASDFG', '1', { expires: 365, path: '/', domain: 'www.id.atat.ro'});
});
</script>

In concluzie, pentru a debloca imaginile de pe situl de id-uri de mess vizitatorii vor avea 2 optiuni:

  1. sa faca click pe oricare dintre butoanele siturilor sociale din div-ul virallock-box sau
  2. sa viziteze pagina de inregistrare
... iar scriptul functioneaza scriind un cookie cu valoarea 1 (visitor_cooke_ASDFG) ori de cate ori cineva efectueaza oricare din operatiile de mai sus si apoi verificand existenta acestui cookie. Daca exista deja in calculatorul vizitatorului, imaginile de pe sit vor fi afisate; daca nu, ele vor fi ascunse. Bineinteles, oricine poate accesa sursa pagini si gasi link-urile imaginilor sau continutul ascuns.
Scriptul meu este bineinteles gratuit si il puteti folosi cum vreti si unde vreti (Blogger etc)
Atentie, nu apare pe prima pagina. Vizitati oricare alta pagina pentru a vedea cum functioneaza. Daca nu intelegeti ceva cautati in sursa paginilor sitului id.atat.ro.