Flere Menyer

show_menu2, versjon 4.9 x

Show_Menu2 Er en kodebit FOR CMS WebsiteBaker. Siden WebsiteBaker 2.7 det følger MED CMS.
den tidligere show_menu-funksjonen er helt erstattet og utvidet med show_menu2. Alle data som kreves for å opprette menyen, genereres av en enkelt databasespørring. Ved omfattende justeringsmuligheter av den genererte HTML-koden alle mulige menytyper(lister, brødsmuler, områdekart, etc.) kan genereres.

  • Installasjon
  • Ved Hjelp Av Show_Menu2
  • FAQ
  • Funksjon
  • HTML-Utgang
  • Parameter
  • Avanserte Alternativer
  • Formatstrenger
  • betinget formatering
  • Formater

installationup

siden show_menu2 vanligvis Finnes i websitebaker, er det ikke nødvendig med installasjon. Hvis det i motsetning til forventningene ikke eksisterer, kan du laste den ned her.

Bruke SHOW_MENU2up

for å bruke show_menu2 må du endre malen der du vil at menyen skal vises. Merk: hvis gamle menysamtaler erstattes, må de tilsvarende nye parametrene som show_menu2 trenger også brukes.

i de fleste tilfeller er standardanropet med minst 4 parametere for show_menu2 tilstrekkelig. I dette tilfellet brukes standardverdiene, dette oppretter en meny som viser gjeldende side og undersidene på gjeldende side:

show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);

merk: anropet til show_menu2 er PHP og må normalt være vedlagt PHP-kodetegn (med mindre anropet allerede er inne I PHP-kode):

 <?php show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM); ?>

denne standardmenyen lager allerede en komplett meny på listebasis med flere klasser som tillater enkel formatering ved HJELP AV CSS. For eksempel legges klassen «meny-nåværende» til< li > – taggen for det nåværende menyelementet. I tillegg inneholder hvert menyelement av underelementene klassen «meny-utvid». Dette gjør det mulig å lage svært differensierte CSS-regler for hvert menyelement.
for eksempel:

li.menu-expand { font-weight: bold; }li.menu-current { background: red; }

seksjonen «HTML Output» inneholder en detaljert beskrivelse av hvilke klasser som er tildelt hvilket element. Ved å bruke ulike parametere i show_menu2 funksjonskall, er det også mulig å lage ganske omfattende og forskjellige menystrukturer. Hvis du for eksempel bare vil vise menyelementer fra øverste nivå i menystrukturen, kan du bruke følgende samtale:

show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);

eller, for eksempel, for å vise opptil to undernivåer av gjeldende side:

show_menu2(0, SM2_CURR+1, SM2_CURR+2, SM2_TRIM);

det er mange muligheter for å lage forskjellige menystrukturer. Mange eksempler finner du på demo nettsiden: KLICK

FAQup

Q: jeg er ikke en programmerer. Finnes det enklere dokumentasjon?
A: Nei, fordi dette allerede er den enkle dokumentasjonen.

Spørsmål: Hvordan oppretter jeg en rullegardinmeny?
A: Dette har ingenting å gjøre med show_menu2. For å opprette en rullegardinmeny trenger du bare å justere CSS-koden til den respektive malen. De nødvendige justeringer kan finnes f. eks i» allcss2 » mal Fra WebsiteBaker Addon Repository -> https://addon.websitebaker.org/

Spørsmål: hvorfor forsvinner menyen etter at jeg har brukt søkefunksjonen på en flerspråklig WebsiteBaker-side?
A: de nødvendige linjene mangler i malen som brukes:

1. I WB Admin Backend: Alternativer- > Vis avanserte alternativer- > Søkealternativer- > Header-sett inn følgende linje rett etter åpningen < skjema > tag:

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

2. sett inn følgende linje i indeksen.php av den brukte malen umiddelbart etter åpningen <skjema > tag av søket:

<input type="hidden" name="referrer" value="<?php echo defined('REFERRER_ID')?REFERRER_ID:PAGE_ID;?>" />

Spørsmål: Flerspråklig? Det høres flott ut. Hvordan gjør du det?
A: https://help.websitebaker.org/en/designerguide/multilingual-websites.php

Q: HVER gang en side kalles, genererer SM2 følgende advarsel:
» show_menu2 feil: $aOptions er ugyldig. Ingen flagg fra gruppe 1 følger med!»
A: Feil verdier eller feil antall verdier ble sendt til funksjonen.
Se DELEN PARAMETERE for de riktige flaggverdiene som skal overføres til parameteren $aOptions.

