vis_menu2, version 4.9
Vis_menu2 er et kodestykke til CMS Hjemmesidebaker. Siden Hjemmesidebaker 2.7 det er inkluderet i CMS.
den tidligere vis_menu funktion er helt erstattet og udvidet med vis_menu2. Alle data, der kræves for at oprette menuen, genereres af en enkelt databaseforespørgsel. Ved omfattende justeringsmuligheder for den genererede HTML-kode alle mulige menutyper (lister, brødkrummer, sitemaps osv.) kan genereres .
- Installation
- brug af Visning_menu2
- Ofte stillede spørgsmål
- funktion
- HTML-udgang
- Parameter
- Avancerede indstillinger
- Formatstrenge
- betinget formatering
- Formatter
installationup
da visning2 normalt findes på hjemmesidebaker, kræves der ingen installation. Hvis det i modsætning til forventningerne ikke eksisterer, kan du hente det her.
brug af Vis_menu2up
for at bruge vis_menu2 skal du ændre skabelonen, hvor menuen skal vises. Bemærk: Hvis gamle menuopkald udskiftes, skal de tilsvarende nye parametre, som vis_menu2 har brug for, også bruges.
i de fleste tilfælde er standardopkaldet med mindst 4 parametre for visning2 tilstrækkeligt. I dette tilfælde bruges standardværdierne, dette opretter en menu, der viser den aktuelle side og undersiderne på den aktuelle side:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
Bemærk: opkaldet til vis_menu2 er PHP og skal normalt vedlægges PHP-kodetegn (medmindre opkaldet allerede er inde i PHP-kode):
<?php show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM); ?>
denne standardmenu opretter allerede en komplet menu på listebasis med flere klasser, der tillader nem formatering ved hjælp af CSS. For eksempel tilføjes klassen “menu-current” til <li> tagget af det aktuelle menupunkt. Derudover indeholder hvert menupunkt i underemnerne klassen”menu-Udvid”. Dette gør det muligt at oprette meget differentierede CSS-regler for hvert menupunkt.
for eksempel:
li.menu-expand { font-weight: bold; }li.menu-current { background: red; }
afsnittet” HTML Output ” indeholder en detaljeret beskrivelse af hvilke klasser der er tildelt hvilket element. Ved at bruge forskellige parametre i funktionsopkaldet vis_menu2 er det også muligt at oprette ganske omfattende og forskellige menustrukturer. Hvis du f. eks. kun vil vise menupunkter fra det øverste niveau i menustrukturen, kan du bruge følgende opkald:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
eller for eksempel at vise op til to underniveauer på den aktuelle side:
show_menu2(0, SM2_CURR+1, SM2_CURR+2, SM2_TRIM);
der er mange muligheder for at oprette forskellige menustrukturer. Talrige eksempler kan findes på demo hjemmeside: KLICK
Fakp
spørgsmål: Jeg er ikke en programmør. Er der ingen enklere dokumentation?
A: Nej, fordi dette allerede er den enkle dokumentation.
spørgsmål: Hvordan kan jeg oprette en rullemenu?
A: Dette har intet at gøre med visning2. For at oprette en rullemenu skal du kun justere CSS-koden for den respektive skabelon. De nødvendige justeringer findes f. eks. i skabelonen” allcss2 ” fra Hjemmesidebaker Addon Repository -> https://addon.websitebaker.org/
Sp: Hvorfor forsvinder menuen, efter at jeg har brugt søgefunktionen på en flersproget Hjemmesidebaker-side?
A: de nødvendige linjer mangler i den anvendte skabelon:
<input type="hidden" name="referrer" value="" />
<input type="hidden" name="referrer" value="<?php echo defined('REFERRER_ID')?REFERRER_ID:PAGE_ID;?>" />
spørgsmål: flersproget? Det lyder godt. Hvordan gør du det?
A: https://help.websitebaker.org/en/designerguide/multilingual-websites.php
Sp: hver gang en side kaldes, genererer SM2 følgende advarselsmeddelelse:
“vis_menu2-fejl: $aOptions er ugyldig. Ingen flag fra gruppe 1 leveres!”
A: De forkerte værdier eller et forkert antal værdier blev overført til funktionen.
se afsnittet Parametre for de korrekte flagværdier, der skal overføres til parameteren $aOptions.
spørgsmål: Hvordan bruger jeg en anden klasse/billede/farve/kontrol for hver post i en menu?
A: brug formatstrengen i $aitemopen-strengen. Opret en unik klasse eller id for hvert menupunkt, og henvis derefter det element i din CSS eller Javascript for at gøre hvad du vil.
for at tilføje en unik klasse for hvert menupunkt (eller lignende):
"<li><a href="" target="" class=" p"></a>"
… oprettelse menupunkter Som …
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top p45">Top Menu</a>
henvis dette i din CSS som:
a.p45 { color: red; }
for at tilføje et unikt ID for hvert menupunkt (eller lignende):
"<li><a href="" target="" class=""></a>"
… oprettelse menupunkter Som …
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top">Top Menu</a>
henvis dette i din CSS som:
a#p45 { color: red; }
Bemærk, at ID ‘et kun kan bruges, hvis denne menu kun genereres og vises en gang på siden (fordi HTML-ID’ er skal være unikke på en side).
FUNCTIONup
det komplette opkald og standardparameterværdierne for visning2 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);
afsnittet “Parametre” indeholder en detaljeret beskrivelse af hver enkelt parameter.
hver parameter skal bruges helt korrekt. Følgende regler kan hjælpe:
$amenu = 0 er den bedste værdi i de fleste tilfælde.
$aStart skal enten være et side-ID eller en værdi, der starter med “SM2_”.
$amakslevel kan kun få værdier, der starter med “SM2_”.
$aOptions bortset fra nogle få særlige tilfælde er kun værdier, der begynder med “SM2_”, tilladt.
alle andre parametre indeholder de (HTML)tags, der styrer udgangen af menuen.
startende fra $aItemOpen hver parameter kan overføres værdien falsk for at få den respektive standardværdi.
dette kan f. eks. bruges til at oprette en nummereret liste, mens standardværdierne stadig bruges til de enkelte menupunkter:
show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');
Bemærk: op til og med $aOptions alle parametre skal bestås eksplicit!
HTML Outputup
HTML-output afhænger stort set af, hvilke parametre der sendes til funktionen. Uanset dette bruges efterfølgende klasser altid til hver menu, hvor individuelle menupunkter også kan have flere klasser, hvis det er nødvendigt.
klasse | opgave |
---|---|
menu-top | kun det første menupunkt. |
menu-forælder | ethvert hovedmenupunkt. |
menu-current | kun menupunktet på den aktuelle side. |
menu-søskende | alle “søskende” på den aktuelle side. |
menu-barn | enhver undermenu på den aktuelle side. |
menu-Udvid | enhver menu, der har undermenuer. |
menu-først | det første element i en menu eller undermenu. |
menu-sidste | det sidste punkt i en menu eller undermenu. |
menu-N | Hvert menupunkt, hvor N står for den absolutte menudybde, startende med 0, for det respektive menupunkt. så det øverste niveau er altid menu-0, det næste niveau er menu-1 osv. |
menu-child-N | hver undermenu på de aktuelle sider, hvor N står for den RELATIVE dybde af undermenuen, begyndende med 0. |
eksempel på HTML-output:
<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 lag
SM2_ROOT+2 Starter to niveauer under det øverste niveau
SM2_CURR+N
SM2_CURR + 1 starter et lag under det aktuelle lag med alle underniveauer.
page_id
alle undermenuer på denne side vises. (Siden id kan bestemmes ved at redigere siden i admin backend, vil det blive vist i adresselinjen af bro. ser: http://SITE/admin/pages/modify.php?page_id=35
$amaksniveau
starter fra det niveau, der er angivet i $aStart, op til det niveau, der er angivet her.
SM2_ALL
SM2_CURR + N
SM2_CURR+3 Alle overordnede + nuværende + 3 underniveauer
SM2_START+N
niveauerne vises uanset hvilket niveau den aktuelle side er på.
SM2_START+1 startniveau + et niveau nedenfor.
SM2_MAKS+N
lag under det aktuelle niveau vises ikke.
SM2_MAKS+1 startniveauet og et niveau under det.
$aOptions
for eksempel at definere både TRIM og PRETTY, brug : (SM2_TRIM | SM2_PRETTY).
gruppe 1
——-
et flag skal altid angives fra denne gruppe. Disse Flag bestemmer, hvordan søskendeelementerne i menustræet undertrykkes i output.
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 undermenuer af elementer, der ikke er i stien.
er fjernet.
A-1 -> B-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3 A-2
SM2_CRUMB
menupunkt og alle menupunkter, der 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 flag er valgfri, de kan kombineres i et hvilket som helst antal.
SM2_NUMCLASS
SM2_ALLINFO
dette medfører et ret højt hukommelsesforbrug og bør være
bør derfor bruges med forsigtighed.
dette betyder for eksempel, at nøgleordene, sidebeskrivelsen og
alle de andre tilgængelige oplysninger, der normalt ikke er
, kan indlæses.
Bemærk venligst: dette flag skal indstilles ved første opkald af scho_menu2
kan bruges til det respektive menu-ID eller i forbindelse med
med SM2_NOCACHE, ellers har det ingen effekt.
SM2_NOCACHE
SM2_PRETTY
linje bryder ind i en læselig form. Dette er især nyttigt, når du debugger menuudgangen.
SM2_BUFFER
SM2_CURRTREE
kun menupunkter i den aktuelle menugren vises.
om nødvendigt kan dette flag kombineres med ethvert flag fra gruppe 1.
SM2_ESCAPE
dette kan være nødvendigt for ældre Hjemmesidebaker installationer.
for at generere et gyldigt HTML-output.
SM2_SKJULT
brug private sider til tid, hvor du vil have sider skjult, undtagen når de er aktive. For kompatibilitet med release 4.8 skal du dog angive dette flag for at gøre det muligt for skjulte sider at blive synlige, når de er aktive.
SM2_HTML_STRICT
SM2_NO_TITLE
for denne parameter er der også en udvidet tilstand, hvor indstillingerne passeres som et associativt array. Se afsnittet Avancerede indstillinger for detaljer. For de fleste applikationer er dette dog ikke nødvendigt.
$aItemOpen
hvis denne parameter er indstillet til false, er standardformatstrengen
‘</a> ‘ for at sikre kompatibilitet med Hjemmesidebaker-standardfunktionen Vis menu().
da formatering ved hjælp af CSS-klasser ofte er lettere, når den anvendes på < A>tagget, anbefales det at bruge følgende formatstreng: ‘<li></a>’.
denne parameter kan også bruges som en forekomst af en formateringsklasse for menuen. En mere detaljeret beskrivelse kan findes i FORMATERINGSAFSNITTET. Hvis en formateringsenhed er angivet her, ignoreres alle argumenter efter $aitemopen.
$aItemClose
hvis denne parameter er indstillet til falsk, bruges standard ‘</li>’.
$aMenuOpen
hvis denne parameter er indstillet til falsk, bruges standardværdien”.
$amenuclose
hvis denne parameter er indstillet til falsk, bruges standard ‘</ul>’.
$aTopItemOpen
$atopmenuåben
ADVANCED OPTIONSup
parameteren $aoptions kan bruges på to måder. For det første, som beskrevet ovenfor i parameterafsnittet, bør denne type være tilstrækkelig til langt de fleste brugssager. For at kunne adressere de særlige muligheder i særlige tilfælde skal de krævede værdier dog leveres som et associativt array.
Bemærk venligst: SM2_* – flagene er også påkrævet her og skal sendes som ‘flag’.
dette definerer et antal niveauer, der altid vises i forhold til menuniveauet defineret i $aStart. Dette får sm2_trim-flag til at blive ignoreret for disse niveauer.
for at bruge dette array anbefales det først at oprette det og derefter levere parameteren $aOptions med det oprettede array:
$options = array('flags' => (SM2_TRIM|...), 'notrim' => 1); show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);
FORMAT STRINGSup
følgende tags kan bruges i formatstrengene for $aitemopen og $amenuopen og bør erstattes af den tilsvarende tekst.
<et> tag uden klasse:
'<a href="" target="">' |
|
<A> tag med klasse:
'<a href="" target="" class="">' |
|
<li> tag med klasse:
'<li class="">' |
|
<ul> tag med klasse:
'<ul class="">' |
|
liste over klasser for denne side | |
tekst af menuen Titel (HTML-enhed undslap, medmindre SM2_NOESCAPE flag er indstillet) |
|
URL ‘en til en billedfil med normal repræsentation | |
URL’ en til en billedfil med aktiv / svævevisning | |
Sidetitel tekst (HTML-enhed undslap, medmindre SM2_NOESCAPE flag er indstillet) |
|
URL ‘ en til en siderelateret billedfil | |
URL-adressen til siderne for< A > tagget | |
siden mål for< A > tag | |
sidens ID for det aktuelle menupunkt. | |
sidens ID for det overordnede menupunkt. | |
du sideniveau, dette er det samme nummer, der bruges i “menu-N” CSS-tag. | |
antal søskende til det aktuelle menupunkt. | |
antal af alle søskende i denne menu. | |
tilstand (se afsnittet “Betinget formatering” for detaljer) |
følgende tags er kun tilgængelige, hvis sm2_allinfo-flaget er indstillet.
sidebeskrivelse | |
nøgleord på siden |
Betinget formatering op
erklæringen betinget formatering kan antage en af følgende former:
B
dette kan være enhver streng, der ikke indeholder tegnet ‘}’.
kan indeholde. Den kan indeholde enhver formatstreng fra sektionen
Formatstrenge’, men ingen yderligere tilstandstest (fordi tegnet’} ‘ ikke er tilladt).
C
dette kan være enhver streng, der ikke indeholder tegnet ‘}’.
kan indeholde. Den kan indeholde enhver formatstreng fra sektionen
Formatstrenge’, men ingen yderligere tilstandstest (fordi tegnet’} ‘ ikke er tilladt).
betingelsen er en kombination af en eller flere boolske sammenligninger.
hvis der kræves mere end en sammenligning, skal den kombineres med de andre sammenligninger
kan knyttes ved hjælp af || (boolsk eller – eller) eller && (boolsk og – og).
en enkelt sammenligning består af den venstre operand, operatøren og den højre operand.
f. eks.
klasse | Kontroller, om denne klasse findes. Kun “= = “og”!= “operatører er tilladt. I dette tilfælde har operatørerne betydningen” indeholder “eller” indeholder ikke “i stedet for” er lige “eller”er ikke lige”. |
niveau | kontrol af sideniveauet. |
sib | Kontroller antallet af søskende på den aktuelle side. |
sibCount | Kontroller det samlede antal søskende i den aktuelle menu. |
id | kontroller sidens id. |
mål | verifikation af målspecifikationen. |
< | mindre end |
<= | mindre end eller lig med |
== | lige |
!= | ikke lige |
>= | større end eller lig med |
> | større end |
klasse | et af klassenavnene “menu-*” som angivet i afsnittet “Output”. |
niveau | kontroller sideniveauet mod følgende værdier:
|
id | kontroller sidens id mod følgende værdier:
|
sib | et positivt heltal eller “sibCount” for at kontrollere antallet af søskende i denne menu. |
sibCount | et positivt heltal |
mål | en streng, der repræsenterer en mulig målspecifikation. |
har en undermenu | |
hvis den første indgang i en menu er | |
er ikke det første element i en menu | |
hvis den sidste indgang i en menu er | |
placeret på øverste niveau | |
er ikke på øverste niveau | |
hvis den anden indgang i en menu er | |
hvis i en menu med mere end en post | |
er i en menu det har ikke nøjagtigt 2 varer | |
er i en søskendemenu eller i undermenuen i en søskendemenu | |
er det overordnede punkt for det aktuelle id | |
strengen ‘_self’ er indeholdt i målattributten. |
hvis der tilføjes en anden klausul, udføres den i alle andre tilfælde.
for eksempel udføres “foo” altid, når hvis kontrollen er forkert, så:
er ikke det andet punkt i menuen | |
er ikke i en menu med mere end to poster |
er den første post eller er den fjerde eller højere post i menuen | |
hvis den aktuelle post er og har undermenuer |
Bemærk:
alle kontroller udføres i den rækkefølge, de er noteret, fordi:
- der er ingen kontrol for mulige sløjfer (alle kontroller udføres altid).
- Checks er ikke grupperet (parenteser af checks understøttes ikke)
- begge disse ting har samme værdi.
FORMATTERup
OBS: Dette er en avanceret og sjældent brugt funktion!
med omfattende viden i PHP programmering er det muligt at bruge den foruddefinerede
formatering af visning2 med din egen.
i den omfatter.php af vis_menu2 du kan se, hvordan du skriver formateren.
API ‘ en, der skal bruges, ser sådan ud:
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() { }};
Hjemmesidebakeris udgivet under GNU General Public License