Mura CMS Anpassa mappar

En mapp i Mura CMS är en speciell nodtyp som kan servera många olika funktioner. En kärna är utformad för att ta barnsidorna under den och visa dem i ett listformat. Det vanligaste användningsfallet för detta är en blogg - en mapp i webbplatshanteraren heter "Blog", där varje sida under den är ett separat blogginlägg. När du besöker bloggsidan på webbplatsen listas alla inlägg i enlighet med Release Date (definierad i webbplatshanteraren):

Blog-mappen i webbplatshanterarenBlog-sidan som det visas på webbplatsens främre ände

Ändra mapputgången i Mura

Utanför lådan ger Mura dig en massa flexibilitet för att ändra utmatningen av dina mappar, utan att behöva röra någon kod. När du redigerar en mapp kommer du märka att det finns en "List Display Options" -flik:

Här kan du redigera bildstorleken och bestämma även vilka datafält du vill visa:

Genom att ändra några inställningar på bloggen och lägga till lite CSS kan du gå långt med Mura-mappar:

Skapa en anpassad mappskärm

Om du fortfarande inte kan uppnå vad du vill använda Mura-anpassningar, kan du skapa din egen mapputmatning också. 

1. Skapa en anpassad klassförlängning för mappen

Såsom vi diskuterade i handledning av klasstillägg, är klassförlängningar ett sätt att lägga till attribut till en ny sidsubtyp. Klassförlängningar kan också användas som en krok för att Mura ska fånga upp en viss undertyp och ändra sitt standardbeteende. För att göra detta måste vi skapa en ny mapp med en subtyp av blogg.

Nu kan vi skapa en ny Blog-mapp med denna undertyp och koppla in den i vår kod.

Standardmapputgången kommer från SiteID /includes/dsp_folder.cfm. Vi måste kopiera den filen och flytta den till SiteID / includes / teman / THEME / display_objects / custom / extensions /dsp_Folder_Blog.cfm

Notera: Titeln på din fil kan vara skiftlägeskänslig beroende på ditt operativsystem. Det rekommenderas att du titlar din fil i samma fall som namnet på dina utökade attribut.

Notera: genom att ändra namn till dsp_Folder_Blog.cfm och inkludera den i / extensions katalog i vårt tema, kommer Mura automatiskt använda den filen istället för standardmapputmatningen när en mapp / blogg görs. Detta fungerar för alla innehållsundertyper i den här katalogen med syntaxen dsp_ Typ _ SubType .cfm

2. Redigera innehållsutmatningen

Nu när Mura registrerar vår anpassade mapp i stället för standarden, kan vi gå in i vår anpassade fil och ändra det men vi väljer. När du öppnar filen är de första 130 koderna eller koden all kärnlogik som du vill behålla för att få vissa aspekter av din mapp att fungera, till exempel pagination, kategorifilter etc. Ändra inte den här logiken om du inte vet vad du gör!

Den del av filen du är verkligen orolig med börjar omkring linje 133:

#variables. $. dspObject_Include (thefile = 'dsp_content_list.cfm', fält = variabler. $. innehåll ("displayList"), typ = "Portal", iterator = variables.iterator, imageSize = variabler. "), imageHeight = variabler. $. innehåll (" ImageHeight "), imageWidth = variabler. $. innehåll (" ImageWidth ")) #

Vad den här koden gör är att ta all mapplogiken ovanför den och skicka den genom en fil som heter dsp_content_list.cfm. dsp_content_list.cfm är en ytterst komplex fil, som har alla slags logik för att visa alla möjliga föremål och arrangemang för mappartiklarna (dvs alla alternativ du såg på listvisningsalternativen ovan). Eftersom vi vill rulla vår egen produktion för vår blogg, kommer vi faktiskt att ersätta hela koden bloggen med vår egen iterator och loopa igenom bloggen med vår egen markup.

Som vi lärde oss i Mura Iterators handledning, är Mura Iterators ett sätt att ta innehåll från ett flöde och gå igenom det med din egen markup. I huvudlogiken i filen dsp_folder_blog.cfm laddas alla mappens innehåll i sin egen iterator (variables.iterator), redo att slingas genom.

Eftersom filen redan har din mapp redo att gå i en iterator är allt vi behöver göra genom att gå igenom innehållet och mata ut vår bildskärm:

 
# Item.getTitle () #

# Item.getTitle () #

# Item.getSummary () #

Anteckning 1: när vi ställer in Artikel variabel på rad 6, som effektivt får tillgång till innehållsramen för varje objekt i slingan. Så när vi gör något som:

# Item.getTitle () #

Det är samma som om vi åtkomst till innehållsramen inom en layoutmall:

# $. Innehåll (titel) #

Anteckning 2: Jag skapade en anpassad bildstorlek i mina Mura Site Settings heter blog-img det är 400x200. Fördelen med att göra detta är att användare kan styra beskärningen av bilden för att den ska visas i utmatningen.

Nu när vi gör den sista sidan kan vi se samma blogginnehåll som gjorts i vår nya markering:

Skapa anpassade mapplayouter är ett bra sätt att skapa kreativa, robusta teman utan att behöva oroa dig för att bryta kärnan Mura-funktionalitet. Den här metoden kan användas för flera olika användarfall när du utvecklar dina teman, t.ex. Bloggar, Portföljer, Team sidor mm.