Pereiti prie turinio

Tikrinimas, ar žmogus dalinosi puslapiu Facebook'e.


Rekomenduojami pranešimai

Taip, įmanoma. Paprastai.

 

FB.api({
               method: 'fql.query',
               query:'SELECT share_count FROM link_stat WHERE url = "url"'
           }, function(data) {
               // do something
           });

 

iš šito gali išgaminti kažką.Arba su graph. Nu variantų milijonai :)

 

esu daręs būtent tai ko tau reik, tai frontend atrodo taip

 

http://i.imgur.com/RKn3CQO.png

Redagavo Arnas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taip, įmanoma. Paprastai.

 

FB.api({
               method: 'fql.query',
               query:'SELECT share_count FROM link_stat WHERE url = "url"'
           }, function(data) {
               // do something
           });

 

iš šito gali išgaminti kažką.Arba su graph. Nu variantų milijonai :)

 

esu daręs būtent tai ko tau reik, tai frontend atrodo taip

 

http://i.imgur.com/RKn3CQO.png

O kaip viskas atrodytų su PHP? Su like tiesiog gauni visus žmogaus palaikintus puslapius ir tikrini ar atitinka kuris nors. O su share, kiek ieškojau info, tai neradau kaip ištraukti visus sharintus postus..

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taip, įmanoma. Paprastai.

 

FB.api({
               method: 'fql.query',
               query:'SELECT share_count FROM link_stat WHERE url = "url"'
           }, function(data) {
               // do something
           });

 

iš šito gali išgaminti kažką.Arba su graph. Nu variantų milijonai :)

 

esu daręs būtent tai ko tau reik, tai frontend atrodo taip

 

http://i.imgur.com/RKn3CQO.png

 

 

 

Duodu Like už šaunų pasidalinimą.

 

Kad taip dažniau žmonės atsakytų ir pasidalintų gerais dalykais.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

PHP kodo dalis neturi reikšmės, pasidaręs pagal save. Gali realiai ir su jquery tuo pačiu dasibaigti, tiesiog man geriau kreiptis į scriptą (kur aš naudoju) ir atrodo taip:

 

public function checkShareCount(){
       $data = array(
           'postShares' => $this->input->post('shares'),
           'fb_graph' => json_decode(file_get_contents('http://graph.facebook.com/'. $this->input->post('url')), true)
       );

       if ( !$data['fb_graph']['shares'] ){
           echo json_encode(array('parse' => 0));
       } else {
           if ( $data['fb_graph']['shares'] > $data['postShares'] ){
               echo json_encode(array('parse' => 1));
           } else {
               echo json_encode(array('parse' => 0));
           }
       }
   }

 

O kaip viskas atrodytų su PHP? Su like tiesiog gauni visus žmogaus palaikintus puslapius ir tikrini ar atitinka kuris nors. O su share, kiek ieškojau info, tai neradau kaip ištraukti visus sharintus postus..

neatsakysiu tiksliai, nes nežinau ko tau reik. Tai, ką aš daviau veikia labai paprastai. Žmogus atėjęs į svetainę raginamas pasharinti postą, kad atrakintų contentą. Vos tik paspaudžia "share" mygtuką pradedamas tikrinimo ciklas, kuris iškart po paspaudimo išgauna to puslapio, kurį reik sharinti share'ų skaičių. Tuomet suka ciklą ir tikrina ar tas skaičius paaugo. Jeigu paaugo, atrakina contentą, jei ne, laukia toliau. Šiaip niekas nemėgsta tokių dalykų, iš jų naudos kaip ir nematau, tiesiog buvo užsakymas, kurį teko padaryti, pats tokių priemonių nenaudoju.

 

ech, kadangi jau įmečiau ir taip beveik viską ko reik, tai pasidalinsiu visu scriptu. "prijomas" dar toks, kad veikia countdown, kuris "atrakina" contentą praėjus laikui (arba atsirakina kai pasharini)..

 

<script>
   FB.init({
       appId  : 'appID',
       status : true,
       cookie : true,
       xfbml  : true
   });
</script>
<script>
   jQuery(document).on('ready', function () {
       var currentPageCookieName = 'fb_cookie_<?= current_url() ?>';
       if ( ! jQuery.cookie(currentPageCookieName) ){
           jQuery('#fb-popup-box').lightbox_me({
               centered: true,
               overlayCSS: {
                   background: 'black',
                   opacity: .8
               },
               destroyOnClose: true,
               closeClick: false,
               closeEsc: false,
               closeSelector: '.close_fb_pop',
               onLoad: function () {
                   jQuery('#countdown_timer').countdown({
                       date: +(new Date) + (<?= FB_POP_COUNTDOWN_TIMER ?> * 1000),
                       render: function (data) {
                           jQuery(this.el).text(this.leadingZeros(data.sec, 1));
                       }, onEnd: function () {
                           jQuery('.close_fb_pop').click();
                           fbBoxClose = true;
                       }
                   });
               }
           });

           jQuery.cookie(currentPageCookieName, '1', 86400);
       }

       jQuery('.share').on('click', function() {
           FB.api({
               method: 'fql.query',
               query:'SELECT share_count FROM link_stat WHERE url = "<?= current_url() ?>"'
           }, function(data) {
               jQuery.cookie('fb_share_count', data[0].share_count, 3600);
           });

           // starting cycle to check fb shares count
           checkFbShares();
       });

       var fbBoxClose = false;
       function checkFbShares(){
           if ( fbBoxClose == false ){
               jQuery.ajax({
                   url: '<?= base_url('ajax_actions/checkShareCount') ?>',
                   type: 'POST',
                   dataType: 'JSON',
                   data: {
                       shares: jQuery.cookie('fb_share_count'),
                       url: '<?= current_url() ?>',
                       safety_test: jQuery.cookie('CookieForSafety')
                   },
                   success: function (data) {
                       if(data.parse == '1'){
                           // ending check cycle
                           fbBoxClose = true;
                           // closing box
                           jQuery('.close_fb_pop').click();
                       }
                   }, error: function (e) {
                       console.log(e.message);
                   }
               });

               setTimeout(checkFbShares, 1000);
           }
       }
   });
</script>
<!-- /FB Box style -->

<!-- FB Box -->

<div style="display: none" id="fb-popup-box">
   <a class="close_fb_pop" style="display: none"></a>
   <h1>Dėmesio!</h1>

   <p data-fb-details="share_text">
       <strong>Norėdami pamatyti naujieną, privalote pasidalinti!</strong><br/>
       Arba jeigu nenorite dalintis, palaukite <em id="countdown_timer"><?= FB_POP_COUNTDOWN_TIMER ?></em> sekundžių.
   </p>

   <p>
       <a class="share"
          onclick="window.open('https://www.facebook.com/sharer/sharer.php?u=<?= current_url() ?>',null,'height=400,width=600,status=yes,toolbar=no,menubar=no,location=no');"></a>
   </p>
</div>
<!-- /FB Box -->

 

apie countdown pluginą info čia: https://github.com/rendro/countdown/

Redagavo Arnas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tokia pagalba stebina tikrąja ta žodžio prasme... Mažai kas dalintūsi tokiais kodais.. Ačiū tau!

Mano principas turėtų būti kitoks, aš tiesiog noriu, kad paspaudus tam tikrą mygtuką puslapyje įvyktų tikrinimas ar žmogus dalinosi. Todėl ir suabejojau labai, ar tai yra logiškai įmanoma. Su like aš galiu išgauti kiekvieną laikintą puslapį po vieną, o čia kaip suprantu yra galimybė tikrinti tik per share count'ą, kas betkokiu atveju neduoda normalios galimybės tiksliai ir lengvai patikrinti to.

 

Aš galvojau, ar įmanomas toks principas kaip ir su like:

$getPages = (new FacebookRequest(
$sess,
'GET',
'/me/likes?limit=10000'
))->execute()->getGraphObject()->asArray();
$liked = false;
foreach ($getPages['data'] as $key) {
if($key->name == FB_PAGE) {
	$liked = true;
	break;
}
}

 

Ieškojau tikrai daug informacijos Google ir naršiau pačio FB developer'ių puslapyje, tačiau neradau nieko, kas būtent padėtų tiksliai tai padaryti, todėl priėjau prie minties, kad galbūt tai yra neįmanoma. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...