Pergunta

Tenho um site Joomla que estou desenvolvendo e sou novato no que diz respeito a MySql.Preciso ser capaz de rastrear quantos artigos um usuário visualizou e, em seguida, exibir o número total de artigos visualizados no front end da página (por exemplo, se o usuário visualizou 3 artigos, deve apenas ecoar o valor '3' para o front-end).

Também gostaria de poder armazenar o ID e o alias do artigo e recuperar esses dados posteriormente, se necessário.A ideia é que qualquer usuário específico possa ver quantos artigos visualizou e possivelmente até mesmo voltar e revisar esses artigos (pois eles não serão mais exibidos depois de visualizados).

Não tenho a menor ideia de por onde começar a construir a tabela para armazenar esses dados e como associá-la ao usuário atual.Qualquer ajuda seria muito apreciada, mesmo que seja apenas indicando um bom tutorial ou recurso.

Foi útil?

Solução

Existem três abordagens, acredito:

Armazene todos os IDs de artigos visualizados em uma nova coluna na tabela do usuário
Você pode adicionar uma coluna à sua tabela de usuários para armazenar os artigos visualizados.Você pode armazenar os IDs dos artigos como valores separados por vírgula.Cada vez que um novo artigo é visualizado, você pode anexar um novo ID de artigo.No front-end, você pode recuperar essa string com uma instrução select e analisá-la para obter os IDs individuais.

Este método pode não ser prático com um CMS como o Joomla, pois adicionar colunas às tabelas do sistema pode causar problemas.

Nova tabela com uma linha por usuário
Você cria uma nova tabela de duas colunas, uma coluna contém o ID do usuário e a outra contém a lista separada por vírgulas de artigos visualizados.Haveria um relacionamento 1-0 entre a tabela de usuários existente e a nova tabela.

Uma simples junção permitirá que você recupere os artigos visualizados associados ao usuário associado.

Nova tabela com combinação de uma linha por usuário/artigo
Você cria uma nova tabela de histórico de duas colunas que armazena o usuário e um único ID de artigo visualizado.Se um usuário visualizou dez artigos, haverá dez linhas.

Recuperar os artigos visualizados para um determinado usuário dá algum trabalho, pois você precisa extrair todas as linhas desse usuário e iterá-las.

Editar - Código de amostra:

<?php
$config['db'] = array (
    'host' => '',
    'username' => '',
    'password' => '',
    'dbname'    => ''
);

$db = new PDO('mysql:host=' . $config['db']['host'] . ';dbname='.$config['db']['dbname'],$config['db']['username'],$config['db']['password']);

$query = $db->query("SELECT user_id, article_id FROM viewed_articles WHERE user_id = 1234");

$rows = $query->fetchAll(PDO::FETCH_ASSOC);

echo '<pre>',print_r($rows,true),'</pre>';

?>

Você colocaria seu banco de dados MySQL e credenciais na matriz $config.

Outras dicas

Uma boa abordagem é usar um módulo para mostrar os dados e um plugin para armazená-los.

Para rastrear os artigos visualizados por um usuário, comece com o Documentação Joomla para desenvolvimento de plugins. e procure por plug-ins de conteúdo.Este plugin deve armazenar, pelo menos, o identificador do usuário e o identificador do artigo em uma tabela (chame-o articleviews) criado especialmente para este plugin.

Para construir um módulo, verifique o Desenvolvimento de módulo Joomla.Neste módulo você carregará os dados armazenados com o plugin do articleviews mesa.Lembre-se de indexar a tabela pelo identificador do usuário, caso contrário, isso matará sua resposta da web à medida que os dados aumentam.

EDITAR:o identificador do artigo também deve fazer parte do índice.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top