Ta bort flikar i Episerver på det bra sättet

Det är ibland väldigt smidigt med arv i Episerver, speciellt när man vill använda samma egenskaper på alla sidor. MEN! Så säger plötsligt någon:

-På denna sidan ska alla egenskaper på SEO fliken bort....

När detta händer så brukar man normalt i Episerver dölja dessa egenskaper genom att overrida egenskaperna och sätta ScaffoldColumn attributet till false.

Detta måste man göra för alla egenskaper som finns på SEO fliken, vilket ibland kan vara ganska många.

Skulle man sedan i framtiden introducera nya egenskaper på denna flik är det viktigt att komma ihåg att även dessa måste overridas och sättas ScaffoldColumn, det gäller då att inte glömma detta.

Denna lösning känns inte helt optimal men har varit det sätt som varit lättast. Nyligen fick jag nog av denna lösning när jag var tvungen att overrida väldigt många egenskaper på en sida som redan kändes lite bloatad som det var. Detta fick mig att börja gräva i Episervers inre.

Jag hittade då det mycket kraftfulla interfacet IMetadataExtender som tillät mig att manipulera egenskaper och flikar innan dessa renderades på sidan.

Då jag är ett stort fan av attribut ville jag självklart göra detta attributbaserat.

För att initiera vår IMetaDataExtender krävs en Episerver IConfigurableModule med InitializableModule attributet för att registrera vår IMetadataExtender i IOCn.

Efter att vi registrerat denna är det dags att dölja lite flikar:

Efter att allt detta är gjort är det bara att börja använda vårt nya attribut på de sidor där vi vill dölja flikat.

The end.