flere menuer

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:

1. I Admin Backend: Indstillinger – > Vis avancerede indstillinger – > søgemuligheder – > Header-indsæt følgende linje direkte efter åbningen < form > tag:

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

2. indsæt følgende linje i indekset.php af den brugte skabelon umiddelbart efter åbningen < form> tag af søgningen:

<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.
følgende klasser tilføjes kun, hvis SM2_NUMCLASS-flaget er indstillet:
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

Menu nummer. Dette er nyttigt at bruge flere menuer på en side. Menu nummer 0 er standardmenuen på den aktuelle side, SM2_ALLMENU returnerer alle menuer, der bruges i systemet.

$aStart

angiver det niveau, hvorfra oprettelsen af menuen skal begynde. I de fleste tilfælde vil dette være det øverste niveau i menuen, der skal vises. En af følgende værdier kan bruges:

SM2_ROOT+N

starter n niveauer under det øverste niveau, f.eks.:

SM2_ROOT starter på det øverste niveau
SM2_ROOT+1 starter et lag under det øverste lag
SM2_ROOT+2 Starter to niveauer under det øverste niveau

SM2_CURR+N

starter n niveauer under det aktuelle niveau, f. eks.:

SM2_CURR starter ved det aktuelle lag. Alle søskende på det nuværende niveau
SM2_CURR + 1 starter et lag under det aktuelle lag med alle underniveauer.

page_id

bruger siden med det angivne side-id som overordnet element.
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

det maksimale antal niveauer, der kan vises. Displayet
starter fra det niveau, der er angivet i $aStart, op til det niveau, der er angivet her.
SM2_ALL

ingen begrænsning, alle niveauer vises.

SM2_CURR + N

viser altid den aktuelle side + N niveauer.

SM2_CURR nuværende lag (intet underlag)
SM2_CURR+3 Alle overordnede + nuværende + 3 underniveauer

SM2_START+N

starter altid på startniveauet + N niveauer.
niveauerne vises uanset hvilket niveau den aktuelle side er på.

SM2_START et enkelt niveau fra startniveauet.
SM2_START+1 startniveau + et niveau nedenfor.

SM2_MAKS+N

viser maksimalt n-niveauer fra startniveauet.
lag under det aktuelle niveau vises ikke.

SM2_MAKS kun startplanet (samme effekt som SM2_START)
SM2_MAKS+1 startniveauet og et niveau under det.

$aOptions

særlige flag til forskellige menugenerationsindstillinger. De kan kombineres med hinanden ved hjælp af en eller link (|).
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

viser alle grene af menustræet

 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øskendemenuer på siden i den aktuelle sti.
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

viser brødkrummens sti i menuen, dvs.det aktuelle
menupunkt og alle menupunkter, der fører til det.

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

SM2_SIBLING

ligesom SM2_TRIM, men kun søskendemenuer på den aktuelle side vises. Alle andre ting undertrykkes.

 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

tilføjer de nummererede menuklasser “menu-N” og “menu-child-n”.

SM2_ALLINFO

indlæser alle felter fra databasens sidetabel.
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

de data, der læses fra databasen, genbruges ikke, når visning2 kaldes igen, men læses igen fra databasen.

SM2_PRETTY

bringer HTML-udgangen af menuen med emner og
linje bryder ind i en læselig form. Dette er især nyttigt, når du debugger menuudgangen.

SM2_BUFFER

udsender ikke HTML-koden direkte, men gemmer den internt og udsender den som en komplet streng.

SM2_CURRTREE

udelukker alle andre menuer på øverste niveau fra visning.
kun menupunkter i den aktuelle menugren vises.
om nødvendigt kan dette flag kombineres med ethvert flag fra gruppe 1.

SM2_ESCAPE

anvender htmlspecialchars til menustrengen.
dette kan være nødvendigt for ældre Hjemmesidebaker installationer.
for at generere et gyldigt HTML-output.

SM2_SKJULT

skjulte sider skjules normalt hele tiden, også når de er aktive (dvs.aktuel side eller en overordnet side).
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

sikrer kompatibiliteten af linkene ved at fjerne målspecifikationen i links formateret med eller og indsætte argumentet title=””. For manuelt kompilerede links er designeren ansvarlig for HHTML-overensstemmelsen.

SM2_NO_TITLE

undertrykker output af indholdet af titelattributten for eller formaterede links.
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

dette definerer formatstrengen, som hvert enkelt menupunkt startes med. En anden formatstreng kan defineres for det allerførste menupunkt ved hjælp af $atopitemopen.
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

denne streng fuldender hvert menupunkt. Bemærk: Dette er ikke en formatstreng, og ingen nøgleord erstattes!
hvis denne parameter er indstillet til falsk, bruges standard ‘</li>’.

$aMenuOpen

denne formatstreng åbner en liste over menupunkter. En anden formatstreng kan defineres for den første menu ved hjælp af $aTopMenuOpen.
hvis denne parameter er indstillet til falsk, bruges standardværdien”.

$amenuclose

denne streng fuldender hver menu. Bemærk: Dette er ikke en formatstreng, og ingen nøgleord erstattes!
hvis denne parameter er indstillet til falsk, bruges standard ‘</ul>’.

$aTopItemOpen

formatstrengen til det allerførste menupunkt. Hvis denne parameter er indstillet til falsk, bruges den samme formatstreng som for $aitemopen.

$atopmenuåben

formatstrengen til den første menu. Hvis denne parameter er indstillet til falsk, bruges den samme formatstreng som $amenuopen.

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

‘flag’

**CONCELARY påkrævet** dette er flagene beskrevet ovenfor i afsnittet Parametre under $aOptions.

‘notrim’

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:


en

betingelsen. Se nedenfor for detaljer.

B

det udtryk, der anvendes, når betingelsen er opfyldt.
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

det udtryk, der anvendes, når betingelsen ikke er opfyldt.
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.

venstre operand. Skal være et af følgende nøgleord:
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.

operatør. Skal være et af følgende:
< mindre end
<= mindre end eller lig med
== lige
!= ikke lige
>= større end eller lig med
> større end
højre operand. Typen af denne operand afhænger af det nøgleord, der bruges til venstre operand.
klasse et af klassenavnene “menu-*” som angivet i afsnittet “Output”.
niveau kontroller sideniveauet mod følgende værdier:

  • <nummer> det absolutte sideniveau
  • root er det øverste niveau på siden
  • bedstemor et sideniveau over det overordnede sideniveau
  • forælder det overordnede sideniveau
  • nuværende det aktuelle sideniveau
  • barn det underordnede sideniveau
id kontroller sidens id mod følgende værdier:

  • < nummer> den absolutte side-id
  • forælder den overordnede side-id
  • nuværende den aktuelle side-id
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.
følgende eksempler resulterer i “sand”, og udtrykket {eksp} udføres, hvis det er sandt:
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
i flere sammenligninger udføres udtrykket “eksp” kun, hvis:
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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.