banner de estatísticas

:discourse2: Resumo Stat Banner exibe uma lista de estatísticas do site na sua página inicial
:eyeglasses: Pré-visualização Pré-visualizar no Criador de Temas do Discourse
:hammer_and_wrench: Repositório https://github.com/discourse/discourse-stat-banner
:open_book: Novo em Temas do Discourse? Guia para iniciantes no uso de Temas do Discourse

Instalar este componente de tema

Recursos

Você pode criar qualquer número de estatísticas para exibir, as estatísticas são preenchidas pela página /about, e você pode escolher entre:

  • tópicos
  • posts
  • usuários ativos
  • usuários
  • curtidas
  • mensagens de chat
  • canais de chat
  • usuários de chat

e estes podem ser definidos individualmente a partir de um dos 3 períodos de tempo:

  • 1 dia
  • 7 dias
  • 30 dias

Além da origem e do período, você também pode configurar:

  • título
  • link (opcional)
  • valor_manual (opcional, substitui o valor automático)

Configurações

Nome Descrição
exibir estatísticas
título do banner
mostrar em
cor de fundo Variável de cor do Discourse ou valor hexadecimal
cor do texto Variável de cor do Discourse ou valor hexadecimal
largura mínima da coluna
ocultar no celular
saída de plugin Saída de plugin em que este componente aparece. Tente above-main-container ou below-site-header, você pode encontrar mais saídas com o componente de tema de locais de saída de plugin
desativar cache As estatísticas do banner serão atualizadas toda vez que o banner estiver visível. Observe que isso pode criar um pouco de carga adicional no servidor.

:discourse2: Hospedado por nós? Componentes de tema estão disponíveis para uso em nossos planos Standard, Business e Enterprise.

27 curtidas

O iPhone SE não obedece a ocultar em dispositivos móveis.

Editar: parece que nenhum dispositivo móvel segue essa configuração e o banner está sempre visível.

3 curtidas

E um pequeno pedido de UX/UI — os links devem parecer links.

3 curtidas

Obrigado pelo rápido feedback @Jagster! Acabei de atualizar para corrigir esses problemas

3 curtidas

Olá, @awesomerobot,

Muito obrigado por este Componente de Tema; eu definitivamente o adquiri.

Tenho uma pergunta para você, se não se importar, pois estou um pouco confuso. Eu entendo os ‘Usuários Ativos’ pois é autoexplicativo, no entanto, o que os ‘Usuários’ cobrem?

Boa pergunta!

Usuários ativos são usuários vistos no período de tempo de 1/7/30 dias (eles visitaram o site logados).

Usuários é o número de novas contas criadas no período de tempo de 1/7/30 dias.

2 curtidas

Bom dia, @awesomerobot,

Passei algum tempo refletindo sobre este componente de tema e, com base na sua resposta sobre ‘Usuários’ e ‘Usuários Ativos’, não parece que a informação foi atualizada recentemente. Também pareço ter dois valores diferentes para essas métricas.

Aqui estão minhas estatísticas no desktop:

E no mobile:

Embora a diferença não seja substancial, não consigo descobrir de onde essas estatísticas estão sendo extraídas.

Tentei implementar um Refresh HTML Code para as Estatísticas assim:

<script>
  setInterval(function() {
    location.reload();
  }, 60000); // Atualiza a cada 1 minuto (60000 milissegundos)
</script>

Nota: O código recarregará a página a cada 1 minuto (60000 milissegundos). Você pode ajustar o intervalo conforme suas necessidades.

No entanto, não tenho certeza se isso pode ser adicionado ao editor de configurações.

Qualquer ajuda seria muito apreciada.

1 curtida

Atualização:

Cheguei à conclusão de que deveria ficar assim?

[
	{
		"setting": "display_stats",
		"value": "[{\"source\":\"posts\",\"period\":\"30_days\",\"title\":\"Posts\",\"link\":\"\",\"manual_value\":\"\"},{\"source\":\"likes\",\"period\":\"30_days\",\"title\":\"Likes\",\"link\":\"\",\"manual_value\":\"\"},{\"source\":\"active_users\",\"period\":\"30_days\",\"title\":\"Active Users\",\"link\":\"\",\"manual_value\":\"\"},{\"source\":\"users\",\"period\":\"30_days\",\"title\":\"Sign-Ups\",\"link\":\"\",\"manual_value\":\"\"}]"
	},
	{
		"setting": "banner_title",
		"value": "Estatísticas dos últimos 30 dias"
	},
	{
		"setting": "show_on",
		"value": "homepage"
	},
	{
		"setting": "background_color",
		"value": "var(--tertiary-low)"
	},
	{
		"setting": "text_color",
		"value": "var(--primary)"
	},
	{
		"setting": "min_column_width",
		"value": "10em"
	},
	{
		"setting": "hide_on_mobile",
		"value": false
	},
	{
		"setting": "plugin_outlet",
		"value": "above-main-container"
	},
	{
		"setting": "javascript",
		"value": "setInterval(function() { Discourse.__container__.lookup('controller:widget').send('refresh'); }, 3600000);"
	}
]

