dotCMS - 创建自定义页面(页面内容类型)

时间:2016-06-06 11:34:24

标签: dotcms

修改

我的目标:

  1. 使用页眉和页脚以及正文创建新闻页面模板。
  2. 新闻页面需要一个内容编辑器表单,以便将内容添加到两个字段:标题故事
  3. 每个新闻页面都需要自己的SEO元数据(关键字/描述标题)。
  4. 这些故事需要在CMS中轻松找到,以便日后编辑等。
  5. 解决这个问题的最佳方式是什么?

    我目前拥有的是“页面”内容类型,其中包含我需要的所有表单字段。

    要创建新的新闻,我现在这样做:

    1. 转到网站浏览器
    2. 右键单击 [myFolder]
    3. 点击“” - > 网页
    4. 从选择框中选择我的页面(即我之前创建的页面内容类型)
    5. 我现在看到我的表格,填写并保存/发布,我看到了,但是我之前表达过的问题。
    6. 我很确定我会以错误的方式解决这个问题,但是正确的方法是什么?

      -------------

      我正在努力在 dotCMS 中创建一个非常基本的页面。

      这是我想要做的:

      1. 为内容编辑器创建表单,以便能够向页面添加内容(内容类型:名为“myForm”的页面) 完成
      2. 表单包含所有默认字段(页面内容类型附带的seo stuff等) +我创建的两个额外文本字段(fieldA和fieldB) DONE
      3. 创建一个容器并添加速度变量名称。的完成
      4. 在某些HTML中包围速度变量名称。 <div>$fieldA</div><div>$fieldB</div> 完成
      5. 使用 template.vtl 文件完成
      6. 创建新主题

        这就是全部设置。我现在通过站点浏览器在文件夹中创建一个新页面,从下拉菜单中选择名为“ myForm ”的新“页面” 。我看到我的表单并输入我的数据,保存并发布。

        结果。我没看到我的任何数据。只是一个空白页面。

        所以我检查文档,看看我错过了什么。

        有一个页面解释我需要在我的template.vtl中添加一些速度,如下所示:

        #if($dotPageContent && $dotPageContent.fieldA)
            <div class="row">
                #dotedit($!dotPageContent.inode,$!dotPageContent.fieldA)
            </div>
        #end
        
        #if($dotPageContent && $dotPageContent.fieldB)
            <div class="row">
                #dotedit($!dotPageContent.inode,$!dotPageContent.fieldB)
            </div>
        #end
        

        link to dotCMS help page

        好的,现在当我再次检查我的页面时,确实显示了数据。但有一个问题。我的容器中的HTML无法解析。

        E.g。 <div>$fieldA</div><div>$fieldB</div>没有<div></div>标记。

        所以现在我担心这不是创建页面的方法。

        我之所以选择“页面”内容类型的原因是它已经准备好与SEO元数据一起使用“高级属性”这个页面(顺便说一下,所有这些都很好)。

        有人可以指出我可能错过的内容,或者更好的解决方法吗?

        提前致谢。

2 个答案:

答案 0 :(得分:1)

如果您可以在某处发布容器和模板代码并在此处包含链接,我可以帮助您确定解决问题,但我认为可能会发生的事情是您将页面内容类型与容器定义的内容类型混淆。

这是一个可能有助于概念区分的快速解释: http://screencast.com/t/PlEXKU9glGd

我在视频中解释的是,页面内容类型仅用于页面属性 - 而不是内容添加。就像你想要在你的许多页面上使用不同的facebook链接,或者在每个页面上绑定一些其他特殊属性。要将内容放入容器中,请使用辅助“内容”内容类型,并将该内容类型添加到容器的代码字段中。当页面加载时,执行按此顺序执行,页面内容加载,页面属性和元数据设置,页面调用提供布局的模板,模板调用容器,容器具有格式化内容的代码,以及然后内容按照内容发布者放置在容器中的顺序执行。页面内容类型并非旨在真正提供前端用户实际看到的除页面标题,页面URL以及在页面的背景html中“静默”设置的属性和元数据之外的任何信息。

您也可能会发现加入dotCMS communty论坛很有帮助:http://dotcms.com/forum/

希望有所帮助

答案 1 :(得分:0)

除了我的其他帖子之外,我确实在测试高级模板中对您尝试的内容进行了测试,并且template.vtl文件确实显示了页面内容,只要您实际编辑页面属性并设置,在这种情况下,字段A:

<!DOCTYPE html>
<html lang="en">
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->

#set($dotTheme = $contents.getEmptyMap())
#set($blah1 = $dotTheme.put("path", "/application/themes/one-pager/"))

#set($dotThemeLayout = $contents.getEmptyMap())
#set($blah2 = $dotThemeLayout.put("title", "Bear Mountain"))

<head>  
    #if($dotPageContent && $dotPageContent.fieldA)
        <div class="row">
            #dotedit($!dotPageContent.inode,$!dotPageContent.fieldA)
        </div>
    #end
    ##dotParse("${dotTheme.path}html_head.vtl")

</head>
#set($utilClass = $pageTitle.toLowerCase().replace(' ', '-'))

<body data-spy="scroll" data-target=".top-nav" data-offset="100">

<div class="body-wrapper">

    #dotParse("${dotTheme.path}header.vtl")

    <div class="content-wrapper" id="hotel">
        <div class="container">
            <div class="row">
                <div class="col-sm-12">
                    <h2>The Lodge</h2>
                </div>
            </div>
            <div class="row">
                <div class="col-md-6 col-sm-12">
                    <div class="wow fadeInLeft" data-wow-delay=".8s">
                        ## Container: Default 2 (Page Content)
                        ## This is autogenerated code that cannot be changed
                        #parseContainer('5eb11b21-6b13-4fb8-a823-1de20bba56c0')
                   </div>
               </div>
               <div class="col-md-6 col-sm-12">
                    <div class="wow fadeInRight" data-wow-delay="1.2s">
                        ## Container: Default 3 (Page Content)
                        ## This is autogenerated code that cannot be changed
                        #parseContainer('f1ba7688-453c-4c0d-a214-e5ac802b8034')
                   </div>
              </div>
           </div>
       </div>
    </div>

    <div class="image-wrapper bg-image-1 hidden-xs" data-stellar-background-ratio="0.5"></div>

    <div class="content-wrapper">
        <div class="container">
            <div class="row">
                <div class="col-sm-12">
                    ## Container: Default 1 (Page Content)
                    ## This is autogenerated code that cannot be changed
                    #parseContainer('56bd55ea-b04b-480d-9e37-5d6f9217dcc3')
               </div>
          </div>
      </div>
   </div>
    <div class="image-wrapper bg-image-2 hidden-xs" data-stellar-background-ratio="0.7"></div>
    <div class="content-wrapper">
        <div class="container">
            <div class="row">
                <div class="col-sm-12">
                    ## Container: Default 4 (Page Content)
                    ## This is autogenerated code that cannot be changed
                    #parseContainer('a6e9652b-8183-4c09-b775-26196b09a300')
               </div>
          </div>
      </div>
   </div>
</div>

#dotParse("${dotTheme.path}footer.vtl")
<a href="http://www.dotcms.com" style="display:block;position:fixed;bottom:-175px;">Powered by Dotcms - The Leading Open Source Java Content Management System</a>

</body>
</html>

这是在demo.dotcms.com上测试的:U:admin@dotcms.com / P:admin