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:
<input type="hidden" name="referrer" value="" />
<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. |
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
$ aStart
SM2_ROOT+N
SM2_ROOT+1 Starter et lag under det øverste laget
SM2_ROOT+2 Starter to nivåer under toppnivået
SM2_CURR+N
SM2_CURR+1 Starter et lag under gjeldende lag med alle undernivåer.
page_id
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
starter fra nivået som er angitt i $aStart, opp til nivået som er angitt her.
SM2_ALL
SM2_CURR + N
SM2_CURR+3 alle foreldre + nåværende + 3 undernivåer
SM2_START + N
nivåene vises uansett hvilket nivå den gjeldende siden er på.
SM2_START+1 Startnivå + ett nivå under.
SM2_MAX + N
Lag under gjeldende nivå vises ikke.
SM2_MAX+1 startnivået og ett nivå under det.
$Aoptions
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
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
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
Menyelementet og alle menyelementer som fører til det.
A-1 -> B-2 -> C-2 (CURRENT)
SM2_SIBLING
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
SM2_ALLINFO
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
SM2_PRETTY
Linjeskift i en lesbar form. Dette er spesielt nyttig når du feilsøker menyutgangen.
SM2_BUFFER
SM2_CURRTREE
Bare menyelementer i den gjeldende menygrenen vises.
om nødvendig kan dette flagget kombineres med hvilket som helst flagg fra gruppe 1.
SM2_ESCAPE
Dette kan være nødvendig for eldre WebsiteBaker installasjoner.
for å generere en gyldig HTML-utgang.
SM2_SHOWHIDDEN
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
SM2_NO_TITLE
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
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
hvis denne parameteren er satt til false, brukes standard ‘</li>’.
$aMenuOpen
hvis denne parameteren er satt til false, brukes standardverdien».
$aMenuClose
hvis denne parameteren er satt til false, brukes standard ‘</ul>’.
$aTopItemOpen
$aTopMenuOpen
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’.
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:
B
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
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.
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. |
< | Mindre enn |
<= | Mindre enn eller lik |
== | Lik |
!= | Ikke lik |
>= | Større enn eller lik |
> | Større enn |
klasse | Et Av Klassenavnene «menu – *» som angitt i «Output» – delen. |
nivå | Kontroller sidenivået mot følgende verdier:
|
id | Kontroller side-iden mot følgende verdier:
|
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. |
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 |
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