1

我正在为我新安装的 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>

在此处输入图像描述

4

1 回答 1

3

@JesseEarley,

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

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

    <!--- 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(),如果它返回一个字符串,则将使用该字符串。以类似的方式,Mura 将扫描您主题中的特定目录,例如content_types,如果找到,然后将扫描内容类型,例如page,然后将index.cfm用作主体的渲染。这正是在这种情况下发生的事情。

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

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

干杯,史蒂夫

于 2017-04-19T21:37:18.977 回答