Een map in Mura CMS is een speciaal knooppunttype dat veel verschillende functies kan gebruiken. In de kern is een map ontworpen om de onderliggende pagina's eronder te nemen en ze in een lijstindeling weer te geven. De meest voorkomende use case hiervoor is een blog - een map in uw Site Manager genaamd "Blog", waarbij elke pagina eronder een aparte blogpost is. Wanneer u de blogpagina op de website bezoekt, worden alle berichten weergegeven in volgorde van Releasedatum (gedefinieerd in de sitebeheerder):
De map Blog in de sitebeheerderDe blogpagina zoals deze aan de voorkant van de site wordt weergegevenOut-of-the-box, Mura biedt u een enorme hoeveelheid flexibiliteit om de uitvoer van uw mappen te wijzigen, zonder dat u een code hoeft aan te raken. Wanneer u een map bewerkt, ziet u dat er een "Lijstweergaveopties" -tabblad is:
Hierop kunt u de afbeeldingsgrootte bewerken en zelfs bepalen welke gegevensvelden u wilt weergeven:
Door een paar instellingen op de blog te veranderen en een klein beetje CSS toe te voegen, kun je een lange weg gaan met Mura Folders:
Als je nog steeds niet kunt bereiken wat je wilt met Mura's out-of-the-box aanpassing van mappen, kun je ook je eigen mapuitvoer maken.
Zoals we in de zelfstudie Class Extensions hebben besproken, zijn Class Extensions een manier om kenmerken aan een nieuw paginasubtype toe te voegen. Klasse-uitbreidingen kunnen ook worden gebruikt als een haak voor Mura om een bepaald subtype te onderscheppen en het standaardgedrag te veranderen. Om dit te doen, moeten we een nieuwe map maken met een subtype van blog.
Nu kunnen we een nieuwe Blog-map maken met dit subtype en inhaken in onze code.
De standaardmapuitvoer komt uit Siteid /includes/dsp_folder.cfm. We moeten dat bestand kopiëren en verplaatsen naar Siteid / includes / themes / THEMENAME / display_objects / custom / extensions /dsp_Folder_Blog.cfm
Notitie: de titel van uw bestand kan hoofdlettergevoelig zijn, afhankelijk van uw serverbesturingssysteem. Het wordt aanbevolen dat u uw bestand een titel geeft in hetzelfde geval als de naam van uw uitgebreide kenmerken.
Notitie: door de naam in te wijzigen dsp_Folder_Blog.cfm en het opnemen in de / extensions directory in ons thema, zal Mura dat bestand automatisch gebruiken in plaats van de standaard mapuitvoer wanneer een map / blog wordt gerenderd. Dit werkt voor alle inhoudsubtypen in deze map met de syntaxis dsp_ type _ SubType .cfm
Nu Mura onze aangepaste map registreert in plaats van de standaardmap, kunnen we naar ons aangepaste bestand gaan en dit aanpassen naar eigen keuze. Wanneer u het bestand opent, zijn de eerste 130 coderegels of zo, allemaal kernlogica die u wilt behouden om bepaalde aspecten van uw map te laten werken, zoals paginering, categoriefilters, enz.. Bewerk deze logica niet, tenzij u echt weet wat u doet!
Het stuk van het bestand waar je je echt zorgen over maakt, begint rond regel 133:
#variables. $. dspObject_Include (thefile = 'dsp_content_list.cfm', fields = variables. $. content ("displayList"), type = "Portal", iterator = variables.iterator, imageSize = variables. $. content ("ImageSize "), imageHeight = variabelen. $. content (" ImageHeight "), imageWidth = variabelen. $. content (" ImageWidth ")) #
Wat deze code doet, is om alle maplogica erboven te nemen en deze vervolgens door een bestand met de naam te sturen dsp_content_list.cfm. dsp_content_list.cfm is een uiterst complex bestand, dat allerlei logica heeft om alle mogelijke items en arrangementen voor de mapitems weer te geven (d.w.z. alle opties die je zag in de Lijstweergave-opties hierboven). Omdat we onze eigen output voor onze blog willen laten rollen, zullen we deze hele code-blog eigenlijk vervangen door onze eigen iterator en de blog-items doorlopen met onze eigen markup.
Zoals we hebben geleerd in de Mura Iterators-tutorial, zijn Mura Iterators een manier om content te halen uit een feed en er doorheen te bladeren met behulp van je eigen markup. In de hoofdlogica van het bestand dsp_folder_blog.cfm wordt alle inhoud van de map geladen in zijn eigen iterator (variables.iterator), klaar om doorgelust te worden.
Omdat het bestand uw map al in een iterator klaar heeft staan, hoeven we alleen maar de inhoud door te lopen en onze weergave uit te voeren:
# Item.getTitle () #
# Item.getSummary () #
Notitie 1: wanneer we de item
variabele op regel 6, die effectief toegang heeft tot de inhoudscope voor elk item in de lus. Dus wanneer we iets doen als:
# Item.getTitle () #
Dat is hetzelfde als wanneer we binnen een lay-outsjabloon toegang zouden krijgen tot de contentscope:
# $. Gehalte ( 'title') #
Opmerking 2: Ik heb een aangepaste afbeeldingsgrootte gemaakt in mijn Mura Site-instellingen genoemd blog-img
dat is 400x200. Het voordeel hiervan is dat gebruikers het bijsnijden van de afbeelding kunnen regelen zodat deze in de uitvoer verschijnt.
Nu, wanneer we de laatste pagina weergeven, kunnen we dezelfde bloginhoud zien, weergegeven in onze nieuwe opmaak:
Het maken van aangepaste mapplay-outs is een geweldige manier om creatieve, robuuste thema's te maken zonder je zorgen te maken over het doorbreken van de belangrijkste Mura-functionaliteit. Deze methode kan voor verschillende gebruikscasussen worden gebruikt bij het ontwikkelen van uw thema's, zoals Blogs, Portfolio's, Teampagina's, enz.