Simple Machines Community Forum

SMF Support => Português (Portuguese) => Language Specific Support => Arquivo => Topic started by: Costa on July 16, 2009, 08:21:42 PM

Title: Como acrescentar botões ao menu 2.0
Post by: Costa on July 16, 2009, 08:21:42 PM
Neste tutorial você vai aprender a adicionar "Abas" ao menu do SMF 2.0. Ao contrário do SMF 1.0.x e 1.1.x o menu foi movido das templates para um dos arquivos fonte do SMF, assim pode ser partilhado entre vários temas.
Isto facilita a tarefa de adicionar "Abas" a todos os temas de uma vez e significa menos trabalho quando tem que instalar manualmente um mod em outro tema.

Primeiro você precisa de abrir o arquivo ./Sources/Subs.php

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

É aqui que as abas estão.

Cada aba é uma entrada com uma grande array. Aqui está a primeira aba:
         'home' => array(
            'title' => $txt['home'],
            'href' => $scripturl,
            'show' => true,
            'sub_buttons' => array(
            ),
         ),


Para adicionar uma aba copie e cole este código entre as abas onde quer que esta aba apareça.
Mude o 'home' para algo simples e único
Mude o $txt['home'] para o nome da sua aba entre apóstrofes
Mude o $scripturl para a localização da sua aba entre apóstrofes
Mude o show to true (você pode fazer coisas mais avançadas com isto, que será explicado mais à frente neste tutorial)
Ignore os sub-buttons por agora. Isto pode criar um menu drop-down, que será explicado mais à frente neste tutorial

