Mura CMS - 我有哪些显示正文内容的选项?

Mura CMS - What options do I have for displaying body content?

我正在为我新安装的 Mura 创建一些自定义页面布局(我是 Mura 新手,但我们在工作中使用它,所以我边学边学),但我需要一些关于页面正文的帮助。按照 Mura 附带的默认布局,以下代码输出页面主体:

#$.dspBody(
body=$.content('body')
, pageTitle=pageTitle
, crumbList=0
, showMetaImage=0
)#

将关联图像分配给页面后,当我有页面索引(例如文件夹)时,该图像就会显示出来,这很棒。但是,当您查看页面本身时,它也会出现在正文顶部。

看看上面的代码,有没有另一个 属性 我可以放到那里删除关联的图像?如果是这样,我在这里有哪些可用属性?我似乎无法在 Mura 站点上找到有关这段代码的任何文档。

根据要求,相关布局的完整代码

<cfoutput>
    <cfinclude template="inc/html_head.cfm" />
    <body id="#$.getTopID()#" class="depth-#$.content('depth')# #$.createCSSHook($.content('menuTitle'))#">
        <div class="coverImageWrapper">
            <div class="coverImage">
                <cfinclude template="inc/header.cfm" />
                <cfinclude template="inc/departmentName_socialMedia.cfm" />
                <cfinclude template="inc/topNav.cfm" />
            </div>
        </div>
        <div class="secondaryPageWrapper">
            <div class="container">
                <div class="row">
                    <div class="col-md-8 mainCol">

                        <cfinclude template="inc/breadcrumb.cfm" />
                        <cfset pageTitle = $.content('type') neq 'Page' ? $.content('title') : ''>
                        #$.dspObjects(2)#
                        #$.dspBody(
                        body=$.content('body')
                        , pageTitle=pageTitle
                        , crumbList=0
                        , showMetaImage=0
                        )#
                    </div>
                    <aside class="col-md-4 sideCol">
                        #$.dspObjects(3)#
                    </aside>
                </div>
            </div>
        </div>
        <cfinclude template="inc/department_footer.cfm" />
        <cfinclude template="inc/footer.cfm" />
        <cfinclude template="inc/html_foot.cfm" />
    </body>
</cfoutput>

@JesseEarley,

首先,请在 http://docs.getmura.com/v7/theme-developers/ 查看我们的在线主题开发者指南。我相信你会发现它很有用。

至于您的相关图片问题,如果您使用的是最新版本的 Mura,并且使用默认主题 MuraBootstrap3,那么您会发现一个标有 content-types 的目录。在那里,您应该会看到另一个标有 page 的目录和一个标有 index.cfm 的文件。该文件控制 body 的视图。在该文件中,有一段代码专门用于输出关联图像:

    <!--- Primary Associated Image --->
    <cfif $.content().hasImage(usePlaceholder=false)>
        <cfscript>
            img = $.content().getImageURL(
                size = 'carouselimage' // small, medium, large, custom, or any other pre-defined image size
                ,complete = false // set to true to include the entire URL, not just the absolute path (default)
            );
        </cfscript>
        <div class="mura-asset">
            <a class="mura-meta-image-link" href="#$.content().getImageURL()#" title="#esapiEncode('html_attr', $.content('title'))#" rel="shadowbox[body]">
                <img class-"mura-meta-image carouselimage" src="#img#" alt="#esapiEncode('html_attr', $.content('title'))#">
            </a>
        </div>
    </cfif>
<!--- /Primary Associated Image --->

这是您可以输入自定义逻辑的地方,如果您愿意,也可以将其完全删除。

澄清

$.dspBody()的调用触发了requirements.mura.content.contentRenderer.cfc:dspBody()下的方法。在该方法中,Mura 将查看您是否对指定内容类型的呈现进行了任何覆盖(例如,PageFolderCalendar 等),并且有覆盖输出的方法的数量。例如,在您的主题 eventHandler.cfc 中,您可以有一个名为 onPageDefaultBodyRender() 的方法,如果它 returns 是一个字符串,则将使用该字符串。以类似的方式,Mura 将扫描您主题中的特定目录,例如 content_types,如果找到,将扫描内容类型,例如 page,然后使用 index.cfm 作为渲染的 body。这正是这种情况下发生的事情。

正如我在下面的注释中所述,我目前正在编写文档,并将以更清晰、希望更清晰的格式提供这些信息。现在,您可能想在 http://docs.getmura.com/v7/videos/webinars/super-fast-app-dev-with-mura-7/ 查看我的演示文稿,以便在我编写新文档时快速了解其中的一些内容。

此外,作为替代方案,您可以暂时删除 content_types 目录,或将其重命名为其他名称,以查看 dspBody() 如何在没有覆盖的情况下呈现您的内容。

干杯, 史蒂夫