News:

Bored?  Looking to kill some time?  Want to chat with other SMF users?  Join us in IRC chat or Discord

Main Menu

Adicionando novas opções ao menu SMF 2.0

Started by TaijovuNeji, November 25, 2010, 03:23:01 PM

Previous topic - Next topic

TaijovuNeji

Neste tutorial, você vai aprender como adicionar novas opções no menu do SMF 2.0
Diferente das versões 1.0.x e 1.1.x, o menu foi movido dos templates para um dos arquivos fonte do SMF, podendo assim ser compartilhado entre eles.
Isso torna mais fácil a tarefa de adicionar uma nova opção no menu para todos os templates de uma vez, ou seja, haverá menos trabalho à fazer quando for instalar manualmente mods em temas personalizados.

Primeiramente, você deve abrir o arquivo Sources/Subs.php

Procure por:
// All the buttons we can possible want and then some, try pulling the final list of buttons from cache first.

Isto é onde as opções do menu são definidas.

Cada opção, é uma entrada em um grande array, esta é a primeira opção:

         'home' => array(
            'title' => $txt['home'],
            'href' => $scripturl,
            'show' => true,
            'sub_buttons' => array(
            ),
         ),


Para adicionar uma nova opção, copie e cole este código entre as opções onde você quer que mostre esta nova opção.
Mude 'home' para algo simples e único
Mude $txt['home'] para o nome da nova opção em apóstrofes
Mude $scripturl para o localização da nova opção em apóstrofes
Mude show to true (com isso você pode fazer coisas mais avançadas, que serão explicadas mais tarde neste tutorial)
Por enquanto ignore os sub-buttons. Isto pode criar um menu drop-down, o que também será explicado posteriormente neste tutorial.

Como exemplo, veja a nova opção que coloquei entre as opções Início e Ajuda:
         'home' => array(
            'title' => $txt['home'],
            'href' => $scripturl,
            'show' => true,
            'sub_buttons' => array(
            ),
         ),
         'facebook' => array(
            'title' => 'Facebook',
            'href' => 'http://www.facebook.com/',
            'show' => true,
            'sub_buttons' => array(
            ),
         ),
         'help' => array(
            'title' => $txt['help'],
            'href' => $scripturl . '?action=help',
            'show' => true,
            'sub_buttons' => array(
            ),
         ),


Agora você só precisa salvar o arquivo e fazer upload via FTP se for necessário. Se quiser saber mais sobre FTP leia este tutorial: O que é FTP / Como usar o FTP.

Se você quer somente um simples botão, você já pode parar por aqui, caso contrário, continue lendo.

Repare que se você deseja adicionar um botão no fim do menu, ele deve ser colocado depois do botão de logout e você precisará mudar a opção is_last para false no login e registro:

'is_last' => true,

Você também precisa adicionar isso à nova opção depois de:

'sub_buttons' => array(
            ),


Deve ficar algo assim:


'facebook' => array(
            'title' => 'Facebook',
            'href' => 'http://www.facebook.com/',
            'show' => true,
            'sub_buttons' => array(
            ),
            'is_last' => true,

         ),





Adicionando um novo botão em um forum multi linguagem

Ao adicionar uma nova opção no menu, eu sugeri que você substituisse $txt['home'] com o nome que você queria para o novo botão. Isso funciona bem, até você ter um forum com mais de uma linguagem. Então você terá que usar os arquivos de linguagens para que assim o texto possa ser traduzido.

Ao invés de fazer isso:


'title' => 'Facebook',


Você precisará fazer algo assim:


'title' => $txt['facebook_button'],


Certifique-se de usar um nome único e original, assim irá garantir que não é o mesmo texto que já está em uso pelo SMF. Então você precisará abrir cada arquivo index.idioma.php em Themes/default/languages (obiviamente, substitua idioma pelo nome do seu idioma). No fim do arquivo adicione:


$txt['facebook_button'] = 'Facebook';


Certifique-se de fazer o mesmo no arquivo de cada idioma.




Mostrando botões somente para usuários registrados

Talvez você queira ter um botão que somente é exibido para usuários registrados. Você pode fazer isso mudando:


'show' => true,


Se você quiser um botão que só é exibido para visitantes, mude para:


'show' => $user_info['is_guest'],


Se você quiser um botão que só é exibido para usuários registrados, mude para:


'show' => !$user_info['is_guest'],


Se você quiser um botão que só é exibido para os administradores, mude para:


'show' => $context['user']['is_admin']





Sub-opções

Por favor, note que nem todos os temas suportam sub-opções.

