Showing posts with label ajax. Show all posts
Showing posts with label ajax. Show all posts

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.



Cum se incarci paginile sitului partial, cu jQuery

Ajax & jQuery
Ajax & jQuery
Am gasit codul asta pe unul din siturile mai vechi, pe care nu-l mai folosesc de mult timp. L-am testat si, deoarece inca mai functioneaza, m-am gandit ca e bine sa-l public aici, pentru webmasterii care, eventual, vor dori sa-l foloseasca. Inainte de toate, ce face acest cod? ... probabil veti intreba. Ei bine (folosit corect) va incarca, la un click pe un oarecare link de pe pagina ce-l contine, continutul unui anumit element din pagina link-ului pe care ati facut click, INSA in pagina deja deschisa, fara a reincarca deci toata pagina. Este util deoarece va spori viteza de navigare a vizitatorilor sitului si deasemenea va salva banda alocata contului de gazduire web al sitului respectiv.
Voi explica pas cu pas, pentru o mai buna intelegere:

  • se dau doua pagini web ale ACELUIASI sit, pagina1.html si respectiv pagina2.html
  • pagina1.html contine un link catre a doua pagina, pagina2.html
  • ambele pagini contin un DIV sau orice alt element (span, table etc) cu ID-ul ajax-jquery (vezi codul), ce contine, de exemplu, 111111 in prima pagina si 222222 in cea de-a doua
  • Adaugati scriptul jquery (gazduit de Google, pentru a salva banda, sau de jquery.com) si codul de mai jos in head-ul paginilor si....
  • de fiecare data cand veti page click pe link-ul catre pagina2.html (de pe pagina1.html), in DIV-ul ajax-jquery se va incarca continutul aceluiasi DIV de pe pagina2.html - mai exact, in locul lui 111111 va aparea 222222 fara a se fi incarcat toata pagina
Codul trebuie introdus inainte de head. Menu-linkuri este id-ul div-ului ce contine link-ul catre pagina2.html.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js?ver=1.8.0" type="text/javascript"></script>
<script charset="utf-8" type="text/javascript">
jQuery(document).ready(function(){
jQuery('#menu-linkuri a').live('click', function(e){
e.preventDefault();
var link = jQuery(this).attr('href');
jQuery('#ajax-jquery').html('');
jQuery('#ajax-jquery').load(link+' #ajax-jquery');

});
});
</script>
© all rights reserved
made with by templateszoo