O meu exemplo será algo como isto, entre a aba Início e Ajuda:
         'home' => array(
            'title' => $txt['home'],
            'href' => $scripturl,
            'show' => true,
            'sub_buttons' => array(
            ),
         ),
         'arcade' => array(
            'title' => 'Google',
            'href' => 'http://www.google.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 o upload no FTP, se necessário. Você pode querer ler O que é FTP / Como usar o FTP (http://www.simplemachines.org/community/index.php?topic=327375.0)
Finalmente, se você usar a cache do SMF você precisa limpá-la, indo a Admin > Manutenção do Fórum > Limpar Cache

Se você quer apenas um simples botão você pode parar de ler agora, caso contrário, continue a ler!

Note que se você deseja adicionar um botão no final do menu, deve ser colocado após o botão de logout e você precisa mudar o valor is_last para false no login e registo:

            'is_last' => true,

Você também precisa adicioná-lo à sua aba após:
            'sub_buttons' => array(
            ),

         
Que ficaria algo assim:
         'arcade' => array(
            'title' => 'Google',
            'href' => 'http://www.google.com',
            'show' => true,
            'sub_buttons' => array(
            ),
            'is_last' => true,

         ),

      



Adicionando abas em um fórum de vários idiomas
Ao adicionar uma aba eu sugeri que você substitua $txt['home'] com o nome que você quiser para a aba. Isso funciona bem até ter um fórum com mais de um idioma. Então você precisa usar os arquivos de linguagem para que o texto possa ser traduzido.

Em vez de fazer isso:
            'title' => 'Google',

Você precisa fazer algo como:
            'title' => $txt['aba_google'],

Certifique-se que usa um nome bastante original, com isso vai garantir que não é o mesmo que algum texto que o SMF já está usando. Então você terá que abrir cada arquivo index.linguagem.php em Themes/default/languages (obviamente substituir a linguagem com o nome de seu idioma). Na parte inferior do arquivo adicione:
$txt['aba_google'] = 'Google';

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

Mostrando botões apenas para utilizadores registados
Você pode desejar ter um botão que é exibido apenas para utilizadores registados. Você pode fazer isso alterando:
            'show' => true,

Se você quiser que um botão só é exibido para visitante, mude para:
            'show' => $user_info['is_guest'],

Se você quiser que um botão que é exibido apenas para utilizadores registados:
            'show' => !$user_info['is_guest'],
   
Se você quiser que um botão que é exibido apenas para os administradores:
            'show' => $context['user']['is_admin']

Os usuários avançados também podem olhar para o allowedTo() (http://support.simplemachines.org/function_db/index.php?action=view_function;id=408) para restringir com base nas permissões

Sub-abas
Por favor note que nem todos os temas suportam Sub-abas.

Você pode definir Sub-abas que seram exibidas no menu drop-down. Dê uma olhada no código utilizado para o menu de 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 sub-código da aba no 'sub_buttons' => array( e então editar o nome, título, href e show. Por exemplo, para adicionar uma sub-botão para o Google:
         'google' => array(
            'title' => 'Google',
            'href' => 'http://www.google.com',
            'show' => true,
            'sub_buttons' => array(
               'gmail' => array(
                  'title' => 'Gmail',
                  'href' => 'http://gmail.com',
                  'show' => true,
               ),
            ),
         ),


Title: Re: Como acrescentar botões ao menu 2.0
Post by: CesarManara on July 24, 2009, 09:34:34 PM
Legal, e se eu quiser Adicionar uma action com texto apenas. Como fazer?

Exemplo, colocar um botão que vai redirecionar para uma action, onde neste action tenha um tutorial explicando como funciona o Advanced Karma System?
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Costa on July 24, 2009, 09:42:10 PM
Subs.php

                'help' => array(
                'title' => $txt['karma'],
                'href' => $scripturl . '?action=ação',
                'show' => true,
                'sub_buttons' => array(
                ),

index.[idioma].php

$txt['karma'] = 'Advanced Karma System';

O ação substituis pelo link
Title: Re: Como acrescentar botões ao menu 2.0
Post by: CesarManara on July 24, 2009, 09:55:56 PM
Quote from: Costa on July 24, 2009, 09:42:10 PM
Subs.php

                'help' => array(
                'title' => $txt['karma'],
                'href' => $scripturl . '?action=ação',
                'show' => true,
                'sub_buttons' => array(
                ),

index.[idioma].php

$txt['karma'] = 'Advanced Karma System';

O ação substituis pelo link

Acho que não fui claro na pergunta hehe.
Eu queria saber como criar a action, porque o '?action=karma' não existe, como cria-lo?
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Costa on July 24, 2009, 11:19:58 PM
index.php encontra:

'activate' => array('Register.php', 'Activate'),

adiciona a seguir:

'karmadescript' => array('karmadescript.php', 'KarmaDescript'),

Então cria o  'karmadescript.php' assim:
<?php
if (!defined('SMF'))
die(
'Hacking attempt...');

function 
karmadescript() {
global 
$context;
$context['page_title'] = 'Descrição do Karma!';
// This is gonna be needed...
loadTemplate('karmadescript');
}
?>
Coloca o karmadescript.php em /Sources/

Agora crias o  Themes/default/karmadescript.template.php, algo deste tipo:

<?php

function template_main()
{
global 
$context$settings$options$txt$scripturl;

echo 
'


<table width="100%" border="0" cellspacing="0" cellpadding="3" >
<tr>
<td>'
theme_linktree(), '</td>
</tr>
</table>

<table width="100%" border="0" cellspacing="0" cellpadding="4" align="center" class="tborder">
<tr class="titlebg">
<td align="center" >Descrição do Karma</td>
</tr><tr>
<td class="windowbg">'
;
 
echo 
'<table border="0" cellpadding="0" cellspacing="3" width="100%">
         <tr>
           <td width="100%" valign="top">
O Meu Karma é porreiro pá!!
   </td></tr></table>'
;
echo 
'
</td>
</tr>
</table><br /><br />
'
;
}

?>


então faz isto http://www.meusite.com/forum/index.php?action=karmadescript (http://www.meusite.com/forum/index.php?action=karmadescript)

Podees mudar os nomes e meter como quiseres
Title: Re: Como acrescentar botões ao menu 2.0
Post by: CesarManara on July 25, 2009, 02:20:07 PM
consegui, com as seguintes modificações:

'karmadescript' => array('karmadescript.php', 'KarmaDescript'),

function karmadescript() {

Porque se não ficava action=downloads.

Abs e thx pelo help.
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Costa on July 25, 2009, 03:48:44 PM
ups, é que fiz isso pra mim mas para uma página de downs :P
De nada fera, tamo aí

Farebem
- Costa
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Carlos Faria on July 31, 2009, 04:10:57 PM
Aproveito esse tópico para perguntar uma coisinha  :-\

O logo do meu fórum redirecciona-me para http://meuforum.net/index.php como faço para que ele redireccione-me para outro link?

ex: http://meuforum.net/index.php?forum=MeuForum
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Costa on July 31, 2009, 04:58:39 PM
salvo erro pelo index.template.php
Ou então mete o código a seguir onde metes o logo(não sei se assim vai funcionar)

<a href="http://meuforum.net/index.php?forum=MeuForum" ><img src="logo" /></a>
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Carlos Faria on July 31, 2009, 06:31:18 PM
Quote from: Costa on July 31, 2009, 04:58:39 PM
salvo erro pelo index.template.php
Ou então mete o código a seguir onde metes o logo(não sei se assim vai funcionar)

<a href="http://meuforum.net/index.php?forum=MeuForum" ><img src="logo" /></a>

Não encontro... a única coisa que encontro é:

<div id="header" class="wrapper">
<div id="logo">
<a href="'.$scripturl.'" title=""></a>
</div>


Title: Re: Como acrescentar botões ao menu 2.0
Post by: Costa on July 31, 2009, 06:51:37 PM
<div id="header" class="wrapper">
         <a href="http://meuforum.net/index.php?forum=MeuForum" >
         <img src="logo" />
         </a>
</div>
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Carlos Faria on July 31, 2009, 08:46:44 PM
Coloquei isso e não deu.. modifiquei e deu..

Correcção:

<div id="header" class="wrapper">
<div id="logo">
<a href="http://meuforum.net/index.php?forum=MeuForum"></a>
</div>


P.S: Não reparei no href que estava-la :P




Seria possível mudar o logo se for para outra página?
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Costa on July 31, 2009, 08:50:10 PM
que raio tem isso a ver com este tópico? :P
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Darkness_Black on August 02, 2009, 11:12:27 PM
Não entendi nada agora  :-\
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Carlos Faria on August 03, 2009, 10:25:14 AM
Como crio um botão só para os Grupos Normais (Administrador, Moderador, Moderador Global e etc..)??
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Costa on August 03, 2009, 10:28:33 AM
Para quem pode moderar


'admin' => array(
'title' => $txt['texto'],
'href' => $scripturl . '?action=',
'show' => $context['can_moderate'],
'sub_buttons' => array(
),
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Carlos Faria on August 07, 2009, 11:33:14 AM
Eu fiz:

'admin' => array(
             'title' => $txt['staff_boton'],
             'href' => 'http://meuforum.net/index.php?forum=Staff',
             'show' => $context['can_moderate'],
             'sub_buttons' => array(
        ),
),


e não resulta.. não vejo nada... nem nenhum moderador e etc...
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Costa on August 07, 2009, 02:08:26 PM
tenta assim...

'admin' => array(
             'title' => $txt['staff_boton'],
             'href' => 'http://meuforum.net/index.php?forum=Staff',
             'show' => $context['can_mod'],
             'sub_buttons' => array(
        ),
),
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Carlos Faria on August 07, 2009, 03:42:43 PM
Quote from: Costa on August 07, 2009, 02:08:26 PM
tenta assim...

'admin' => array(
             'title' => $txt['staff_boton'],
             'href' => 'http://meuforum.net/index.php?forum=Staff',
             'show' => $context['can_mod'],
             'sub_buttons' => array(
        ),
),


Não dá.. o que aparece é o botão para ir para painel de administração...
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Costa on August 07, 2009, 04:14:24 PM
tá, depois vejo isso, ou então procura tu a variável de quem pode moderar, tou com preguiça e a fazer tudo na base do ao calhas :P
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Ederson Lima on August 09, 2009, 11:26:16 AM
Agora eu sei como adicionar botões com actions para páginas em PHP, thanks Costa!!!  ;) ;) ;)
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Costa on August 24, 2009, 08:12:48 PM
Quote from: [T]uGa [M]aSter on August 03, 2009, 10:25:14 AM
Como crio um botão só para os Grupos Normais (Administrador, Moderador, Moderador Global e etc..)??


moderate' => array(
                'title' => $txt['staff_menu_button'],
                'href' => $scripturl . '?action=staffmenubutton',
                'show' => $context['allow_moderation_center'],
                'sub_buttons' => array(
                ),
),




index.[idioma].php

$txt['staff_menu_button'] = 'Botão do staff';

Obs: apenas quem pode ver o Centro de Moderação consegue ver este botão

Farebem
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Costa on October 06, 2009, 03:49:26 PM
primeiro post atualizado :)
Title: Re: Como acrescentar botões ao menu 2.0
Post by: MacNaction on July 04, 2010, 02:06:09 PM
Olá.

Eu tive uns problemas e não deu para utilizar.

Aparece este erro:
(https://www.simplemachines.org/community/proxy.php?request=http%3A%2F%2Fj.imagehost.org%2F0456%2FCapturaEcra-1.png&hash=1de7389ac1f702ee96204c7403e713d6772df531)

Ja vi o Ficheiro Subs.php, mas acho que esta tudo bem.

Eu uso o SMF 2.0 RC3, mais SimplePortal, e o tema é o Inferno feito pelo DzinerStudio.

Deixo em anexo o subs.php
Se alguém me poder ajudar.
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Spectrum..!! on July 04, 2010, 02:47:36 PM
Olá amigo MacNaction, seja bem vindo ao SMF.

Na linha  4086.

Já tentou linkar direto?

'href' => 'http://www.seu_site.com/aqui (http://www.seu_site.com/aqui) .........',
Title: Re: Como acrescentar botões ao menu 2.0
Post by: MacNaction on July 04, 2010, 03:09:26 PM
Quote from: Spectrum..!!☻ on July 04, 2010, 02:47:36 PM
Olá amigo MacNaction, seja bem vindo ao SMF.

Na linha  4086.

Já tentou linkar direto?

'href' => 'http://www.seu_site.com/aqui (http://www.seu_site.com/aqui) .........',


Continua a aparecer o erro.
nao sei o que se passa.
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Costa on July 04, 2010, 03:45:42 PM
Falta uma vírgula :P


'banners' => array(
'title' => 'Banners',
'href' => $scripturl . '?page=banners',
'show' => $context['allow_memberlist'],
'sub_buttons' => array(
'banners1' => array(
'title' => 'Banner 1',
'href' => $scripturl . '?page=banners1',
'show' => true,
),
'banners2' => array(
'title' => 'Banners 2',
'href' => $scripturl . '?page=banners2',
'show' => true,
'is_last' => true,
),
),
),


-Costa
Title: Re: Como acrescentar botões ao menu 2.0
Post by: MacNaction on July 04, 2010, 05:17:22 PM
Quote from: Costa on July 04, 2010, 03:45:42 PM
Falta uma vírgula :P


'banners' => array(
'title' => 'Banners',
'href' => $scripturl . '?page=banners',
'show' => $context['allow_memberlist'],
'sub_buttons' => array(
'banners1' => array(
'title' => 'Banner 1',
'href' => $scripturl . '?page=banners1',
'show' => true,
),
'banners2' => array(
'title' => 'Banners 2',
'href' => $scripturl . '?page=banners2',
'show' => true,
'is_last' => true,
),
),
),


-Costa


Sou mesmo burro!

desculpem la por isto.

Obrigado -Costa e Spectrum..!!☻
Title: Re: Como acrescentar botões ao menu 2.0
Post by: Costa on July 04, 2010, 05:35:48 PM
Na boa jovem :)

-Costa