News:

SMF 2.1.4 has been released! Take it for a spin! Read more.

Main Menu

Sub-forum em ordem alfabética

Started by JoseRoberto, October 02, 2007, 08:59:05 AM

Previous topic - Next topic

JoseRoberto

Por padrão a ordenação dos fóruns é pelo mais recente. Existe como eu ordenar alfabeticamente somente os sub-fóruns?

Estou usando o SMF em hxxp:www.bregapop.com/forum [nonactive]

No Fórum de notícias gostaria que ficasse ordenado no padrão, mas nos Fóruns de Letras de músicas e Cifras que ficasse em ordenação alfabética.

margarett

Mas tu podes definir a ordem dos sub-quadros... No "manage boards" (na tua admin) tens lá a opção para mover os quadros, e dar-lhes a ordenação que quiseres ;)
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

JoseRoberto

Eu sei............. aí eu consigo ordenar do jeito que eu quero, mas não é na ordenação dos sub-quadros ou sub-fóruns, mas é a ordenação dos tópicos dentro de cada sub-fórum, pois cada vez que um tópico é criado, automaticamente ele é o primeiro que aparece. Ok?

margarett

AHHHHHHHHHH :P

Percebi mal, desculpa...

O que tu queres é ordenar os posts pelo título do tópico?
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

JoseRoberto

Sim...... pois, por exemplo, estou usando alguns fóruns para que os próprios usuários cadastrados possam adicionar as letras e cifras de bandas e cantores no padrão nome do artista - nome da música e se o fórum ordenar alfabeticamente pelo título do tópico ficará bem mais organizado.

margarett

Ora bem... A malta anda aqui a partir a carola...

No Sources/MessageIndex.php encontramos:

// Default sort methods.
$sort_methods = array(
'subject' => 'mf.subject',
'starter' => 'IFNULL(memf.realName, mf.posterName)',
'last_poster' => 'IFNULL(meml.realName, ml.posterName)',
'replies' => 't.numReplies',
'views' => 't.numViews',
'first_post' => 't.ID_TOPIC',
'last_post' => 't.ID_LAST_MSG'
);

// They didn't pick one, default to by last post descending.
if (!isset($_REQUEST['sort']) || !isset($sort_methods[$_REQUEST['sort']]))
{
$context['sort_by'] = 'last_post';
$_REQUEST['sort'] = 'ID_LAST_MSG';
$ascending = isset($_REQUEST['asc']);
}
// Otherwise default to ascending.
else
{
$context['sort_by'] = $_REQUEST['sort'];
$_REQUEST['sort'] = $sort_methods[$_REQUEST['sort']];
$ascending = !isset($_REQUEST['desc']);
}


Podemos tentar adaptar este "if" para o que nos interessa... Penso eu...

Então vamos a ver... O 1º "if"
// They didn't pick one, default to by last post descending.
if (!isset($_REQUEST['sort']) || !isset($sort_methods[$_REQUEST['sort']]))

Este é o default... Vamos deixar o default para todos os quadros que não o que queres... Deve ficar qualquer coisa assim:
// They didn't pick one, default to by last post descending.
if (($board != xx) && (!isset($_REQUEST['sort']) || !isset($sort_methods[$_REQUEST['sort']])))

No $board != xx tens de substituir o "xx" pelo ID do quadro...

Agora vamos adaptar para o nosso quadro.
// Otherwise default to ascending.
else
{
$context['sort_by'] = $_REQUEST['sort'];
$_REQUEST['sort'] = $sort_methods[$_REQUEST['sort']];
$ascending = !isset($_REQUEST['desc']);
}

Vai ficar:
// Otherwise default to ascending.
elseif ($board != xx)
{
$context['sort_by'] = $_REQUEST['sort'];
$_REQUEST['sort'] = $sort_methods[$_REQUEST['sort']];
$ascending = !isset($_REQUEST['desc']);
}
          //finalmente, se for para ordenar no quadro "xx"
        else
        {
$context['sort_by'] = 'subject';
$_REQUEST['sort'] = 'mf.subject';
$ascending = isset($_REQUEST['asc']);
       }


