There are two primary ways to customize list presets: through PHP filters or through customizations to the PHP templates for lists.

List presets can be manipulated using the mc_preset_template filter. This filter directly modified the HTML and template tags used to output the content of the list item.

The CSS for the list presets uses the classes in the default templates, so changing those classes will alter the styling of the lists. Depending on the desired outcome, this might be what you want.

Default Output for Preset 1

<div class="mc-group-1">{datebadge}</div>
<div class="mc-group-2">{linking_title}<br />{timerange}<br /><strong>{location}</strong>{city before=", "} {state}</div>
<div class="mc-group-3">{thumbnail}</div>

All the presets use a fairly similar internal structure, broken into data groups. In Preset 1, group 1 continues the datebadge; group 2 contains the linked title, and location information. Group 3 contains the thumbnail.

Using the mc_preset_template filter, you can make pretty simple changes to customize the preset.

Example in PHP

/**
 * Filter the outcome of a location preset.
 *
 * @param string $template The original HTML template.
 * @param string $type The selected default.
 *
 * @return string
 */
function my_custom_template( $template, $type ) {
    // Customize only preset 1
    if ( 'list_preset_1' === $type ) {
        // Omits the link on events, move location into thumbnail area, remove thumbnail.
        $template = '<div class="mc-group-1">{datebadge}</div><div class="mc-group-2">{title}<br />{timerange}</div><div class="mc-group-3"><strong>{location}</strong>{city before=", "} {state}</div>';
    }
    return $template;
}
add_filter( 'mc_preset_template', 'my_custom_template', 10, 2 );

Using PHP Templates

If any of the list presets are selected, then the wrapper classes for that preset and the CSS will be applied. When using a customized PHP list template, you can replace the whole list output to make more extensive changes.

The preset template is rendered by the mc_template() function executed in the PHP list templates. If you replace the output of that function with your own custom output, that will replace the entirety of the original preset output, while still applying the wrapper classes.

You will likely still want to use the group wrapper classes for your content, to provide content organization, but you’re not obligated to.

Custom CSS

My Calendar supports custom CSS, so that’s the most standard way of adding your own custom CSS. Using custom CSS will add whatever CSS you place in that file to your calendar’s design. Custom CSS doesn’t replace the My Calendar default styling, so you don’t need to reproduce anything extra; you can just add your custom styles there.

For a simpler way of adding custom CSS, you can use the native WordPress capacity for custom CSS. For classic themes, use the Customizer for Additional CSS. In block themes, you can apply custom CSS in the Styles editor.