No entanto, recebo uma mensagem de erro:

javascript: Estas configurações foram adicionadas. Por favor, remova-as e tente novamente.

As estatísticas são extraídas da página “Sobre”, elas usam os mesmos dados da tabela na parte inferior dessa página:

Os dados no banner são atualizados com base no período de estatísticas mais baixo, a partir do momento em que o usuário viu o banner pela primeira vez.

Portanto, por exemplo, se você configurou o banner com estatísticas do último dia, após vê-lo inicialmente, ele atualizará seus dados em 24 horas. Se o banner for configurado para mostrar apenas estatísticas do último mês, os dados serão atualizados um mês após você tê-lo visualizado (ou se você limpar o localStorage do seu navegador).

Ele foi implementado dessa forma para reduzir o número de solicitações feitas, então, em vez de mostrar estatísticas atualizadas toda vez que o banner é visualizado, elas são armazenadas em cache no localStorage do navegador.

Este editor é apenas para editar configurações existentes, você não pode adicionar novas (ou javascript) aqui.

Se você deseja que este banner seja atualizado com mais frequência, eu poderia adicionar uma nova configuração que desabilitará o cache.

2 curtidas

Olá, @awesomerobot

Obrigado pela resposta detalhada e por fornecer a fonte das estatísticas. No entanto, ainda estou enfrentando o mesmo problema com as estatísticas exibidas no meu celular, o que tem acontecido desde que o instalei inicialmente.

De acordo com o meu entendimento, minhas estatísticas já deveriam ter sido atualizadas para o seguinte:

Também tentei limpar o cache do meu navegador, mas isso não fez diferença.

Eu apreciaria muito se essa opção fosse possível, pois ela forneceria uma visão mais abrangente do fórum para os consumidores.

2 curtidas

parecem ser as estatísticas de /admin, que provavelmente são um pouco diferentes das de /about, mas de qualquer forma… se você atualizar o componente, adicionei uma configuração para desabilitar o cache:

Screenshot 2023-10-30 at 2.03.15 PM

5 curtidas

Maravilha, funciona perfeitamente! Assim que ativei a configuração, ela atualizou imediatamente. Essa abordagem é muito mais simples do que limpar o cache, já que sempre mantenho o fórum aberto, junto com muitos outros!

Obrigado pela sua dedicação!

2 curtidas

Existe uma maneira de definir o período para que ele mostre estatísticas de ‘todo o tempo’?

Além disso, seria ótimo se eu pudesse exibir o total de ‘votos’, conforme calculado por este componente: Topic Voting | Discourse - Civilized Discussion

O componente está buscando estatísticas de /about.json. Então, acho que “all time” poderia ser adicionado com bastante facilidade, pois é um valor disponível também.

No entanto, se você quisesse exibir outras estatísticas, acho que precisaria fazer um fork e ajustar o componente para que ele busque esses valores de onde eles estão disponíveis.

2 curtidas

Então eu posso atualizar isso manualmente no JSON de configurações, já que não está no menu suspenso?

Não, se você adicionar uma entrada a manual_value, ela apenas substituirá o valor pesquisado por um estático. Talvez nomear este campo static_value o comunicasse melhor?

Você pode obter a contagem de todos os tempos adicionando o seletor de período de todos os tempos ao menu suspenso:

É apenas uma mudança simples no arquivo de configurações do componente. Empurrei um branch com isso aqui: GitHub - nolosb/discourse-stat-banner at count. No entanto, para um PR, provavelmente ainda precisaria de alguma lógica para renomear essa variável no menu suspenso?

1 curtida

Incrível, obrigado por adicionar isso!

2 curtidas

Existe alguma maneira de limitar a uma categoria específica? Tentei no outlet acima do cabeçalho da categoria e queria pelo menos usar CSS para limitar a uma categoria específica, mas então ele não é exibido em lugar nenhum.

1 curtida

se você alterar a configuração do tema show_on para everywhere, você poderá usar este CSS para exibi-lo em uma única categoria (substitua examplecategory pelo slug da sua categoria relevante)

.stat-banner__wrapper {
  display: none;
}

body.category-examplecategory {
  .stat-banner__wrapper {
    display: block;
  }
}
1 curtida