Você pode definir sub-opções que serão exibidas no drop-down menu. Veja o código usado para o menu do calendário:


         'calendar' => array(
            'title' => $txt['calendar'],
            'href' => $scripturl . '?action=calendar',
            'show' => $context['allow_calendar'],
            'sub_buttons' => array(
               'view' => array(
                  'title' => $txt['calendar_menu'],
                  'href' => $scripturl . '?action=calendar',
                  'show' => allowedTo('calendar_post'),
               ),
               'post' => array(
                  'title' => $txt['calendar_post_event'],
                  'href' => $scripturl . '?action=calendar;sa=post',
                  'show' => allowedTo('calendar_post'),
               ),
            ),
         ),


Tudo que você precisa fazer, é copiar o código da sub-opção no sub_buttons array() e então editar o nome, títulol, e show. Por exemplo, para adicionar uma sub-opção para o Facebook:


'facebook' => array(
            'title' => 'Facebook',
            'href' => 'http://www.facebook.com/',
            'show' => true,
            'sub_buttons' => array(
               'esquecisenha' => array(
                  'title' => 'Esqueci Minha senha',
                  'href' => 'http://www.facebook.com/reset.php',
                  'show' => true,
               ),
            ),
         ),





Créditos
Tópico original por: H
Tradução e edição: TaijovuNeji
Hospedagem 20GB, Cpanel, Windows ou Linux, com suporte a PHP ou ASP, R$ 30,00 por mes ou 290 por ano


meu site: http://www.dungeonmakers.com.br/forum
Não atendo PM para pedidos de suporte/ajuda. Para isso existe o forum!!!

Spectrum..!!

Parabéns pelo Tuto, vai para o índice (que aliás estará entrando em fase de edição)....

abçs,

Existem pessoas que deixam de buscar algo que dura a vida toda, para somente conquistar algo que dura alguns momentos...
Ser humilde; não é ser menos que alguém. É saber que não somos mais que ninguém!
SMF 2.0.4 | Meu site -->
Dell Vostro 3560 + AMD Radeon™ HD 7670M 1GB| Windows 8 Pro | Fedora 18 | IE10 | Google Chrome

Não atendo PM para pedidos de suporte/ajuda

Costa

Hugo "Costa" Fernandes - PT SMF
Todas as MP's a pedir ajuda são sujeitas a radioactividade, microondas, queimadas e atiradas borda fora.

"At least someone appreciates the fact that I am doing and not thinking..."
"Laziness is counter-revolutionary."

Spectrum..!!

Obrigado por informar amigo Costa, foi acrescido também em tópico de pedido de ajuda.

Conforme informei anteriormente, neste mesmo......

Quote from: Spectrum..!!☻ on November 25, 2010, 05:04:07 PM
..... vai para o índice (que aliás estará entrando em fase de edição)....

abçs,

Existem pessoas que deixam de buscar algo que dura a vida toda, para somente conquistar algo que dura alguns momentos...
Ser humilde; não é ser menos que alguém. É saber que não somos mais que ninguém!
SMF 2.0.4 | Meu site -->
Dell Vostro 3560 + AMD Radeon™ HD 7670M 1GB| Windows 8 Pro | Fedora 18 | IE10 | Google Chrome

Não atendo PM para pedidos de suporte/ajuda

TaijovuNeji

#4
Costa, veja esse tópico: http://www.simplemachines.org/community/index.php?topic=409578.0
Você colocou um link para o tuto no seu forum e não o link do tutorial aqui na comunidade, então achei que o mesmo não existia aqui, por isso eu fiz este tuto.
Hospedagem 20GB, Cpanel, Windows ou Linux, com suporte a PHP ou ASP, R$ 30,00 por mes ou 290 por ano


meu site: http://www.dungeonmakers.com.br/forum
Não atendo PM para pedidos de suporte/ajuda. Para isso existe o forum!!!

Costa

Tranquilo fera. :)
Foi só para evitar conteúdo duplicado.

-Costa
Hugo "Costa" Fernandes - PT SMF
Todas as MP's a pedir ajuda são sujeitas a radioactividade, microondas, queimadas e atiradas borda fora.

"At least someone appreciates the fact that I am doing and not thinking..."
"Laziness is counter-revolutionary."

edu_fmc

Olá,

acrescentei o botão, mas o mesmo não fica selecionado quando pressiono nele.
Ou seja, pressiono e o botão que fica seleccionado é o "Inicio"...

Vejam:
http://forum-musica.net/index.php?action=resources


Têm alguma ideia como alterar?

Advertisement: