show_menu2, versão 4.9 x
Show_Menu2 é um trecho de código para o CMS WebsiteBaker. Desde WebsiteBaker 2.7 ele está incluído com o CMS.
a antiga função show_menu é completamente substituída e estendida por show_menu2. Todos os dados necessários para criar o menu são gerados por uma única consulta de banco de dados. Por amplas possibilidades de ajuste do código HTML gerado todos os tipos de menu possíveis (listas, breadcrumbs, sitemaps, etc.) pode ser gerado.
- Instalação
- Usando Show_Menu2
- FAQ
- Função
- Saída HTML
- Parâmetro
- Opções Avançadas
- Cadeias de caracteres de Formato
- Formatação Condicional
- Formatador
INSTALLATIONup
Desde show_menu2 geralmente está presente em WebsiteBaker, nenhuma instalação é necessária. Se, ao contrário das expectativas, não existir, você pode baixá-lo aqui.
usando SHOW_MENU2up
para usar show_menu2 você tem que modificar o modelo onde deseja que o menu apareça. Observe: se as chamadas de menu antigas forem substituídas, os novos parâmetros correspondentes que show_menu2 precisa também devem ser usados.
na maioria dos casos, a chamada padrão com pelo menos 4 parâmetros de show_menu2 é suficiente. Neste caso, os valores padrão são usados, isso cria um menu que exibe a página atual e o subpáginas da página atual:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
por Favor, note: a chamada para show_menu2 é o PHP e normalmente deve ser incluído no código PHP caracteres (a menos que a chamada já está no código PHP):
<?php show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM); ?>
este menu padrão já cria um menu completo em uma base de lista com várias classes que permitem fácil formatação usando CSS. Por exemplo, a classe “menu-current” é adicionada à tag <li> do item de menu atual. Além disso, cada item de menu dos subitens contém a classe “menu-expand”. Isso permite criar regras CSS muito diferenciadas para cada item de menu.
por exemplo:
li.menu-expand { font-weight: bold; }li.menu-current { background: red; }
a seção “saída HTML” contém uma descrição detalhada de quais classes são atribuídas a qual elemento. Ao usar diferentes parâmetros na chamada da função show_menu2, também é possível criar estruturas de menu bastante extensas e diferentes. Por exemplo, para exibir somente os itens de menu de nível superior da estrutura de menu, você poderia usar a seguinte chamada:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
Ou, por exemplo, a exibição de até dois subníveis da página atual:
show_menu2(0, SM2_CURR+1, SM2_CURR+2, SM2_TRIM);
Há um monte de possibilidades para criar diferentes estruturas de menu. Numerosos exemplos podem ser encontrados no site de demonstração: KLICK
FAQup
Q: eu não sou um programador. Não existe documentação mais simples?
A: Não, porque esta já é a documentação simples.
P: Como posso criar um menu suspenso?
A: isso não tem nada a ver com show_menu2. Para criar um menu suspenso, você só precisa ajustar o código CSS do respectivo modelo. Os ajustes necessários podem ser encontrados, por exemplo, no modelo” allcss2 ” do repositório Addon WebsiteBaker-> https://addon.websitebaker.org/
P: Por que o menu desaparece depois que eu uso a função de pesquisa em uma página multilíngue do WebsiteBaker?
A: as linhas necessárias estão faltando no modelo usado:
<input type="hidden" name="referrer" value="" />
<input type="hidden" name="referrer" value="<?php echo defined('REFERRER_ID')?REFERRER_ID:PAGE_ID;?>" />
Q: multilingue? Parece óptimo. Como o fazes?
A: https://help.websitebaker.org/en/designerguide/multilingual-websites.php
p: cada vez que uma página é chamada, o SM2 gera a seguinte mensagem de aviso:
“erro show_menu2: $aoptions é inválido. Sem bandeiras do grupo 1 fornecido!”
A: Os valores errados ou um número errado de valores foram passados para a função.
consulte a seção parâmetros para que os valores de sinalizador corretos passem para o parâmetro $aoptions.
P: Como faço para usar uma classe/imagem/cor/widget diferente para cada entrada em um menu?
A: Use a string de formato na string $aitemopen. Crie uma classe ou id exclusiva para cada item de menu e, em seguida, faça referência a esse item em seu CSS ou Javascript para fazer o que quiser.
Para adicionar uma classe única para cada item de menu (ou similar):
"<li><a href="" target="" class=" p"></a>"
… criando itens de menu como …
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top p45">Top Menu</a>
Referência a isso no seu CSS como:
a.p45 { color: red; }
Para adicionar um ID exclusivo para cada item de menu (ou similar):
"<li><a href="" target="" class=""></a>"
… criando itens de menu como …
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top">Top Menu</a>
faça referência a isso em seu CSS como:
a#p45 { color: red; }
observe que o ID só pode ser usado se esse menu for gerado e exibido uma vez apenas na página (porque os IDs HTML devem ser exclusivos em uma página).
FUNCTIONup
A chamada completa e os valores de parâmetro padrão para show_menu2 são como segue:
show_menu2( $aMenu = 0, $aStart = SM2_ROOT, $aMaxLevel = SM2_CURR+1, $aOptions = SM2_TRIM, $aItemOpen = '</a>', $aItemClose = '</li>', $aMenuOpen = '', $aMenuClose = '</ul>', $aTopItemOpen = false, $aTopMenuOpen = false);
a seção “Parâmetros” contém uma descrição detalhada de cada parâmetro individual.
cada parâmetro deve ser usado absolutamente corretamente. As seguintes regras podem ajudar:
$aMenu = 0 é o melhor valor na maioria dos casos.
$ aStart deve ser um ID de página ou um valor começando com “SM2_”.
$aMaxLevel só pode obter valores começando com “SM2_”.
$aOptions exceto por alguns casos especiais apenas valores começando com “SM2_” são permitidos.
todos os outros parâmetros contêm as tags (HTML) que controlam a saída do menu.
a partir de $aitemabra cada parâmetro pode ser passado o valor false para obter o respectivo valor padrão.
Isso pode ser usado, por exemplo, para criar uma lista numerada, enquanto os valores padrão são usadas ainda para os itens de menu individuais:
show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');
por Favor, note: até e incluindo $aOptions todos os parâmetros devem ser passados explicitamente!
saída HTML
a saída HTML depende em grande parte de quais parâmetros são passados para a função. Independentemente disso, as classes subsequentes são sempre usadas para cada menu, em que itens de menu individuais também podem ter várias classes, se necessário.
CLASSE | ATRIBUIÇÃO de |
---|---|
menu-superior | Apenas o primeiro item de menu. |
menu-pai | qualquer item do menu principal. |
menu-atual | apenas o item de menu da página atual. |
menu-irmão | Todos os “irmãos” da página atual. |
menu-criança | qualquer submenu da página atual. |
menu-expanda | qualquer menu que tenha submenus. |
menu-primeiro | O primeiro item de qualquer menu ou submenu. |
menu-último | o último item de qualquer menu ou submenu. |
menu-N | Cada item de menu, onde N representa o ABSOLUTO menu de profundidade, começando com 0, do respectivo item de menu. portanto, o nível superior é sempre menu-0, o próximo nível é menu-1 e assim por diante. |
menu-child-N | cada submenu das páginas atuais, onde o N representa a profundidade relativa do submenu, começando com 0. |
Exemplo de saída HTML:
<ul class="menu-top menu-0"> <li class="menu-0 menu-first"> ... </li> <li class="menu-0 menu-expand menu-parent"> ... <ul class="menu-1"> <li class="menu-1 menu-expand menu-first"> ... <ul class="menu-2"> <li class="menu-2 menu-first"> ... <li class="menu-2 menu-last"> ... </ul> </li> <li class="menu-1 menu-expand menu-parent"> ... <ul class="menu-2"> <li class="menu-2 menu-expand menu-current menu-first"> ... ** CURRENT PAGE ** <ul class="menu-3"> <li class="menu-3 menu-child menu-child-0 menu-first"> ... <ul class="menu-4"> <li class="menu-4 menu-child menu-child-1 menu-first"> ... </li> <li class="menu-4 menu-child menu-child-1 menu-last"> ... </li> </ul> </li> <li class="menu-3 menu-child menu-child-0 menu-last"> ... </li> </ul> </li> <li class="menu-2 menu-sibling menu-last"> ... </li> </ul> </li> <li class="menu-1"> ... </li> <li class="menu-1 menu-expand menu-last"> ... <ul class="menu-2"> <li class="menu-2 menu-first menu-last"> ... </li> </ul> </li> </ul> </li> <li class="menu-0 menu-last"> ... </li> </ul>
PARAMETERup
$aMenu
$aStart
SM2_ROOT+N
SM2_ROOT+1 Inicia uma camada abaixo da camada superior
SM2_ROOT+2 Começa dois níveis abaixo do nível superior
SM2_CURR+N
SM2_CURR+1 iniciam uma camada abaixo da camada atual com todos os subníveis.
page_id
todos os submenus desta página são exibidos. (O id de página pode ser determinado pela edição da página em administração de back-end, ele será exibido na barra de endereços do navegador: http://SITE/admin/pages/modify.php?page_id=35
$aMaxLevel
começa a partir do nível especificado em $aStart, até o nível especificado aqui.
SM2_ALL
SM2_CURR+N
SM2_CURR+3 todos os níveis pai + atual + 3
SM2_START+N
os níveis são exibidos independentemente do nível em que a página atual está.
SM2_START + 1 Nível de Início + um nível abaixo.
SM2_MAX + N
camadas abaixo do nível atual não são exibidas.
SM2_MAX+1 o nível inicial e um nível abaixo dele.
$aoptions
por exemplo, para definir TRIM e PRETTY, use: (SM2_TRIM / SM2_PRETTY).
grupo 1
——-
um sinalizador deve sempre ser especificado a partir deste grupo. Esses sinalizadores determinam como os elementos irmãos na árvore de menus são suprimidos na saída.
SM2_ALL
A-1 -> B-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3 A-2 -> B-3 -> B-4
SM2_TRIM
todos os submenus de itens que não estão no caminho.
são removidos.
A-1 -> B-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3 A-2
SM2_CRUMB
e todos os itens de menu que levam a ele.
A-1 -> B-2 -> C-2 (CURRENT)
SM2_SIBLING
A-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3
grupo 2
——-
esses sinalizadores são opcionais, eles podem ser combinados em qualquer número.
SM2_NUMCLASS
SM2_ALLINFO
isso causa um consumo de memória bastante alto e deve ser
deve, portanto, ser usado com cautela.
isso significa, por exemplo, que as palavras-chave, a descrição da página e
todas as outras informações disponíveis que normalmente não são
podem ser carregadas.
por favor note: este sinalizador deve ser definido na primeira chamada de schow_menu2
pode ser usado para o respectivo ID de menu, ou em conjunto com o
com SM2_NOCACHE, caso contrário, não tem efeito.
SM2_NOCACHE
SM2_PRETTY
quebras de Linha em uma forma legível. Isso é especialmente útil ao depurar a saída do menu.
SM2_BUFFER
SM2_CURRTREE
apenas os itens de menu da ramificação do menu atual são exibidos.
se necessário, este sinalizador pode ser combinado com qualquer sinalizador do grupo 1.
SM2_ESCAPE
isso pode ser necessário para instalações mais antigas do WebsiteBaker.
para gerar uma saída HTML válida.
SM2_SHOWHIDDEN
Use páginas privadas para o tempo em que você deseja que as páginas sejam ocultas, exceto quando ativas. No entanto, para compatibilidade com a versão 4.8, forneça esse sinalizador para permitir que páginas ocultas se tornem visíveis quando estiverem ativas.
SM2_XHTML_STRICT
SM2_NO_TITLE
para este parâmetro, há também um modo estendido onde as opções são passadas como uma matriz associativa. Consulte a seção Opções Avançadas para obter detalhes. Para a maioria dos aplicativos, no entanto, isso não é necessário.
$aItemOpen
se este parâmetro for definido como false, a string de formato padrão
‘</a>’ para garantir a compatibilidade com a função padrão WebsiteBaker show_menu().
como a formatação usando classes CSS geralmente é mais fácil quando aplicada à tag< a >, é recomendável usar a seguinte string de formato: ‘<li></a>’.
este parâmetro também pode ser usado como uma instância de uma classe de formatação para o menu. Uma descrição mais detalhada pode ser encontrada na seção FORMATTER. Se um formatador for especificado aqui, todos os argumentos após $aItemOpen serão ignorados.
$aItemClose
se este parâmetro for definido como false, o padrão ‘</li>’ é usado.
$aMenuOpen
se este parâmetro for definido como false, o valor padrão ” será usado.
$ aMenuClose
se este parâmetro for definido como false, o padrão ‘</ul>’ é usado.
$aTopItemOpen
$aTopMenuOpen
opções AVANÇADASUP
o parâmetro $aoptions pode ser usado de duas maneiras. Em primeiro lugar, conforme descrito acima na seção Parâmetros, esse tipo deve ser suficiente para a grande maioria dos casos de uso. No entanto, para poder abordar as opções especiais em casos especiais, os valores necessários devem ser fornecidos como uma matriz associativa.
observe: os sinalizadores SM2_* também são necessários aqui e devem ser passados como ‘sinalizadores’.
isso define um número de níveis que são sempre exibidos em relação ao nível de menu definido em $aStart. Isso faz com que o sinalizador SM2_TRIM seja ignorado para esses níveis.
para usar esta matriz, recomenda-se primeiro criá-la e, em seguida, fornecer o parâmetro $aoptions com a matriz criada:
$options = array('flags' => (SM2_TRIM|...), 'notrim' => 1); show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);
FORMATO STRINGSup
As seguintes tags podem ser usadas em cadeias de caracteres de formato para $aItemOpen e $aMenuOpen e deve ser substituído pelo texto correspondente.
<um> tag sem classe:
'<a href="" target="">' |
|
<um> com classe:
'<a href="" target="" class="">' |
|
<li> com classe:
'<li class="">' |
|
<ul> com classe:
'<ul class="">' |
|
Lista de classes para esta página | |
Texto do título de menu (HTML entidade escapou a menos que o SM2_NOESCAPE sinalizador está definido) |
|
O URL para um arquivo de imagem com o normal – representação | |
A URL para um arquivo de imagem com active/passe de exibição | |
título da Página de texto (HTML entidade escapou a menos que o SM2_NOESCAPE sinalizador está definido) |
|
A URL para uma página relacionadas com o arquivo de imagem | |
A URL das páginas para a <um> tag | |
A página de destino para a <um> tag | |
A Página de IDENTIFICAÇÃO do item de menu. | |
o ID da Página do item de menu pai. | |
você nível de página, este é o mesmo número usado na tag CSS “menu-n”. | |
número de irmãos do item de menu atual. | |
Número de todos os irmãos neste menu. | |
Condição (consulte a secção “Formatação Condicional” para mais detalhes) |
seguintes tags (etiquetas) SÓ estão disponíveis se o SM2_ALLINFO sinalizador está definido.
descrição de página | |
as Palavras-chave da página |
Formatação Condicional até
A instrução de formatação condicional pode assumir uma das seguintes formas:
B
esta pode ser qualquer string que não contenha o caractere ‘}’.
pode conter. Ele pode conter qualquer string de formato da seção
Strings de formato’, mas nenhum teste de condição adicional (porque o caractere ‘}’ não é permitido).
C
esta pode ser qualquer string que não contenha o caractere ‘}’.
pode conter. Ele pode conter qualquer string de formato da seção
Strings de formato’, mas nenhum teste de condição adicional (porque o caractere ‘}’ não é permitido).
a condição é uma combinação de uma ou mais comparações booleanas.
se mais de uma comparação for necessária, ela deve ser combinada com as outras comparações
pode ser vinculada usando || (booleano ou – OR) ou && (booleano e – AND).
uma única comparação consiste no operando esquerdo, no operador e no operando direito.
por exemplo, X = = Y – onde X é o operando esquerdo, = = o operador e Y o operando direito.
classe | verifique se esta classe existe. Apenas o “= = “e”!= “operadores são permitidos. Nesse caso, os operadores têm o significado “contém” ou “não contém” em vez de “é igual” ou “não é igual”. |
nível | verificando o nível da página. |
Sib | verifique o número de irmãos na página atual. |
sibCount | Verificar o número total de irmãos no menu atual. |
id | verifique o ID da página. |
alvo | verificação da especificação do alvo. |
< | Menos de |
<= | Menor ou igual a |
== | Igual |
!= | Não é igual |
>= | Maior que ou igual a |
> | Maior que |
classe | um dos nomes de classe ” menu -* “conforme especificado na seção” saída”. |
nível | Verificar o nível de página de acordo com os seguintes valores:
|
id | Verifique o id de página de acordo com os seguintes valores:
|
sib | Um inteiro positivo, ou “sibCount” para verificar o número de irmãos neste menu. |
sibCount | Um número inteiro positivo |
alvo | Uma cadeia de caracteres que representa uma possível especificação de destino. |
Tem um submenu | |
Se a primeira entrada de um menu | |
NÃO É o primeiro item de um menu | |
Se a última entrada no menu | |
Localizado no nível superior | |
NÃO É no nível superior | |
Se a segunda entrada em um menu é | |
Se em um cardápio com mais de uma entrada | |
É em um menu que não tem exatamente 2 itens | |
É em um irmão ou de menu no submenu de um menu irmão | |
É o principal ponto de a corrente de identificação | |
A seqüência de caracteres ‘_self’ está contido no atributo de destino. |
se uma cláusula else for adicionada, ela será executada em todos os outros casos.
por exemplo, “foo” é sempre executado quando a verificação if está errada, então:
NÃO É o segundo item do menu | |
NÃO está em um menu com mais de duas entradas |
é a primeira entrada OU é a quarta ou superior entrada no menu | |
Se a corrente de entrada é E tem submenus |
por Favor, note:
Todas as verificações serão realizadas na ordem em que eles são observados, porque:
- não há verificação de possíveis loops (todas as verificações são sempre executadas).
- as verificações não são agrupadas (parênteses de verificações não são suportados)
- ambas as coisas têm o mesmo valor.
FORMATTERup
Atenção: Este é um recurso avançado e raramente usado!
com amplo conhecimento em programação PHP, é possível usar a formatação predefinida
de show_menu2 com a sua própria.
na inclusão.php de show_menu2 você pode ver como escrever o formatador.
a API que deve ser usada se parece com isso:
class SM2_Formatter{ // called once before any menu is processed to allow object initialization function initialize() { } // called to open the menu list function startList($aPage, $aUrl) { } // called to open the menu item function startItem($aPage, $aUrl, $aCurrSib, $aSibCount) { } // called to close the menu item function finishItem() { } // called to close the menu list function finishList() { } // called once after all menu has been processed to allow object finalization function finalize() { } // called once after finalize() if the SM2_NOOUTPUT flag is used function getOutput() { }};
WebsiteBakeris lançado sob a GNU General Public License