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,
),
),
),
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?
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
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?
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
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.
ups, é que fiz isso pra mim mas para uma página de downs :P
De nada fera, tamo aí
Farebem
- Costa
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
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>
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>
<div id="header" class="wrapper">
<a href="http://meuforum.net/index.php?forum=MeuForum" >
<img src="logo" />
</a>
</div>
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?
que raio tem isso a ver com este tópico? :P
Não entendi nada agora :-\
Como crio um botão só para os Grupos Normais (Administrador, Moderador, Moderador Global e etc..)??
Para quem pode moderar
'admin' => array(
'title' => $txt['texto'],
'href' => $scripturl . '?action=',
'show' => $context['can_moderate'],
'sub_buttons' => array(
),
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...
tenta assim...
'admin' => array(
'title' => $txt['staff_boton'],
'href' => 'http://meuforum.net/index.php?forum=Staff',
'show' => $context['can_mod'],
'sub_buttons' => array(
),
),
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...
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
Agora eu sei como adicionar botões com actions para páginas em PHP, thanks Costa!!! ;) ;) ;)
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
primeiro post atualizado :)
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.
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) .........',
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.
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
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..!!☻
Na boa jovem :)
-Costa