Spørsmål: hvordan bruker jeg en annen klasse / bilde / farge / widget for hver oppføring i en meny?
A: Bruk formatstrengen i $aitemopen-strengen. Lag en unik klasse eller id for hvert menyelement, og deretter referere til det elementet I CSS Eller Javascript for å gjøre hva du vil.
for å legge til en unik klasse for hvert menyelement (eller lignende):

"<li><a href="" target="" class=" p"></a>"

… opprette menyelementer som …

<li><a href="/pages/foo/bar.php" target="_top" class="menu-top p45">Top Menu</a>

Referanse dette i CSS som:

a.p45 { color: red; }

for å legge til en unik ID for hvert menyelement (eller lignende):

"<li><a href="" target="" class=""></a>"

… opprette menyelementer som …

<li><a href="/pages/foo/bar.php" target="_top" class="menu-top">Top Menu</a>

Referanse dette i CSS som:

a#p45 { color: red; }

Merk AT ID-EN bare kan brukes hvis den menyen genereres og vises en gang bare på siden (FORDI HTML-ID-ER må være unike på en side).

FUNCTIONup

det komplette anropet og standardparameterverdiene for show_menu2 er som følger:

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);

delen «Parametere» inneholder en detaljert beskrivelse av hver enkelt parameter.
Hver parameter må brukes helt riktig. Følgende regler kan hjelpe:

$aMenu = 0 er den beste verdien i de fleste tilfeller.
$ aStart må enten være en side-ID eller en verdi som starter med «SM2_».
$aMaxLevel kan bare få verdier som starter med «SM2_».
$aOptions bortsett fra noen få spesielle tilfeller er bare verdier som begynner med «SM2_» tillatt.
alle andre parametere inneholder (HTML) kodene som styrer utdataene på menyen.
Starter fra $aItemOpen hver parameter kan sendes verdien false for å få den respektive standardverdien.

Dette kan for eksempel brukes til å lage en nummerert liste, mens standardverdiene fortsatt brukes for de enkelte menyelementene:

show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');

Merk: opp til og med $aOptions alle parametere må sendes eksplisitt!

HTML Outputup

HTML-utgangen avhenger i stor grad av hvilke parametere som sendes til funksjonen. Uavhengig av dette brukes etterfølgende klasser alltid for hver meny, hvor individuelle menyelementer også kan ha flere klasser om nødvendig.

KLASSE OPPGAVE
meny-topp Bare det første menyelementet.
meny-forelder alle hovedmenyelementer.
meny-nåværende Bare menyelementet på gjeldende side.
meny-søsken Alle «søsken» på gjeldende side.
meny-barn alle undermenyer på gjeldende side.
meny-utvid enhver meny som har undermenyer.
meny-først det første elementet i en meny eller undermeny.
meny-siste det siste elementet i en meny eller undermeny.
følgende klasser legges bare til HVIS sm2_numclass-flagget er angitt:
meny-n Hvert menyelement, Der N står FOR DEN ABSOLUTTE menydybden, som starter med 0, for det respektive menyelementet.
så toppnivået er alltid meny-0, neste nivå er meny-1, og så videre.
meny-barn-n Hver undermeny av de gjeldende sidene, Der N står FOR DEN RELATIVE dybden av undermenyen, begynner med 0.

Eksempel PÅ HTML-utgang:

<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

Menynummer. Dette er nyttig å bruke flere menyer på en side. Meny nummer 0 er standardmenyen på gjeldende side, sm2_allmenu returnerer alle menyer som brukes i systemet.

$ aStart

Angir nivået som opprettelsen av menyen skal begynne fra. I de fleste tilfeller vil dette være toppnivået på menyen som skal vises. En av følgende verdier kan brukes:

SM2_ROOT+N

Starter N nivåer under toppnivået, f.eks:

SM2_ROOT Starter på toppnivået
SM2_ROOT+1 Starter et lag under det øverste laget
SM2_ROOT+2 Starter to nivåer under toppnivået

SM2_CURR+N

starter n nivåer under gjeldende nivå, f. eks:

SM2_CURR Starter På Gjeldende Lag. Alle søsken på gjeldende nivå
SM2_CURR+1 Starter et lag under gjeldende lag med alle undernivåer.

page_id