Não tenho a certeza que seja bem isto... Não te esqueças de trocar os "xx" pelo ID do quadro em questão, faz backup do teu MessageIndex.php e coloca lá estas alterações...
Avisa se resultou ou não. Isto é mesmo do alto da minha invenção :P
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

JoseRoberto

Caro Bruno, na versão do SMF que estou usando (1.1.2) não existem as linhas citadas por você no arquivo  Sources/MessageIndex.php

margarett

Devias actualizar para 1.1.4...

Ou então anexa-me o teu MessageIndex. Mas devias mesmo era actualizar...
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

JoseRoberto

Ok... concordo......... irei tentar... vou tentar fazer o backup, desinstalar o SMF 1.1.2, instalar o SMF 1.1.4 e recuperar o backup..... vamos aguardar.....

O Cobra

Quote from: JoseRoberto on October 05, 2007, 05:02:56 PM
Ok... concordo......... irei tentar... vou tentar fazer o backup, desinstalar o SMF 1.1.2, instalar o SMF 1.1.4 e recuperar o backup..... vamos aguardar.....
Amigo não é preciso desinstalar a versão 1.1.2, apenas fazer o Large upgrade para a versão 1.1.4, mas gostaria de informar que vai perder todos MOD's

O Cobra

No fórum aonde pertenço ainda continua em 1.1.2 e pelo o que diz o administrador do mesmo, não vai fazer actualizar para 1..1.4

Vamos nós perceber porque...............

JoseRoberto

Tirando uma dúvida: eu posso então aplicar este Large upgrade do 1.1.4 sobre o SMF 1.1.2 instalado no meu domínio?

O Cobra

 ;D É claro que pode e deve o fazer, caso contrário, teria que fazer uma nova instalação do SMF, isto se apagar o 1.1.2

petervmaster

Boas a todos

@margarett, fiz como está e funcionou perfeitamente, isto é excelente para acabar com os indices!
Só uma pequena questão, não dá para inverter a ordem?! É que está a ordenar de Z para A e gostaria era que fosse ao contrário ou seja de A para Z.

Cump
petervmaster

margarett

Vê assim:

// Otherwise default to ascending.
elseif ($board != xx)
{
$context['sort_by'] = $_REQUEST['sort'];
$_REQUEST['sort'] = $sort_methods[$_REQUEST['sort']];
$ascending = !isset($_REQUEST['desc']);
}
          //finalmente, se for para ordenar no quadro "xx"
        else
        {
$context['sort_by'] = 'subject';
$_REQUEST['sort'] = 'mf.subject';
$ascending = !isset($_REQUEST['desc']);
       }
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

petervmaster

Quote from: margarett on October 08, 2007, 06:54:12 PM
Vê assim:

// Otherwise default to ascending.
elseif ($board != xx)
{
$context['sort_by'] = $_REQUEST['sort'];
$_REQUEST['sort'] = $sort_methods[$_REQUEST['sort']];
$ascending = !isset($_REQUEST['desc']);
}
          //finalmente, se for para ordenar no quadro "xx"
        else
        {
$context['sort_by'] = 'subject';
$_REQUEST['sort'] = 'mf.subject';
$ascending = !isset($_REQUEST['desc']);
       }


Amigo margarett, funcionou perfeitamente, só lhe queria colocar mais uma questão.
Dá para vários quadros?
Já tentei adicionar com , e ; e acaba por dar erro!

Cump
petervmaster

margarett

#16

// Otherwise default to ascending.
elseif ($board != xx)


Passa a:

// Otherwise default to ascending.
elseif (($board != xx) && ($board != yy) && ($board != zz))


;)

Vou passar este ao indice
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

petervmaster

Muito bom amigo Margarett, obrigado pela disponibilidade, isto é realmente excelente para acabar com os indices  8)

Cump
petervmaster

margarett

#18
E enganei-me :P

Tem de ser em 2 sitios...

É o que indiquei, e este:

// They didn't pick one, default to by last post descending.
if ((($board != xx) && ($board != yy) && ($board != zz)) && (!isset($_REQUEST['sort']) || isset($sort_methods[$_REQUEST['sort']])))
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

petervmaster

Ok amigo, vou testar depois deixo o feedback

Cump
petervmaster

Advertisement: