Areá do topico
5 participantes
Fórum dos Fóruns :: Ajuda e atendimento ao utilizador :: Questões sobre códigos :: Questões resolvidas sobre HTML e BBCode
Página 1 de 1
Areá do topico
Qual é minha questão:
Eu queria tipo quando a pessoa criar um Topico deixa ela assim Olha.
Tipo eu queria bota issu.
Aqui aonde ta essas 2 Flechas
Endereço do meu fórum:
http://supportibia.alianceforum.com
Versão do fórum:
PHPBB3
Eu queria tipo quando a pessoa criar um Topico deixa ela assim Olha.
Tipo eu queria bota issu.
Aqui aonde ta essas 2 Flechas
Endereço do meu fórum:
http://supportibia.alianceforum.com
Versão do fórum:
PHPBB3
Última edição por proberto em 10.04.14 19:42, editado 1 vez(es)
Re: Areá do topico
Adicione isso a um novo Javascript com Investimento em Tópicos:
E isso ao seu CSS:
Abraços.
- Código:
$(function() {
$('.post .postprofile strong a').each(function(key, element) {
var self;
self = $(element);
self.closest('.post').before('<div class="post-author">' + self.parent().get(0).outerHTML + '</div>');
self.closest('dt').remove();
});
});
E isso ao seu CSS:
- Código:
.post-author {
background: #262626 url('http://www.xtibia.com/forum//public/style_images/marble/branding_bg.png') repeat;
text-shadow: rgba(0,0,0,0.5) 0px -1px 0px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
-webkit-box-shadow: inset #000 0px 1px 3px;
-moz-box-shadow: inset #000 0px 1px 3px;
box-shadow: inset #000 0px 1px 3px;
padding: 0 10px;
height: 36px;
line-height: 36px;
font-weight: normal;
font-size: 13px;
}
.post-author a {
color: #fff;
font-size: 13px;
font-weight: normal;
}
Abraços.
Re: Areá do topico
Cara eu te amo. Mais tipo na frente do nome sera que tem como bota 1 bola Verde fala que ta online e cinza fala que ta off.
2 Não tem como bota essa barra azul com o tanto de mensagens que tem no tópico.
essa barra
2 Não tem como bota essa barra azul com o tanto de mensagens que tem no tópico.
essa barra
Re: Areá do topico
Então, quanto a bolinha, troque o Javascript por esse:
Quanto a barra azul com a contagem não há como. O Forumeiros não exibe na tela o número de posts no tópico, logo para conseguir esse número, teria que carregar outra página, o que podia fazer o carregamento do tópico ficar lento. Malz.
E de que imagem você está falando?
$(function() {
$('.post .postprofile strong a').each(function(key, element) {
var self, post;
self = $(element);
post = self.closest('.post');
post.before('<div class="post-author"><img src="http://www.xtibia.com/forum//public/style_images/marble/post_' + (post.hasClass('online') ? 'on' : 'off') + 'line.png" /> ' + self.parent().get(0).outerHTML + '</div>');
self.closest('dt').remove();
});
});
Quanto a barra azul com a contagem não há como. O Forumeiros não exibe na tela o número de posts no tópico, logo para conseguir esse número, teria que carregar outra página, o que podia fazer o carregamento do tópico ficar lento. Malz.
E de que imagem você está falando?
Re: Areá do topico
Tem essa possibilidade sim amigo, veja um print de um tópico em meu fórum:Kyo Panda escreveu:Quanto a barra azul com a contagem não há como. O Forumeiros não exibe na tela o número de posts no tópico, logo para conseguir esse número, teria que carregar outra página, o que podia fazer o carregamento do tópico ficar lento. Malz.
Vou lhe dar uma dica: Basta somar quantas mensagens tem e subtrair uma, feito isso é só mostrar na "barra azul"...
Edit:
Aqui está os códigos que utilizo:
HTML:
- Código:
<!-- #region: Adds the number of replies to the topic bar -->
<font style='font-size: 12px; font-family: Arial;'><span itemprop="count_post"></span> respostas neste tópico</font>
<!-- #endregion: Adds the number of replies to the topic bar -->
JavaScript:
- Código:
var amount = $('span.count-post:last').html() - 1;
$('span[itemprop="count_post"]').html(amount);
JS
Última edição por JScript em 10.04.14 13:44, editado 1 vez(es) (Motivo da edição : + infos...)
Re: Areá do topico
Duas perguntas, JS:
1) Quando diz somar a quantidade de mensagens que tem, diz somar as mensagens no tópico atual, correto? Mas eu não tenho como detectar qual o número de mensagens no último tópico, o que pode tornar o número incerto. Logo, como contornar isso? (Claro, sem carregarmos uma nova página, pois se for necessário, é mais fácil puxar a da listagem de tópicos).
2) No script, você puxa a quantidade de posts de um elemento que possui essa quantidade, o span.count-post:last, mas não sei ao certo se esse elemento existe no PHPBB3. Você sabe se existe? Pois não conseguiríamos alterar o layout no PHPBB3.
Abraços.
1) Quando diz somar a quantidade de mensagens que tem, diz somar as mensagens no tópico atual, correto? Mas eu não tenho como detectar qual o número de mensagens no último tópico, o que pode tornar o número incerto. Logo, como contornar isso? (Claro, sem carregarmos uma nova página, pois se for necessário, é mais fácil puxar a da listagem de tópicos).
2) No script, você puxa a quantidade de posts de um elemento que possui essa quantidade, o span.count-post:last, mas não sei ao certo se esse elemento existe no PHPBB3. Você sabe se existe? Pois não conseguiríamos alterar o layout no PHPBB3.
Abraços.
Re: Areá do topico
@Kyo Panda
Não precisa tanto, para não fazer uma requisição só para ter o número de respostas, basta saber quantas tem na página atual mesmo!
Experimente em PHPBB3 (console):
Lembre-se: Quanto mais requisições com um curto intervalo entre elas é igual a Request Limit!
JS
Não precisa tanto, para não fazer uma requisição só para ter o número de respostas, basta saber quantas tem na página atual mesmo!
Experimente em PHPBB3 (console):
- Código:
jQuery('.post').length;
Lembre-se: Quanto mais requisições com um curto intervalo entre elas é igual a Request Limit!
JS
Re: Areá do topico
Nem tente ainda pois estou analisando com o @Kyo Panda, leia: https://ajuda.forumeiros.com/t91217-area-do-topico#619716proberto escreveu:Jscript eu não entendi como que instala isso
JS
Re: Areá do topico
Então, até aí eu compreendo. Mas há algumas variáveis que influenciam.
Nós devemos calcular o número de mensagens que há no tópico, incluindo todas as páginas. Contando o número de posts nesse tópico, sabemos qual é o número de mensagens por tópico definido pelo usuário, se o tópico possuir paginação. Se não possuir, temos o número exato.
Mas aí entramos num problema. Supomos que o usuário não mexeu na quantidade de mensagens por página e possuímos o padrão de 15 mensagens, o jQuery('.post').length retornaria 15, se o $('#main-content > .pagination:first span a').eq(-2).text() retornasse um valor (indicando que há mais de uma página). Nessa linha de raciocínio, se possuíssemos 3 páginas, poderíamos ter até 45 mensagens no tópico. O problema é que a terceira página pode ter 15 ou menos mensagens e não teríamos como ter certeza desse número.
Isso que está complicado.
Nós devemos calcular o número de mensagens que há no tópico, incluindo todas as páginas. Contando o número de posts nesse tópico, sabemos qual é o número de mensagens por tópico definido pelo usuário, se o tópico possuir paginação. Se não possuir, temos o número exato.
Mas aí entramos num problema. Supomos que o usuário não mexeu na quantidade de mensagens por página e possuímos o padrão de 15 mensagens, o jQuery('.post').length retornaria 15, se o $('#main-content > .pagination:first span a').eq(-2).text() retornasse um valor (indicando que há mais de uma página). Nessa linha de raciocínio, se possuíssemos 3 páginas, poderíamos ter até 45 mensagens no tópico. O problema é que a terceira página pode ter 15 ou menos mensagens e não teríamos como ter certeza desse número.
Isso que está complicado.
Re: Areá do topico
@Kyo Panda
Chegou ao ponto que eu queria: Se desejar ter precisão no número de respostas, terá que fazer no mínimo uma requisição!
JS
Chegou ao ponto que eu queria: Se desejar ter precisão no número de respostas, terá que fazer no mínimo uma requisição!
JS
Re: Areá do topico
Este é o ponto.
Então proberto, eu posso até criar um script para tal, mas acho um pouco pesado demais para seus usuários, por uma informação não determinante. Ou podemos colocar um número aproximado. O que será?
Então proberto, eu posso até criar um script para tal, mas acho um pouco pesado demais para seus usuários, por uma informação não determinante. Ou podemos colocar um número aproximado. O que será?
Re: Areá do topico
O que você quer fazer? Numerar seus posts? Se for crie um JS com investimento nos tópicos e adicione:
- Código:
$(function() {
var postspagina = 5; //Número de posts por página.
var pagina = document.title.match(/-\sPage\s(\d+)$/), pagina = pagina ? pagina[1] : 1;
var posts = $('.postprofile', document.getElementById('main-content')), numero = (pagina - 1) * postspagina;
for(var i = 0; i < postspagina; i++) {
if(!posts[i]) break;
var link = posts[i].previousSibling.getElementsByTagName('h2')[0].getElementsByTagName('a')[0].href;
posts[i].innerHTML = '<span id="n-post"><a href="' + link + '">#' + ++numero + '</a></span>' + posts[i].innerHTML;
}
});
- Código:
#n-post {float: right;font-size: 1.2em;font-weight: normal;}
Re: Areá do topico
Nyeh, Daemon, não é bem isso. Estávamos discutindo a melhor maneira de se adicionar uma contagem com a soma de respostas no tópico.
Proberto, quanto ao avatar, erro meu. E quanto ao número, vamos ficar com o valor aproximado para deixar o site mais rápido para os usuários, tudo bem?
Troque o script por esse:
E adicione isso ao seu CSS:
Abraços.
Proberto, quanto ao avatar, erro meu. E quanto ao número, vamos ficar com o valor aproximado para deixar o site mais rápido para os usuários, tudo bem?
Troque o script por esse:
- Código:
$(function() {
var last, count, message;
last = parseInt(/Página\s\d+\sde\s(\d+)/g.exec($('.pagination:first').text())[1]);
count = $('.post').length - 1;
if (last !== 1) {
count = (count + 1) * (last - 1);
message = 'Mais de ' + count + ' respostas neste tópico';
} else {
message = count + ' resposta' + (count > 1 ? 's' : '') + ' neste tópico'
}
$('.post:first').before('<div class="post-count">' + message + '</div>');
$('.post .postprofile strong a').each(function(key, element) {
var self, post;
self = $(element);
post = self.closest('.post');
post.before('<div class="post-author"><img src="http://www.xtibia.com/forum//public/style_images/marble/post_' + (post.hasClass('online') ? 'on' : 'off') + 'line.png" /> ' + self.parent().get(0).outerHTML + '</div>');
self.parent().next().remove();
self.parent().remove();
});
});
E adicione isso ao seu CSS:
- Código:
.post-count {
background: #2F558B url("http://www.xtibia.com/forum//public/style_images/marble/noise.png") repeat;
color: #fff;
text-shadow: rgba(0,0,0,0.25) 0px -1px 0px;
padding: 12px;
font-size: 14px;
font-weight: 300;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
-webkit-box-shadow: inset #778594 0px 1px 3px;
-moz-box-shadow: inset #778594 0px 1px 3px;
box-shadow: inset #778594 0px 1px 3px;
overflow: hidden;
margin-bottom: 2px;
font-size: 11px;
}
Abraços.
Re: Areá do topico
Olá!
Kyo, ele realmente parece funcionar, aqui teve resultado, mas veja como ficam os nomes: http://prntscr.com/38qo06
É normal?
Hancki
Kyo, ele realmente parece funcionar, aqui teve resultado, mas veja como ficam os nomes: http://prntscr.com/38qo06
É normal?
Hancki
Re: Areá do topico
Sim, segue o padrão do fórum passado: http://www.xtibia.com/forum/topic/180827-2-conteudo/
Eles mantém o nome em cima e não o repetem no avatar.
Eles mantém o nome em cima e não o repetem no avatar.
Re: Areá do topico
Se fosse PunBB facilitaria bastante, era só criar um Script com:
- Código:
$(function(){
var p = $('.main-head p.h2')[0];
var paging = $('p.paging');
var nf = $('.posthead').last().find('h2 strong').text().match(/\d+/g)-1;
var link = $('p.paging').find('img[alt="Seguinte"]').closest('a').attr('href');
if(!paging) {
$(p).replaceWith('<span class="countpost">'+nf+'</span>');
}else if(paging) {
$.get(link, function(data) {
var nl = $('.posthead', data).last().find('h2 strong').text().match(/\d+/g)-1;
$(p).replaceWith('<span class="countpost">'+nl+'</span>');
});
}
});
- Código:
.countpost:after {
content: ' respostas neste tópico';
}
Re: Areá do topico
Mas Daemon, aqui:
Ele só pegaria o número da última postagem da página, ao invés de pegar a quantidade de respostas do tópico, não?
Veja:
http://ajuda-punbb.forumeiros.com/t6-cancao-katyusha
Este tópico possui 16 respostas, mas se executar o script nessa página, conseguiríamos apenas 14. Esse foi o ponto em que chegamos. Tive que calcular o número de páginas para chegar a um número aproximado, como Mais de 15 respostas, pois não sei quantas respostas há na segunda página.
- Código:
$('.posthead').last().find('h2 strong').text().match(/\d+/g) - 1;
Ele só pegaria o número da última postagem da página, ao invés de pegar a quantidade de respostas do tópico, não?
Veja:
http://ajuda-punbb.forumeiros.com/t6-cancao-katyusha
Este tópico possui 16 respostas, mas se executar o script nessa página, conseguiríamos apenas 14. Esse foi o ponto em que chegamos. Tive que calcular o número de páginas para chegar a um número aproximado, como Mais de 15 respostas, pois não sei quantas respostas há na segunda página.
Re: Areá do topico
@Daemon.H
Veja:
https://ajuda.forumeiros.com/t91217-area-do-topico#619742
https://ajuda.forumeiros.com/t91217-area-do-topico#619753
Precisa ler o tópico na íntegra para entender...
JS
Veja:
https://ajuda.forumeiros.com/t91217-area-do-topico#619742
https://ajuda.forumeiros.com/t91217-area-do-topico#619753
Precisa ler o tópico na íntegra para entender...
JS
Re: Areá do topico
Creio que este sim é o certo:
- Código:
$(function(){
var p = $('.main-head p.h2')[0];
var paging = $('p.paging');
var nf = $('.posthead').last().find('h2 strong').text().match(/\d+/g)-1;
var link = $('p.paging').not('img').find('a:last').attr('href');
if(!paging) {
$(p).replaceWith('<span class="countpost">'+nf+'</span>');
}else if(paging) {
$.get(link, function(data) {
var nl = $('.posthead:last', data).find('h2 strong').text().match(/\d+/g)-1;
$(p).replaceWith('<span class="countpost">'+nl+'</span>');
});
}
});
Fórum dos Fóruns :: Ajuda e atendimento ao utilizador :: Questões sobre códigos :: Questões resolvidas sobre HTML e BBCode
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos