MuraCon Notes - Mura Themes 101(ish)

October 01, 2013

Mura Themes 101(ish) -- Ronnie Duke, Mod Media

A Mura Theme can...
extend core Mura functionality
can contain custom logic
retrieve info from the Mura architecture
can be as flexible as needed
-- can have your own little world inside a theme if you want to get really complex
make your site beautiful
(they're designed to contain all your HTML/CSS, etc)

Tools for Themes
- Page templates
- Mura $scope
- Robust Image management

Content Renderer
- can create custom methods, or override default functionality
- event handler
- mobile rendering
- site bundles

Theme Structure
- default theme is MuraBootstrap
/assets - for your bootstrap libraries, etc.
/compiled - for compressed/minified files
config.xml.cfm
-- when you move a theme from site to site, it can create all your custom functionality
contentRenderer.cfc
/css -- LESS-specific files
-- auto compiles/minifies code in this folder
-- built-in LESS compiling!

/display_objects
eventHanlder.cfc
/images
/js
/resourceBundles -- different lang settings
/templates -- layout templates and includes

creating a brand new theme from scratch
- do this at the Explorer/OS shell level
- make a new folder in /themes directory
- ONLY thing a theme NEEDS is a /templates directory
- and you need a default.cfm file in that directory

Mura Scope to access content attributes
get the page's title -- $.content('title'), etc

Can also insert Mura objects
insert user-editable content into your templates!
$.dspObject('component', 'some component')
etc

include custom files
$.dspThemeInclude('display_objects/my_object.cfm');
- can store custom CF logic in its own file and include it this way

the

500 Error

Syntax Error, Invalid Construct

Code: 0

Type: 0


Column: 0
ID: ??
Line: 2736
Raw Trace: content.contentrenderer_cfc$cf.udfCallb(/mura/content/contentRenderer.cfc:2736)
Template: D:\Websites\southofshasta.com\core\mura\content\contentRenderer.cfc
Type: cfml


Column: 0
ID: ??
Line: 88
Raw Trace: content.contentrendererutility_cfc$cf.udfCall1(/mura/content/contentRendererUtility.cfc:88)
Template: D:\Websites\southofshasta.com\core\mura\content\contentRendererUtility.cfc
Type: cfml


Column: 0
ID: ??
Line: 3089
Raw Trace: content.contentrenderer_cfc$cf.udfCalle(/mura/content/contentRenderer.cfc:3089)
Template: D:\Websites\southofshasta.com\core\mura\content\contentRenderer.cfc
Type: cfml


Column: 0
ID: ??
Line: 1918
Raw Trace: content.contentrenderer_cfc$cf.udfCall7(/mura/content/contentRenderer.cfc:1918)
Template: D:\Websites\southofshasta.com\core\mura\content\contentRenderer.cfc
Type: cfml


Column: 0
ID: ??
Line: 262
Raw Trace: cfobject_cfc$cf.udfCall3(/mura/cfobject.cfc:262)
Template: D:\Websites\southofshasta.com\core\mura\cfobject.cfc
Type: cfml


Column: 0
ID: ??
Line: 135
Raw Trace: masascope_cfc$cf.udfCall1(/mura/MasaScope.cfc:135)
Template: D:\Websites\southofshasta.com\core\mura\MasaScope.cfc
Type: cfml


Column: 0
ID: ??
Line: 28
Raw Trace: themes.sos.templates.one_column_cfm180$cf$4hgs.call(/muraWRM/themes/sos/templates/one-column.cfm:28)
Template: D:\Websites\southofshasta.com\themes\sos\templates\one-column.cfm
Type: cfml


Column: 0
ID: ??
Line: 2
Raw Trace: themes.sos.templates.default_cfm$cf$4hgr.call(/muraWRM/themes/sos/templates/default.cfm:2)
Template: D:\Websites\southofshasta.com\themes\sos\templates\default.cfm
Type: cfml


Column: 0
ID: ??
Line: 130
Raw Trace: translator.standardhtmltranslator_cfc$cf$4vnk.udfCall(/mura/Translator/standardHTMLTranslator.cfc:130)
Template: D:\Websites\southofshasta.com\core\mura\Translator\standardHTMLTranslator.cfc
Type: cfml


Column: 0
ID: ??
Line: 169
Raw Trace: plugin.pluginstandardeventwrapper_cfc$cf.udfCall(/mura/plugin/pluginStandardEventWrapper.cfc:169)
Template: D:\Websites\southofshasta.com\core\mura\plugin\pluginStandardEventWrapper.cfc
Type: cfml


Column: 0
ID: ??
Line: 119
Raw Trace: handler.standardeventshandler_cfc$cf.udfCall1(/mura/Handler/standardEventsHandler.cfc:119)
Template: D:\Websites\southofshasta.com\core\mura\Handler\standardEventsHandler.cfc
Type: cfml


Column: 0
ID: ??
Line: 1404
Raw Trace: utility_cfc$cf.udfCall7(/mura/utility.cfc:1404)
Template: D:\Websites\southofshasta.com\core\mura\utility.cfc
Type: cfml


Column: 0
ID: ??
Line: 119
Raw Trace: plugin.pluginstandardeventwrapper_cfc$cf.udfCall(/mura/plugin/pluginStandardEventWrapper.cfc:119)
Template: D:\Websites\southofshasta.com\core\mura\plugin\pluginStandardEventWrapper.cfc
Type: cfml


Column: 0
ID: ??
Line: 454
Raw Trace: handler.standardeventshandler_cfc$cf.udfCall3(/mura/Handler/standardEventsHandler.cfc:454)
Template: D:\Websites\southofshasta.com\core\mura\Handler\standardEventsHandler.cfc
Type: cfml


Column: 0
ID: ??
Line: 1404
Raw Trace: utility_cfc$cf.udfCall7(/mura/utility.cfc:1404)
Template: D:\Websites\southofshasta.com\core\mura\utility.cfc
Type: cfml


Column: 0
ID: ??
Line: 119
Raw Trace: plugin.pluginstandardeventwrapper_cfc$cf.udfCall(/mura/plugin/pluginStandardEventWrapper.cfc:119)
Template: D:\Websites\southofshasta.com\core\mura\plugin\pluginStandardEventWrapper.cfc
Type: cfml


Column: 0
ID: ??
Line: 909
Raw Trace: content.contentserver_cfc$cf.udfCall2(/mura/content/contentServer.cfc:909)
Template: D:\Websites\southofshasta.com\core\mura\content\contentServer.cfc
Type: cfml


Column: 0
ID: ??
Line: 294
Raw Trace: content.contentserver_cfc$cf.udfCall1(/mura/content/contentServer.cfc:294)
Template: D:\Websites\southofshasta.com\core\mura\content\contentServer.cfc
Type: cfml


Column: 0
ID: ??
Line: 380
Raw Trace: content.contentserver_cfc$cf.udfCall1(/mura/content/contentServer.cfc:380)
Template: D:\Websites\southofshasta.com\core\mura\content\contentServer.cfc
Type: cfml


Column: 0
ID: ??
Line: 780
Raw Trace: content.contentserver_cfc$cf.udfCall2(/mura/content/contentServer.cfc:780)
Template: D:\Websites\southofshasta.com\core\mura\content\contentServer.cfc
Type: cfml


Column: 0
ID: ??
Line: 75
Raw Trace: index_cfm$cf$479x.call(/index.cfm:75)
Template: D:\Websites\southofshasta.com\index.cfm
Type: cfml


etc

can import different Mura objects into a theme
$.dspObject('feed', 'from our blog')

Can override display objects
Mura comes w/ built-in Display Objects for forms, etc
can override those for customizing the styling
just copy the file into your theme /display-object directory

Robust Image Management
for managing images that are associated w/ a content node

Content Renderer
- override Mura functions
- write your own custom methods and use them with the $scope in your app
- control site settings
- control whether or not front-end tools are displayed for a user, etc.

<cffunction name="foo"> in content renderer
then in any template or display object just do:
$.foo()
works in Mura TAG too:

500 Error

The method 'FOO' is not defined


Column: 0
ID: ??
Line: 127
Raw Trace: masascope_cfc$cf.udfCall1(/mura/MasaScope.cfc:127)
Template: D:\Websites\southofshasta.com\core\mura\MasaScope.cfc
Type: cfml


Column: 0
ID: ??
Line: 2736
Raw Trace: content.contentrenderer_cfc$cf.udfCallb(/mura/content/contentRenderer.cfc:2736)
Template: D:\Websites\southofshasta.com\core\mura\content\contentRenderer.cfc
Type: cfml


Column: 0
ID: ??
Line: 88
Raw Trace: content.contentrendererutility_cfc$cf.udfCall1(/mura/content/contentRendererUtility.cfc:88)
Template: D:\Websites\southofshasta.com\core\mura\content\contentRendererUtility.cfc
Type: cfml


Column: 0
ID: ??
Line: 3089
Raw Trace: content.contentrenderer_cfc$cf.udfCalle(/mura/content/contentRenderer.cfc:3089)
Template: D:\Websites\southofshasta.com\core\mura\content\contentRenderer.cfc
Type: cfml


Column: 0
ID: ??
Line: 1918
Raw Trace: content.contentrenderer_cfc$cf.udfCall7(/mura/content/contentRenderer.cfc:1918)
Template: D:\Websites\southofshasta.com\core\mura\content\contentRenderer.cfc
Type: cfml


Column: 0
ID: ??
Line: 262
Raw Trace: cfobject_cfc$cf.udfCall3(/mura/cfobject.cfc:262)
Template: D:\Websites\southofshasta.com\core\mura\cfobject.cfc
Type: cfml


Column: 0
ID: ??
Line: 135
Raw Trace: masascope_cfc$cf.udfCall1(/mura/MasaScope.cfc:135)
Template: D:\Websites\southofshasta.com\core\mura\MasaScope.cfc
Type: cfml


Column: 0
ID: ??
Line: 28
Raw Trace: themes.sos.templates.one_column_cfm180$cf$4hgs.call(/muraWRM/themes/sos/templates/one-column.cfm:28)
Template: D:\Websites\southofshasta.com\themes\sos\templates\one-column.cfm
Type: cfml


Column: 0
ID: ??
Line: 2
Raw Trace: themes.sos.templates.default_cfm$cf$4hgr.call(/muraWRM/themes/sos/templates/default.cfm:2)
Template: D:\Websites\southofshasta.com\themes\sos\templates\default.cfm
Type: cfml


Column: 0
ID: ??
Line: 130
Raw Trace: translator.standardhtmltranslator_cfc$cf$4vnk.udfCall(/mura/Translator/standardHTMLTranslator.cfc:130)
Template: D:\Websites\southofshasta.com\core\mura\Translator\standardHTMLTranslator.cfc
Type: cfml


Column: 0
ID: ??
Line: 169
Raw Trace: plugin.pluginstandardeventwrapper_cfc$cf.udfCall(/mura/plugin/pluginStandardEventWrapper.cfc:169)
Template: D:\Websites\southofshasta.com\core\mura\plugin\pluginStandardEventWrapper.cfc
Type: cfml


Column: 0
ID: ??
Line: 119
Raw Trace: handler.standardeventshandler_cfc$cf.udfCall1(/mura/Handler/standardEventsHandler.cfc:119)
Template: D:\Websites\southofshasta.com\core\mura\Handler\standardEventsHandler.cfc
Type: cfml


Column: 0
ID: ??
Line: 1404
Raw Trace: utility_cfc$cf.udfCall7(/mura/utility.cfc:1404)
Template: D:\Websites\southofshasta.com\core\mura\utility.cfc
Type: cfml


Column: 0
ID: ??
Line: 119
Raw Trace: plugin.pluginstandardeventwrapper_cfc$cf.udfCall(/mura/plugin/pluginStandardEventWrapper.cfc:119)
Template: D:\Websites\southofshasta.com\core\mura\plugin\pluginStandardEventWrapper.cfc
Type: cfml


Column: 0
ID: ??
Line: 454
Raw Trace: handler.standardeventshandler_cfc$cf.udfCall3(/mura/Handler/standardEventsHandler.cfc:454)
Template: D:\Websites\southofshasta.com\core\mura\Handler\standardEventsHandler.cfc
Type: cfml


Column: 0
ID: ??
Line: 1404
Raw Trace: utility_cfc$cf.udfCall7(/mura/utility.cfc:1404)
Template: D:\Websites\southofshasta.com\core\mura\utility.cfc
Type: cfml


Column: 0
ID: ??
Line: 119
Raw Trace: plugin.pluginstandardeventwrapper_cfc$cf.udfCall(/mura/plugin/pluginStandardEventWrapper.cfc:119)
Template: D:\Websites\southofshasta.com\core\mura\plugin\pluginStandardEventWrapper.cfc
Type: cfml


Column: 0
ID: ??
Line: 909
Raw Trace: content.contentserver_cfc$cf.udfCall2(/mura/content/contentServer.cfc:909)
Template: D:\Websites\southofshasta.com\core\mura\content\contentServer.cfc
Type: cfml


Column: 0
ID: ??
Line: 294
Raw Trace: content.contentserver_cfc$cf.udfCall1(/mura/content/contentServer.cfc:294)
Template: D:\Websites\southofshasta.com\core\mura\content\contentServer.cfc
Type: cfml


Column: 0
ID: ??
Line: 380
Raw Trace: content.contentserver_cfc$cf.udfCall1(/mura/content/contentServer.cfc:380)
Template: D:\Websites\southofshasta.com\core\mura\content\contentServer.cfc
Type: cfml


Column: 0
ID: ??
Line: 780
Raw Trace: content.contentserver_cfc$cf.udfCall2(/mura/content/contentServer.cfc:780)
Template: D:\Websites\southofshasta.com\core\mura\content\contentServer.cfc
Type: cfml


Column: 0
ID: ??
Line: 75
Raw Trace: index_cfm$cf$479x.call(/index.cfm:75)
Template: D:\Websites\southofshasta.com\index.cfm
Type: cfml



(do an index.cfm?appreload when you make these changes, to make sure that they all take effect correctly...basically do this after any change to the /theme directory to be safe)

Event Handler
- override page behavior

example:
when a body renders on a page
the event running is onPageDefaultBodyRender()
can put a function with that name in your theme, to override it and change how a page renders on the screen.

can also hook into other events
lots of events to choose from (check the docs/book for a complete list)

Content Iterator--
- way to grab and feed content onto the site
- can utilize Mura Content Collections
- users can define rules that are applied to collections, what kind of content its grabbing, what format it needs to be in, etc
- can use your own markup in the iterator to style it however you want
- no need to write custom queries, it's all built into Mura

(to grab the current siteid via code: siteid = $.event('siteid') )

mobile rendering --
Mura has ability to auto detect and serve mobile content
(if you're working in Responsive stuff, this doesn't really apply)
but if you're working on a site that has very specific mobile stuff, this is useful
can set different controls for mobile, make them show up on on Mobile, not at all, on both mobile and desktop, etc.

Site Bundles
can use to distribute themes WITH sample content via Site Bundle