Blog

Creating and Exporting Custom Class Extensions

April 7, 2015 by Michael Evangelista

In our continuing series covering new features and enhancements in Mura CMS version 6.2 we will explore another robust improvement, the Export and Import Class Extensions feature set, which has automated the process of transferring Class Extensions and Extended Attributes from one Mura site to another. We will also take a look at the overall Class Extension management system in Mura, with a few basic examples of these features put to use.

Extending Mura CMS Data

The term "class extension" is borrowed from the world of object-oriented programming (OOP). OOP provides a model for programming based on objects. These objects are designed in heirarchies, commonly a "class" heirarchy. Hence, "class extensions" is a term used to define user-created subclasses.

Any of the default Mura object types (User, User Group, Page, Folder, Gallery, Form, etc) can be extended with custom subtypes, known as Class Extensions. Creating a Class Extension allows you to add your own custom meta data or form fields that you can use to collect additional information. This custom meta data or form fields are known as "Extended Attributes."

Any of the default Mura content types can be extended, including users, user groups or the site itself.

While the default "content" types are designed with comprehensive options, allowing for management of everything from text and image content to meta-tags and SEO-specific titles on each content item, there are many situations in which additional, custom attributes are called for. For example, items in a catalog may include custom data such as the item's price and part number. Or, a listing of customer testimonials may include the customer's name and company in addition to the standard attributes of a Mura page.

Rather than including this additional information in the built-in content attributes such as the Body, Summary or Title, Mura's extended attribute system dynamically generates additional input fields within the Edit Content form, allowing for custom data to be managed and edited separately, and displayed as a unique string or value when output in a Mura template.

In addition, Extended Attributes may be applied to the existing "Default" subtype of any object class. This also applies the Extended Attributes to any Class Extensions of that class. For example, attributes added to  "Page/Default" will be rendered on any subtype of that class, such as "Page/Testimonial."

With custom Class Extensions, the possibilities for managing and replicating any type of content or data objects in Mura are virtually endless.

Class Extension Options

Custom subtypes or Class Extensions and Extended Attributes are most commonly created and managed using the Class Extension Manager interface (found in the Mura Site Manager under the "Site Config" menu when logged in as a user with "Super" Admin permissions). The use of this interface to create a Class Extension and any Extended Attribute Sets is covered in detail in the Mura CMS documentation: Create a Class Extension.

Extended Attributes can be used to manage virtually any type of data complete with validation options.

The robust Extended Attribute area includes options for all standard form input types, such as  text areas, checkboxes, file upload options or select lists, as well as a number of validation options which control not only the allowed values for these fields in the Edit Content interface, but also customized inputs such as a date picker or color selector.

These extended attributes are grouped into sets (think "fieldset"), and each set can be displayed on any tab of the Edit Content interface, allowing for easy access to the custom information along with the standard editable details in the site manager.

XML Definitions

In addition to the built-in interface, Extended Attributes may also be created using a specific XML syntax  as part of the theme's configuration file, config.xml.cfm, located at the root of the theme folder. The same syntax using the <extensions> xml object is also commonly found in Mura plugins, where custom functionality depends on specific attributes applied to specific content subtypes. The contents of these files are automatically read by Mura, and the custom class extensions and extended attributes are added to the available options in the site manager, just like those created using the Class Extension interface.

Mura uses a custom XML syntax to define and store Class Extensions and Extended Attribute definitions.

Write Once, Use Twice (or more)

With the release of Mura 6.2, yet another option for defining and managing these custom subtypes and attributes has been added, simplifying the process of creating and reusing class extension definitions through a simple export dialog.

The option to export any or all of the custom class extension definitions in a Mura site, complete with their extended attributes, was added in Mura 6.2.

This new option is useful when setting up a new site, or replicating the functionality of an existing Mura site in another site or a plugin. Rather than hand writing or using the interface to recreate the XML syntax defining the custom subtypes and attributes, the export system generates the XML automatically. In addition to migrating class extensions to other sites, this feature can also be used to create a new class extension based on existing one by editing the XML subtype and attributes to create a similar but separate class extension and attribute set.

Putting It To Use

To demonstrate the basic usage of a class extension with extended attributes, we will use a simple "Customer Testimonials" display, which shows a photo of the customer and their testimonial, along with the customer's name and the name of their company.

Extended attributes can be used to store any custom values associated with a content item.

In this example, the photo and the testimonial use the default attributes for an associated image and the page summary, respectively, while the customer name and the name of the company are contained in custom Extended Attributes. These can be seen in the site manager when editing or creating a content item with the custom subtype, or class extension, of "Page / Testimonial".

Additional form fields are added to the Edit Content dialog for management of the custom extended attribute values.

For purposes of example, we will export this simple class extension and small attribute set using Mura's Export Class Extensions dialog. This new feature allows for the export of any single class extension, as well as combining any or all of the existing class extensions, for granular control over the exported contents.

The simple interface allows for selection of any or all existing class extension definitions.

Upon selecting the Page/Testimonial class extension and clicking "Export", the dynamically generated XML is displayed in plain text format where it can be easily copied from the screen, along with a simple download button, to save the exported content as an XML file which can be edited or imported elsewhere.

Mura automatically creates and displays the XML definitions for the selected Class Extensions, along with a simple download option.

Ready to Replicate

Once the XML has been copied to the clipboard, or the .xml file has been saved using the "Download" option, importing or duplicating these custom settings in another location requires only a few more quick steps. We'll take an in-depth look at that part of the process in our next article.

More About This Feature

Also see Mura CMS v6 Documentation: Create a Class Extension and Export a Class Extension Further documentation for Mura CMS developers and content managers is available at docs.getmura.com. Learn more about Mura's powerful features and flexible options at getmura.com.

Examples used in this article are based on the Down to Business theme bundle for Mura CMS, available at themeforest.net.

 

 

 


 

Comments

Joel Richards

I just got to use this great feature in migrating a site to a new install. Thanks! The only problem I ran into was that I couldn't import files with a .xml file extension. Trying to import a .xml file caused the following message to pop up:

'Please choose a valid import file.'

I changed to file extension to .txt and it worked like a charm

April 16, 2015, 9:06 AM
Reply
Flag as Spam
Rey Muradaz

I had the same problem with the import - could not import the .xml.cfm or .xml file but when I changed the extension to .txt, it imported fine.

July 7, 2015, 8:29 PM
Reply
Flag as Spam
Post a Comment

Required Field