Ir para conteúdo
  • 0
Jack Oliveira

Contador de Click ao fazer o compartilhamento nas rede social

Pergunta

Boa noite @Omar~  

 

Preciso de um auxilio sua se assim for possível

 

Preciso criar um contador de compartilhamento nas rede social

 

de quantas vezes foi feito o compartilhamento

 

Tenho as seguinte tabela

cliente

id

nome

email

senha

nivel

permissao

status

 

Tabela

catalogo

id

titulo

id_user

etc.....

 

Tabela

listagem

id

id_user

id_categoria

id_destaque

etc.....

 

 

Sei que terei que criar uma tabela para o compartilhamento

 

minha questão aqui seria como poderei fazer esta contagem quando for clicado nos link quando fazem o shared?

 

Exemplo de alguns links:

<p><a class="label label-primary" href="http://www.facebook.com/sharer.php?u=<?php echo ConfigPainel('site_url'); ?>catalogo/<?php echo $dados['slug']; ?>/" target="_blank"><i class="fa fa-facebook" style="color:#fff;"></i><font color="#fff"> Shared Facebook</font></a>
&nbsp;
&nbsp;
&nbsp;
 <a  class="label label-success" href="https://api.whatsapp.com/send?text=*<?php echo trim(ucwords(mb_strtolower($dados['titulo'], 'UTF-8'))); ?>* <?php echo ConfigPainel('site_url'); ?>catalogo/<?php echo $dados['slug']; ?>/" target="_blank"><i class="fa fa-whatsapp" style="color:#fff;"></i><font color="#fff"> Shared WhatsApp</font></a></p>
	

Uso um código de contagem de visitas, porém seja simples

mais ele faz a contagem conforme atualiza a pagina

 

porém já para o que preciso não daria de usa-lo

 segue o código

 


//Usando o MYSQLI direto para contagem
$Query = "Select * FROM catalogo WHERE id = '{$Catalogo['id']}'";
$exe = mysqli_query(DBConnect(), $Query);

$resultado = (mysqli_fetch_array($exe));
$visitas = $resultado['visitas'];


$altera = "UPDATE catalogo SET visitas = visitas+1 WHERE id = '{$Catalogo['id']}'";
$exe = mysqli_query(DBConnect(), $altera);


$exe = mysqli_query(DBConnect(), $Query);
$total = (mysqli_fetch_array($exe));
$visitas = $total['visitas'];

// Dinifir ECHO pra teste --> echo "Visitas: $visitas";
	

 

Se for possível ele só fazer a contagem se realmente o link ter sido publicado na rede social

 

se não apenas contar quando for feito o click já ajudaria....

 

 

Sobre o contador de visita logo acima

se ter como ele contar quando for aberto a página se a pessoa ficar atualizado ele não contar só quando for aberto ou seja seria o mesmo feito do shared, só quando clicar no link para abrir a pagina

 

Espero que tenho sindo bem objetivo na minha pergunta kkk

 

Desde já fico grato pela ajuda que der...

 

 

 

       

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 respostas a esta questão

Recommended Posts

  • 0

Eu nunca fiz isso, mas de uma coisa é certa.

Se você que somente a contagem se foi publicado o compartilhamento como no facebook por exemplo, você teria que obter algum retorno da plataforma, e de fato não sei se o facebook fornece esse tipo de serviço.

 

Então aqui eu vou supor que clicou em compartilhar já registro que foi compartilhado.

Podemos usar a tabela catalogo para verificar se o usuário já fez esse compartilhamento, desde que adicionemos mais uma coluna para isso, e é até prático pois podemos até saber o que cada usuário compartilhou.

 

A ideia que pensei é executar um ajax em um arquivo, esse arquivo verifica se o usuário já compartilhou, caso não ele registra que foi compartilhado, então acionamos um script que irá abrir uma nova aba e redirecionar para.

Obs.: Usei meu script para executar ajax: https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest

 

<a
    data-site="<?= ConfigPainel('site_url') ?>"
    data-slug="<?= $dados['slug'] ?>"
    class="compartilhar"
    >
    Shared Facebook
</a>

<div id="compartilhamento"></div> <!-- Usando esse elemento para gerenciar conteúdo -->

<script>
    document.querySelectorAll('.compartilhar').forEach(definirEvento);

    function definirEvento(e) {
        e.addEventListener('click', compartilharLink, false);
    }

    function compartilharLink(e) {
        var link = e.target;
        compartilharLink.prototype = new AjaxRequest();
        compartilharLink.prototype.open('compartilhamento', 'arquivo.php?site=' + link.dataset.site + '&slug=' + link.dataset.slug);
    }
</script>

Simples, temos o link de compartilhamento, mas quando clicado aciona a função que obtem os dados de compartilhamento dos atributos "data", assim sendo carregando um arquivo e enviado esses valores por GET.

 

Então no arquivos que carrega:

<?php
$usuario = "?????";
$query = "SELECT item, id_user FROM catalogo WHERE item='{$_GET['slug']}' AND id_user='{$usuario}'";

// <<<< execute então a query

if (!$resultado_do_banco) {
    /* Não tem o registro do usuário junto ao registro de compartilhamento
     * Assim sendo aqui registramos que o compartilhamento disso
     * E fazemos o updade conforme você está fazendo
     */
    ?>
    <script>
        window.open('http://www.facebook.com/sharer.php?u=<?= $_GET['site'] ?>catalogo/<?= $_GET['slug']; ?>', '_blank');
    </script>
    <?php
}

Na suposta nova coluna "item" armazeno o valor slug, então comparando o id do usuário mais isso podemos saber se ele já compartilhou determinada coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0

Você precisa criar um aplicativo facebook (nesse você tem controle), já para o whatsapp fica mais complicado, pois segundo a empresa, eles usam o esquema P2P um envia a mensagem pro outro e ninguém fica no meio, sem possibilidade de contagem (fora que a API só saiu pra grandes empresas). O bom é você fazer a contagem de dentro do seu site.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.