Mura CMS Tilpasse mapper

En mappe i Mura CMS er en spesiell node type som kan servere mange forskjellige funksjoner. I kjerne er en mappe designet for å ta barnesidene under den, og vise dem i et listformat. Den vanligste brukssaken til dette er en blogg - en mappe i nettstedssjefen kalt "Blog", der hver side under det er et eget blogginnlegg. Når du besøker bloggsiden på nettstedet, er alle innlegg oppført i rekkefølge av Utgivelsesdato (definert i nettstedshåndteringen):

Bloggen-mappen i nettstedshåndtererenBlog-siden som den vises på forsiden av nettstedet

Endre mapputgangen i Mura

Ut av esken gir Mura deg en masse fleksibilitet for å endre utdataene i mappene dine uten å måtte trykke på noen kode. Når du redigerer en mappe, vil du legge merke til at det er en "List Display Options" -fanen:

På dette kan du redigere bildestørrelsen, og til og med bestemme hvilke datafelter du vil vise:

Ved å endre noen innstillinger på bloggen og legge til litt CSS, kan du gå langt med Mura Mapper:

Opprette en tilpasset mappevisning

Hvis du fremdeles ikke kan oppnå det du vil bruke Mura's tilpassede mapper utenom boksen, kan du også lage din egen mappeutgang. 

1. Opprett en egendefinert klasseutvidelse for mappen

Som vi diskuterte i klasselengdeopplæringen, er klasseutvidelser en måte å legge til attributter til en ny sidetype. Klasseforlengelser kan også brukes som en krok for Mura å fange opp en bestemt undertype, og endre sin standardoppførsel. For å gjøre dette må vi opprette en ny mappe med en subtype av bloggen.

Nå kan vi lage en ny Blog-mappe med denne undertypen og koble til den i vår kode.

Standard mapputgang kommer fra SiteID /includes/dsp_folder.cfm. Vi må kopiere den filen og flytte den til SiteID / includes / temaer / THEME / display_objects / tilpassede forlengelse / /dsp_Folder_Blog.cfm

Merk: tittelen på filen din kan være saksfølsom avhengig av serverens operativsystem. Det anbefales at du tittel filen din i samme tilfelle som navnet på dine utvidede attributter.

Merk: ved å endre navnet til dsp_Folder_Blog.cfm og inkludere den i / utvidelser katalog i vårt tema, vil Mura automatisk bruke den filen i stedet for standard mappeutgang når en mappe / blogg gjøres. Dette vil fungere for alle innholdsundertyper i denne katalogen med syntaksen dsp_ Type _ SubType .cfm

2. Rediger innholdsutgangen

Nå som Mura registrerer vår tilpassede mappe i stedet for standard en, kan vi gå inn i vår egendefinerte fil og endre det vi velger. Når du åpner filen, er de første 130 kodelinjene eller alle kjernelogikkene du vil beholde for å gjøre visse aspekter av mappen din mulig, for eksempel paginering, kategorifiltre osv.. Ikke rediger denne logikken, med mindre du virkelig vet hva du gjør!

Stykket av filen du er virkelig opptatt av, starter rundt linje 133:

#variables. $. dspObject_Include (thefile = 'dsp_content_list.cfm', felt = variabler. $. innhold ("displayList"), type = "Portal", iterator = variables.iterator, imageSize = variabler. "), imageHeight = variabler. $. innhold (" ImageHeight "), imageWidth = variabler. $. innhold (" ImageWidth ")) #

Hva denne koden gjør, er å ta all mappen logikken over den, så send den gjennom en fil som heter dsp_content_list.cfm. dsp_content_list.cfm er en ekstremt kompleks fil, som har alle slags logikk for å vise alle mulige elementer og arrangementer for mappepostene (dvs. alle alternativene du så på listevisningsalternativene ovenfor). Siden vi ønsker å rulle vår egen produksjon for bloggen vår, vil vi faktisk erstatte hele denne bloggblogg med vår egen iterator og sløyfe gjennom bloggelementene ved hjelp av vårt eget oppslag.

Som vi lærte i Mura Iterators opplæringen, er Mura Iterators en måte å ta innhold fra en feed og sløyfe gjennom den ved hjelp av ditt eget oppslag. I hovedlogikken til filen dsp_folder_blog.cfm blir alle mappens innhold lastet inn i sin egen iterator (variables.iterator), klar til å bli sløyfet gjennom.

Siden filen allerede har mappen din klar til å gå i en iterator, er alt vi trenger å gjøre, løp gjennom innholdet og utmat vårt skjermbilde:

 
# Item.getTitle () #

# Item.getTitle () #

# Item.getSummary () #

Note 1: Når vi setter punkt variabel på linje 6, som effektivt får tilgang til innholdsrammen for hvert element i løkken. Så når vi gjør noe som:

# Item.getTitle () #

Det er det samme som om vi fikk tilgang til innholdsrammen i en layoutmal:

# $. Innhold ( 'tittel') #

Notat 2: Jeg opprettet en egendefinert bildestørrelse i mine Mura nettstedinnstillinger kalt blog-img det er 400x200. Fordelen ved å gjøre dette er at brukerne kan kontrollere beskjæringen av bildet for at den skal vises i utgangen.

Nå, når vi lager den endelige siden, kan vi se det samme blogginnholdet, gjengitt i vår nye oppslag:

Å lage tilpassede mappelayouter er en fin måte å skape kreative, robuste temaer uten å måtte bekymre deg for å bryte kjerne Mura-funksjonalitet. Denne metoden kan brukes til flere forskjellige brukstilfeller når du utvikler temaer, for eksempel Blogger, porteføljer, lagssider, osv.