Bruker siden med den angitte side-iden som overordnet element.
Alle undermenyer på denne siden vises. (Siden id kan bestemmes ved å redigere siden i admin backend, vil det bli vist i adresselinjen i nettleseren: http://SITE/admin/pages/modify.php?page_id=35

$aMaxLevel

maksimalt antall nivåer som kan vises. Skjermen
starter fra nivået som er angitt i $aStart, opp til nivået som er angitt her.
SM2_ALL

ingen begrensning, alle nivåer vises.

SM2_CURR + N

viser alltid gjeldende side + n nivåer.

SM2_CURR Nåværende lag (ingen underlag)
SM2_CURR+3 alle foreldre + nåværende + 3 undernivåer

SM2_START + N

Starter alltid på startnivå + N nivåer.
nivåene vises uansett hvilket nivå den gjeldende siden er på.

SM2_START et enkelt nivå fra startnivået.
SM2_START+1 Startnivå + ett nivå under.

SM2_MAX + N

Viser maksimalt N nivåer fra startnivået.
Lag under gjeldende nivå vises ikke.

SM2_MAX bare startplanet (samme effekt SOM SM2_START)
SM2_MAX+1 startnivået og ett nivå under det.

$Aoptions

Spesielle flagg for ulike menygenereringsalternativer. De kan kombineres med hverandre ved HJELP AV EN eller lenke ( / ).
for eksempel, for å definere BÅDE TRIM og PEN, bruk: (SM2_TRIM / SM2_PRETTY).

GRUPPE 1
——-
Ett flagg må alltid spesifiseres fra denne gruppen. Disse flaggene bestemmer hvordan søskenelementene i menytreet undertrykkes i utdataene.

SM2_ALL

Viser alle grener av menytreet

 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

Viser alle søskenmenyer på siden i den gjeldende banen.
Alle undermenyer med elementer som ikke er i banen.
er fjernet .

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

SM2_CRUMB

Viser brødsmulebanen på menyen, dvs. Det nåværende
Menyelementet og alle menyelementer som fører til det.

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

SM2_SIBLING

SOM SM2_TRIM, men bare søskenmenyer på gjeldende side vises. Alle andre elementer er undertrykt.

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

GRUPPE 2
——-
disse flaggene er valgfrie, de kan kombineres i et hvilket som helst nummer.

SM2_NUMCLASS

Legger til de nummererte menyklassene «meny-N» og «meny-barn-N».

SM2_ALLINFO

Laster alle felt fra sidetabellen i databasen.
dette medfører et ganske høyt minneforbruk og bør derfor brukes med forsiktighet
.
dette betyr for eksempel at søkeordene, sidebeskrivelsen og
all annen tilgjengelig informasjon som normalt ikke er
, kan lastes inn.
Vær oppmerksom: dette flagget må settes VED første anrop av schow_menu2
kan brukes til den respektive meny-ID, eller i forbindelse med
MED SM2_NOCACHE, ellers har det ingen effekt.

SM2_NOCACHE

dataene som leses fra databasen, brukes ikke på nytt når show_menu2 kalles på nytt, men leses på nytt fra databasen.

SM2_PRETTY

Bringer HTML-utgangen på menyen med blanke og
Linjeskift i en lesbar form. Dette er spesielt nyttig når du feilsøker menyutgangen.

SM2_BUFFER

sender IKKE UT HTML-koden direkte, men lagrer den internt og sender den ut som en komplett streng.

SM2_CURRTREE

Utelukker alle andre toppnivåmenyer fra visning.
Bare menyelementer i den gjeldende menygrenen vises.
om nødvendig kan dette flagget kombineres med hvilket som helst flagg fra gruppe 1.

SM2_ESCAPE

Bruker htmlspecialchars til menystrengen.
Dette kan være nødvendig for eldre WebsiteBaker installasjoner.
for å generere en gyldig HTML-utgang.

SM2_SHOWHIDDEN

Skjulte sider er vanligvis skjult hele tiden, inkludert når de er aktive(dvs. gjeldende side eller en overordnet side).
Bruk private sider når du vil at sider skal skjules, unntatt når de er aktive. Men for kompatibilitet med versjon 4.8, angi dette flagget for å aktivere skjulte sider for å bli synlig når de er aktive.

SM2_XHTML_STRICT

Sikrer xhtml-kompatibiliteten til koblingene ved å fjerne målspesifikasjonen i koblinger formatert med or og sette inn argumentet title=»». For manuelt kompilerte koblinger er designeren ansvarlig FOR xhtml-samsvaret.

SM2_NO_TITLE

Undertrykker utdataene for Innholdet I Tittelattributtet for eller formaterte koblinger.
for denne parameteren er det også en utvidet modus der alternativene sendes som en assosiativ matrise. Se DELEN AVANSERTE ALTERNATIVER for detaljer. For de fleste applikasjoner er dette IMIDLERTID ikke nødvendig.

$aItemOpen

dette definerer formatstrengen som hvert enkelt menyelement startes med. En annen formatstreng kan defineres for det aller første menyelementet ved hjelp av $atopitemopen.
hvis denne parameteren er satt til usann, vil standardformatstrengen
‘</a>’ sikre kompatibilitet med WebsiteBaker standard funksjon show_menu ().
siden formatering ved HJELP AV CSS-klasser ofte er enklere når den brukes på< a > – taggen, anbefales det å bruke følgende formatstreng: ‘< li > < / a>’.
denne parameteren kan også brukes som en forekomst av en formateringsklasse for menyen. En mer detaljert beskrivelse finner DU I FORMATTER-delen. Hvis en formatter er angitt her, ignoreres alle argumenter etter $aitemopen.

$aItemClose

denne strengen fullfører hvert menyelement. Merk: dette er ikke en formatstreng og ingen søkeord vil bli erstattet!
hvis denne parameteren er satt til false, brukes standard ‘</li>’.

$aMenuOpen

denne formatstrengen åpner en liste over menyelementer. En annen formatstreng kan defineres for den forste menyen ved hjelp av $aTopMenuOpen.
hvis denne parameteren er satt til false, brukes standardverdien».

$aMenuClose

denne strengen fullfører hver meny. Merk: dette er ikke en formatstreng og ingen søkeord vil bli erstattet!
hvis denne parameteren er satt til false, brukes standard ‘</ul>’.

$aTopItemOpen

formatstrengen for det aller første menyelementet. Hvis denne parameteren er satt til false, brukes samme formatstreng som for $aitemopen.

$aTopMenuOpen

formatstrengen for den første menyen. Hvis denne parameteren er satt til false, brukes samme formatstreng som $aMenuOpen.

AVANSERTE OPTIONSup

parameteren $aoptions kan brukes på to måter. For det første, som beskrevet ovenfor I PARAMETERSEKSJONEN, bør denne typen være tilstrekkelig for de aller fleste brukssaker. For å kunne adressere de spesielle alternativene i spesielle tilfeller må de nødvendige verdiene imidlertid oppgis som en assosiativ matrise.
Merk: SM2_ * – flaggene er også påkrevd her og må sendes som ‘flagg’.

‘flagg’

**CONCELARY KREVES** dette er flaggene beskrevet ovenfor i DELEN PARAMETERE under $aOptions.

‘notrim’

dette definerer et antall nivåer som alltid vises i forhold til menynivået definert i $aStart. DETTE fører til at sm2_trim-flagget ignoreres for disse nivåene.

for å bruke denne matrisen anbefales det først å opprette den og deretter levere $aOptions-parameteren med den opprettede matrisen:

$options = array('flags' => (SM2_TRIM|...), 'notrim' => 1); show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);

