vários Menus

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:

1. No back-end do administrador do WB: Opções -> Mostrar opções avançadas -> opções de Pesquisa -> Cabeçalho – insira a seguinte linha imediatamente após a abertura <formulário> tag:

<input type="hidden" name="referrer" value="" />

2. insira a seguinte linha no índice.php do modelo usado imediatamente após a abertura< form > tag da pesquisa:

<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.
As seguintes classes só são adicionados se a SM2_NUMCLASS sinalizador está definido:
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

número do Menu. Isso é útil para usar vários menus em uma página. Menu número 0 é o menu padrão da página atual, SM2_ALLMENU retorna todos os menus usados no sistema.

$aStart

especifica o nível a partir do qual a criação do menu deve começar. Na maioria dos casos, este será o nível superior do menu a ser exibido. Um dos valores a seguir pode ser usado:

SM2_ROOT+N

Começa a N níveis abaixo do nível superior, por exemplo:

SM2_ROOT Começa no nível superior
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

Começa a N níveis abaixo do nível atual, por exemplo:

SM2_CURR Começa na camada atual. Todos os irmãos do nível atual
SM2_CURR+1 iniciam uma camada abaixo da camada atual com todos os subníveis.

page_id

usa a página com o ID de página especificado como o elemento pai.
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

O número máximo de níveis que podem ser exibidos. A exibição
começa a partir do nível especificado em $aStart, até o nível especificado aqui.
SM2_ALL

nenhuma restrição, todos os níveis são exibidos.

SM2_CURR+N

sempre mostra a página atual + N níveis.

camada de corrente SM2_CURR (sem subcamada)
SM2_CURR+3 todos os níveis pai + atual + 3

SM2_START+N

sempre começa no nível inicial + n níveis.
os níveis são exibidos independentemente do nível em que a página atual está.

SM2_START um único nível a partir do nível inicial.
SM2_START + 1 Nível de Início + um nível abaixo.

SM2_MAX + N

exibe um máximo de N níveis a partir do nível inicial.
camadas abaixo do nível atual não são exibidas.

SM2_MAX apenas o plano inicial (mesmo efeito que SM2_START)
SM2_MAX+1 o nível inicial e um nível abaixo dele.

$aoptions

bandeiras especiais para diferentes opções de geração de menu. Eles podem ser combinados uns com os outros usando um ou link (|).
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

mostra todos os ramos da árvore de menus

 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

mostra todos os menus irmãos da Página no caminho atual.
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

exibe o caminho breadcrumb do menu, ou seja, o item de Menu atual
e todos os itens de menu que levam a ele.

A-1 -> B-2 -> C-2 (CURRENT)

SM2_SIBLING

como SM2_TRIM, mas apenas menus irmãos da página atual são exibidos. Todos os outros itens são suprimidos.

 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

Adiciona as classes de menu numeradas “menu-N “e”menu-child-N”.

SM2_ALLINFO

carrega todos os campos da tabela de páginas do banco de dados.
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

os dados lidos do banco de dados não são reutilizados quando show_menu2 é chamado novamente, mas é lido novamente a partir do banco de dados.

SM2_PRETTY

Traz a saída HTML do menu com espaços em branco e
quebras de Linha em uma forma legível. Isso é especialmente útil ao depurar a saída do menu.

SM2_BUFFER

não produz o código HTML diretamente, mas o salva internamente e o produz como uma string completa.

SM2_CURRTREE

exclui todos os outros menus de nível superior da visualização.
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

aplica htmlspecialchars à string do menu.
isso pode ser necessário para instalações mais antigas do WebsiteBaker.
para gerar uma saída HTML válida.

SM2_SHOWHIDDEN

as páginas ocultas geralmente ficam ocultas o tempo todo, inclusive quando estão ativas (ou seja, página atual ou página pai).
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

garante a compatibilidade XHTML dos links removendo a especificação de destino em links formatados com ou e inserindo o argumento title=””. Para links compilados manualmente, o designer é responsável pela conformidade XHTML.

SM2_NO_TITLE

suprime a saída do conteúdo do atributo Title para links ou formatados.
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

isso define a string de formato com a qual cada item de menu individual é iniciado. Uma string de formato diferente pode ser definida para o primeiro item de menu usando $aTopItemOpen.
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

esta string completa cada item de menu. Observe: esta não é uma string de formato e nenhuma palavra-chave será substituída!
se este parâmetro for definido como false, o padrão ‘</li>’ é usado.

$aMenuOpen

esta string de formato abre uma lista de itens de menu. Uma string de formato diferente pode ser definida para o primeiro menu usando $aTopMenuOpen.
se este parâmetro for definido como false, o valor padrão ” será usado.

$ aMenuClose

esta string completa cada menu. Observe: esta não é uma string de formato e nenhuma palavra-chave será substituída!
se este parâmetro for definido como false, o padrão ‘</ul>’ é usado.

$aTopItemOpen

a string de formato para o primeiro item de menu. Se esse parâmetro for definido como false, a mesma string de formato será usada como para $aItemOpen.

$aTopMenuOpen

a string de formato para o primeiro menu. Se este parâmetro for definido como false, a mesma string de formato que $aMenuOpen é usada.

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’.

‘flags’

**CONCELARY REQUIRED * * estes são os flags descritos acima na seção parâmetros em $aoptions.

‘notrim’

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:


Um

A condição. Veja abaixo para mais detalhes.

B

a expressão usada quando a condição é atendida.
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

a expressão usada quando a condição não é atendida.
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.

operando à esquerda. Deve ser uma das seguintes palavras-chave:
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.
operador. Deve ser um dos seguintes:
< Menos de
<= Menor ou igual a
== Igual
!= Não é igual
>= Maior que ou igual a
> Maior que
operando da Direita. O tipo deste operando depende da palavra-chave usada para o operando esquerdo.
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:

  • <número> absoluta de nível de página
  • raiz é o nível superior da página
  • a avó de um nível de página Acima página principal nível
  • pai-mãe ao nível da página
  • atual o atual nível de página
  • criança subordinados de nível de página
id Verifique o id de página de acordo com os seguintes valores:

  • <número> a página absoluto id
  • pai-mãe id da página
  • atual a atual página de identificação
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.
os exemplos a seguir resultam em” true ” e a expressão {exp} é executada se true:
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
Em comparações múltiplas, a expressão “exp” só é executado se a:
é 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

Deixe uma resposta

O seu endereço de email não será publicado.