Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Getting It Done With Mura Themes

Getting It Done With Mura Themes

An introduction and overview of how to create themes for Mura CMS, an open-source content management system.

Avatar for Steve Withington

Steve Withington

June 04, 2014
Tweet

More Decks by Steve Withington

Other Decks in Technology

Transcript

  1. What are we talking about? • Mura CMS Themes •

    Where do I start? • How do I create layouts? • What can I use? • Can I customize that? • Can I make my own? • Where can I learn more? Monday, 16 June 14
  2. Review • Where themes live • /{SiteID}/includes/themes/{ThemeName} • Where layout

    templates live • /{SiteID}/includes/themes/{ThemeName} • /templates/default.cfm Monday, 16 June 14
  3. How do I create layouts? • Use commonly used layout

    template names Monday, 16 June 14
  4. How do I create layouts? • Use commonly used layout

    template names Monday, 16 June 14
  5. How do I create layouts? • Wrap all output with

    <cfoutput></cfoutput> tags Monday, 16 June 14
  6. How do I create layouts? • Wrap all output with

    <cfoutput></cfoutput> tags Monday, 16 June 14
  7. How do I create layouts? • Drop in template variables

    & code snippets • For example, the relative link for CSS Monday, 16 June 14
  8. How do I create layouts? • Drop in template variables

    & code snippets • For example, the relative link for CSS is broken Monday, 16 June 14
  9. How do I create layouts? • Drop in template variables

    & code snippets • For example, the relative link for CSS is broken Monday, 16 June 14
  10. How do I create layouts? • Drop in template variables

    & code snippets • Easily fixed with a simple template variable: • $.siteConfig(‘themeAssetPath’) Monday, 16 June 14
  11. How do I create layouts? • Drop in template variables

    & code snippets • Easily fixed with a simple template variable: • $.siteConfig(‘themeAssetPath’) Monday, 16 June 14
  12. How do I create layouts? • Drop in template variables

    & code snippets • Easily fixed with a simple template variable: • $.siteConfig(‘themeAssetPath’) Monday, 16 June 14
  13. How do I create layouts? • Drop in template variables

    & code snippets • Easily fixed with a simple template variable: • $.siteConfig(‘themeAssetPath’) Monday, 16 June 14
  14. How do I create layouts? • Template Variables (some) •

    $.siteConfig(‘assetPath’) • $.siteConfig(‘themeAssetPath’) • $.siteConfig(‘site’) • $.siteConfig(‘siteid’) • $.content(‘HTMLTitle’) • $.content(‘metaDesc’) • $.content(‘metaKeywords’) Monday, 16 June 14
  15. How do I create layouts? • Inspecting Available Attributes •

    <cfdump var=”#someVariable#” /> Monday, 16 June 14
  16. How do I create layouts? • Inspecting Available Attributes •

    <cfdump var=”#$.content().getAllValues()#” /> Monday, 16 June 14
  17. How do I create layouts? • Inspecting Available Attributes •

    <cfdump var=”#$.content().getAllValues()#” /> Monday, 16 June 14
  18. How do I create layouts? • Inspecting Available Attributes •

    $.content().getAllValues() • $.globalConfig().getAllValues() • $.siteConfig().getAllValues() • $.currentUser().getAllValues() • $.component().getAllValues() Monday, 16 June 14
  19. How do I create layouts? • Code Snippets (helper functions)

    • Dynamically generate Primary Navigation Monday, 16 June 14
  20. How do I create layouts? • Code Snippets (helper functions)

    • Dynamically generate Primary Navigation • Output the Body/Content Monday, 16 June 14
  21. How do I create layouts? • Code Snippets (helper functions)

    • Dynamically generate Primary Navigation • Output the Body/Content • Output Display Objects assigned to content regions Monday, 16 June 14
  22. How do I create layouts? • Code Snippets (helper functions)

    • Dynamically generate Primary Navigation • Output the Body/Content • Output Display Objects assigned to content regions • Display Components Monday, 16 June 14
  23. How do I create layouts? • Code Snippets • $.dspPrimaryNav(

    viewDepth=1 , id=‘navPrimary‘ , displayHome=‘always‘ , closeFolders=true ) Monday, 16 June 14
  24. How do I create layouts? • Code Snippets • $.dspPrimaryNav(

    viewDepth=1 , id=‘navPrimary‘ , displayHome=‘always‘ , closeFolders=true ) Monday, 16 June 14
  25. How do I create layouts? • Code Snippets • $.dspBody(

    body=$.content(‘body’) , pageTitle=$.content(‘title’) , showMetaImage=true , crumblist=false ) • Use this method instead of $.content(‘body’) Monday, 16 June 14
  26. How do I create layouts? • Code Snippets • Create

    CSS hooks • <body id=”#$.getTopID()#” class=”depth#ArrayLen($.event(‘crumbdata’))#”> Monday, 16 June 14
  27. How do I create layouts? • Code Snippets • Create

    CSS hooks • <body id=”#$.getTopID()#” class=”depth#ArrayLen($.event(‘crumbdata’))#”> • <div id=”container” class=”#$.createCSSID($.content(‘menuTitle’))#”> Monday, 16 June 14
  28. How do I create layouts? • Code Snippets • Create

    CSS hooks • <body id=”#$.getTopID()#” class=”depth#ArrayLen($.event(‘crumbdata’))#”> • <div id=”container” class=”#$.createCSSID($.content(‘menuTitle’))#”> Monday, 16 June 14
  29. How do I create layouts? • [m] Tags • Use

    “Mura Tags” when you want to output dynamic code with HTML Editor content Monday, 16 June 14
  30. How do I create layouts? • [m] Tags • Use

    “Mura Tags” when you want to output dynamic code with HTML Editor content Monday, 16 June 14
  31. How do I create layouts? • Optionally, include Mura’s CSS

    for basic styling of Mura-generated output Monday, 16 June 14
  32. How do I create layouts? • Optionally, include Mura’s CSS

    for basic styling of Mura-generated output • /{SiteID}/css/mura.X.x.x.min.css Monday, 16 June 14
  33. How do I create layouts? • Optionally, include Mura’s CSS

    for basic styling of Mura-generated output • /{SiteID}/css/mura.X.x.x.min.css • /{SiteID}/css/mura.X.x.x.skin.css Monday, 16 June 14
  34. How do I create layouts? • Optionally, include Mura’s CSS

    for basic styling of Mura-generated output • /{SiteID}/css/mura.X.x.x.min.css • /{SiteID}/css/mura.X.x.x.skin.css Monday, 16 June 14
  35. How do I create layouts? • Optionally, include Mura’s CSS

    for basic styling of Mura-generated output • /{SiteID}/css/mura.X.x.x.min.css • /{SiteID}/css/mura.X.x.x.skin.css Monday, 16 June 14
  36. How do I create layouts? • Optionally, include Mura’s CSS

    for basic styling of Mura-generated output • /{SiteID}/css/mura.X.x.x.min.css • /{SiteID}/css/mura.X.x.x.skin.css Monday, 16 June 14
  37. Review • Create ‘templates’ directory • Rename any .html files

    to .cfm & create ‘default.cfm’ Monday, 16 June 14
  38. Review • Create ‘templates’ directory • Rename any .html files

    to .cfm & create ‘default.cfm’ • Replace any # with ## Monday, 16 June 14
  39. Review • Create ‘templates’ directory • Rename any .html files

    to .cfm & create ‘default.cfm’ • Replace any # with ## • Wrap all output with <cfoutput></cfoutput> tags Monday, 16 June 14
  40. Review • Create ‘templates’ directory • Rename any .html files

    to .cfm & create ‘default.cfm’ • Replace any # with ## • Wrap all output with <cfoutput></cfoutput> tags • Drop in template variables & code snippets Monday, 16 June 14
  41. Review • Create ‘templates’ directory • Rename any .html files

    to .cfm & create ‘default.cfm’ • Replace any # with ## • Wrap all output with <cfoutput></cfoutput> tags • Drop in template variables & code snippets • Optionally, include Mura’s CSS for basic styling of Mura-generated output Monday, 16 June 14
  42. Can I make my own? • Class Extensions • New

    Content types Monday, 16 June 14
  43. Can I make my own? • Class Extensions • New

    Content types • New Component types Monday, 16 June 14
  44. Can I make my own? • Class Extensions • New

    Content types • New Component types • New User types Monday, 16 June 14
  45. Can I make my own? • Class Extensions • New

    Content types • New Component types • New User types • Related Content Sets Monday, 16 June 14
  46. Can I make my own? • Class Extensions • New

    Content types • New Component types • New User types • Related Content Sets Monday, 16 June 14
  47. Can I make my own? • Page / Home •

    Allow editing via Front-End Monday, 16 June 14
  48. Can I make my own? • Page / Home •

    Allow editing via Front-End • $.renderEditableAttribute( attribute=‘attributeName‘ , type=‘text or HTMLEditor‘ , label=‘Some Field Label’ ) Monday, 16 June 14
  49. Can I make my own? • Page / Home •

    Allow editing via Front-End • $.renderEditableAttribute( attribute=‘attributeName‘ , type=‘text or HTMLEditor‘ , label=‘Some Field Label’ ) Monday, 16 June 14
  50. Can I make my own? • Page / Home •

    Allow editing via Front-End • $.renderEditableAttribute( attribute=‘attributeName‘ , type=‘text or HTMLEditor‘ , label=‘Some Field Label’ ) Monday, 16 June 14
  51. Can I make my own? • Class Extensions • Define

    with XML • {ThemeName}/config.xml.cfm Monday, 16 June 14
  52. Can I make my own? • Class Extensions • Define

    with XML • {ThemeName}/config.xml.cfm Monday, 16 June 14
  53. Can I make my own? • Class Extensions • Define

    with XML • {ThemeName}/config.xml.cfm Monday, 16 June 14
  54. Review • Use Class Extensions (when needed) • Page /

    Home • Custom Component Types Monday, 16 June 14
  55. Review • Use Class Extensions (when needed) • Page /

    Home • Custom Component Types • Turn off Body Monday, 16 June 14
  56. Review • Use Class Extensions (when needed) • Page /

    Home • Custom Component Types • Turn off Body • Add more Body fields (think tabbed content) Monday, 16 June 14
  57. Review • Use Class Extensions (when needed) • Page /

    Home • Custom Component Types • Turn off Body • Add more Body fields (think tabbed content) • Use config.xml.cfm to define your theme-specific extensions Monday, 16 June 14
  58. Where can I learn more? • GetMura.com • BlueRiver.com •

    github.com/BlueRiver • github.com/SteveWithington • gist.github.com/SteveWithington • Mura CMS Developers on Google Groups & LinkedIn • Paid Support Plans: Short-Term & Annual • Training: Hosted, On-site, & Online Monday, 16 June 14