FORMAT STRINGSup

følgende koder kan brukes i formatstrengene for $aItemOpen og $aMenuOpen og bør erstattes av den tilsvarende teksten.

<en> tag uten klasse:

'<a href="" target="">'
<en> tag med klasse:

'<a href="" target="" class="">'
<li> tag med klasse:

'<li class="">'
<ul> tag med klasse:

'<ul class="">'
liste over klasser for denne siden
Tekst på menytittelen
(HTML-enhet rømte med mindre sm2_noescape-flagget er satt)
URL-ADRESSEN til en bildefil med normal-representasjon
URL-ADRESSEN til en bildefil med aktiv / hover-skjerm
Sidetitteltekst
(HTML-enhet rømte med mindre sm2_noescape-flagget er satt)
URL-ADRESSEN til en siderelatert bildefil
NETTADRESSEN til sidene for <a> – taggen
sidemålet for <a> – taggen
Side-ID for gjeldende menyelement.
Side-IDEN til det overordnede menyelementet.
du sidenivå, dette er det samme nummeret som brukes i» menu-N » CSS tag.
Antall søsken av gjeldende menyelement.
Antall søsken i denne menyen.
Tilstand (se avsnittet «Betinget Formatering» for detaljer)

følgende koder er bare tilgjengelige hvis sm2_allinfo-flagget er angitt.

sidebeskrivelse
Nøkkelord på siden

Betinget Formatering opp

betinget formatering-setningen kan ta ett av følgende skjemaer:


A

tilstanden. Se nedenfor for detaljer.

B

uttrykket som brukes når betingelsen er oppfylt.
dette kan være en streng som ikke inneholder tegnet’}’.
kan inneholde. Den kan inneholde hvilken som helst formatstreng fra delen
Formatstrenger’, men ingen ytterligere tilstandstest (fordi tegnet’} ‘ ikke er tillatt).

C

uttrykket som brukes når betingelsen ikke er oppfylt.
dette kan være en streng som ikke inneholder tegnet’}’.
kan inneholde. Den kan inneholde hvilken som helst formatstreng fra delen
Formatstrenger’, men ingen ytterligere tilstandstest (fordi tegnet’} ‘ ikke er tillatt).

betingelsen er en kombinasjon av en eller flere boolske sammenligninger.
hvis mer enn en sammenligning er nødvendig, må den kombineres med de andre sammenligningene
kan kobles ved hjelp av || (boolsk eller – OR) eller && (boolsk og – AND).

en enkelt sammenligning består av venstre operand, operatør og høyre operand.
F. Eks. X = = Y – Der X er venstre operand, = = operatoren og Y høyre operand.

Venstre operand. Må være ett av følgende nøkkelord:
klasse Kontroller om denne klassen finnes. Bare «= = «og»!= «operatører er tillatt. I dette tilfellet har operatørene betydningen «inneholder» eller «ikke inneholder» i stedet for «er lik» eller «er ikke lik».
nivå Kontrollerer sidenivå.
sib Kontroller antall søsken på gjeldende side.
sibCount Kontroller totalt antall søsken i gjeldende meny.
id Kontroller sidens id.
mål Verifisering av målspesifikasjonen.

Operatør. Må være ett av følgende:
< Mindre enn
<= Mindre enn eller lik
== Lik
!= Ikke lik
>= Større enn eller lik
> Større enn
høyre operand. Typen av denne operand avhenger av søkeordet som brukes til venstre operand.
klasse Et Av Klassenavnene «menu – *» som angitt i «Output» – delen.
nivå Kontroller sidenivået mot følgende verdier:

  • <tall> det absolutte sidenivået
  • rot er toppnivået på siden
  • bestemor et sidenivå Over overordnet sidenivå
  • foreldre overordnet sidenivå
  • gjeldende gjeldende sidenivå
  • underordnet underordnet sidenivå
id Kontroller side-iden mot følgende verdier:

  • < tall> den absolutte side-id
  • foreldre den overordnede side-id
  • gjeldende gjeldende side-id
sib et positivt heltall, eller «sibCount» for å sjekke antall søsken i denne menyen.
sibCount et positivt heltall
mål en streng som representerer en mulig målspesifikasjon.
følgende eksempler resulterer i «true» og uttrykket {exp} utføres hvis true:
Har en undermeny
Hvis den første oppføringen i en meny er
er IKKE det første elementet i en meny
hvis den siste oppføringen i en meny er
Ligger på øverste nivå
ikke på toppnivå
Hvis den andre oppføringen i en meny er
hvis du er i en meny med mer enn en oppføring
er i en meny det har ikke nøyaktig 2 elementer
er i en søskenmeny eller i undermenyen i en søskenmeny
er overordnet punkt for gjeldende id
strengen ‘_self’ finnes i målattributtet.

hvis en annen klausul legges til, vil den bli utført i alle andre tilfeller.
for eksempel blir» foo » alltid utført når hvis sjekken er feil, så:

er IKKE det andre elementet i menyen
er IKKE i en meny med mer enn to oppføringer
i flere sammenligninger utføres uttrykket «exp» bare hvis:
er den første oppføringen eller er den fjerde eller høyere oppføringen i menyen
hvis gjeldende oppføring er og har undermenyer

Vennligst merk:
alle sjekker vil bli utført i den rekkefølgen de er notert, fordi:

  • det er ingen sjekk for mulige løkker(alle sjekker utføres alltid).
  • Sjekker er ikke gruppert (parenteser av sjekker støttes ikke)
  • Begge disse tingene har samme verdi.

Formaterup

Obs: dette er en avansert og sjelden brukt funksjon!

med omfattende KUNNSKAP I PHP programmering er det mulig å bruke forhåndsdefinert
Formatering av show_menu2 med din egen.
i inkluder.php av show_menu2 du kan se hvordan du skriver formatter.
API-EN som må brukes ser slik ut:

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 utgitt UNDER GNU General Public License

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.