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

Getting It Done With Mura Themes

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

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