`
jiran1221
  • 浏览: 18011 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

dotCMS开发网站指南之二

阅读更多

 

一、概要

       本指南的目标是一步一步的引导读者在dotCMS平台中创建自己想要的模版。换句话说,就是创建自己心怡的站点。这个指南在官方网站是有的,所以我更多的认为我仅仅是一个翻译者而已。但是,这里面也会加入我对dotCMS的各个概念的认识和理解,所以我觉得此文档还是可以帮到大家的。

二、前提条件

       为了更好的理解本指南所有的知识点,你必须对HTML语言有良好的理解;同时你必须熟悉在dotCMS中创建页面,并能够将“内容”添加到“容器”中。如果你想学习上述的知识点,请查阅相关的用户指南。不过大家不用担心,我会在后面有较详细的解释和说明。

三、概念定义(解释)

       模版(Template): 

       模版就是对于网页设计人员(或者网站开发者)在创建新的HTML页面、XHTML页面或者XML页面时可用的(有用的)一些布局。组成dotCMS模版的代码开起来非常类似于标准的HTML页面的代码(或者标准的XML页面代码)。也就是说我们开发一个dotCMS的模版就像写一个标准HTML或XML文件是基本一样的,至少看起来是这样的。模版文件和标准HTML文件的唯一不同之处是:模版文件中包含了dotCMS中的叫“容器”的东西。“容器”的概念我会在后面马上做出详细的解释,所以请大家不必着急。其实,“容器”就是扮演了“服务器端”的包含,它是一块动态的内容。

       容器(Container): 

       容器在dotCMS平台下扮演了两个重要的功能。第一,它们扮演的是“服务器端”的包含文件并且它们被作为“可重用的HTML元素”放置到“模版”和“页面”中。一种良好的使用“容器”该功能的方式是例如:全局的“页头”和“页尾”,"主要航条/导航“和 ”站点广泛类型的内容“等等。第二,容器可从”内容仓库“中选择相应 的”内容“放置到模版中,并且可以决定如何格式化内容、内容是否可以被编辑等操作;当然,执行这些动作都可以通过后台的编辑模式来实现。

       内容仓库(Content Repository): 

       它基于的一种重复使用的思想。我们把”内容“从页面中完全的分离出来,就是想使它可以在一个站点的各个地方被重复使用,甚至可以在多个站点之间被重复的使用。这些内容就组成了内容仓库的概念。

       结构体(Structures): 

       也叫实体,结构体用于容纳和组织在dotCMS中被创建出来的字段信息。dotCMS的管理员们可以利用这些结构体指定在容器中显示的内容类型。这些内容结构体把信息分散到各个字段变量中(例如:标题、子标题、描述、主体等等字段)。这样可以灵活的在你站点的页面中显示全部或部分的字段信息。

       内容(Content): 

       它是由所给定的结构体的字段组成的一段内容。想象一下其实很简单的,结构体就像所得税表单,而内容就是你填写的详细的信息。

       索引(Inode):  

       也叫信息节点,它是唯一标识模版、容器、内容或一段信息的数字。也就是我们在dotCMS中建立的这些东西,系统都会为其建立一个唯一的索引值,这样做的目的额可以方便后面引用模版,容器,内容等实体。

       窗口小部件(Widget): 

       它其实也是一段内容块,只是在它里面显示的内容可以动态展示。

       内容类型 (Content Types): 

       它是一种特殊的结构体。例如,”传记内容类型“。

四、剧情概要(模拟场景):

       要求:

       a. 假定我们已经邀请美工设计好网站的主页面。如下图所示:       

       b. 实现新闻列表: 我们必须能够手动的添加、删除和重新排序新闻列表。即实现上图中蓝色框中的部分,用于展现新闻列表。当然我们的主页也不必须是上图中所示,只要大家随便设计个主页即可,没有必要是这个样子。只是官方给的示例使用了这样的一个例子,所以我也采用了它的例子。

       c. 实现新闻详细页面: 必须能够在链接中通过索引值(inode)动态展现新闻故事的详细内容;如果输入了错误的索引值,那么最新的新闻条目将被显示。

五、实现步骤:

       按照"结构体->容器->模版->页面->内容"的创建顺序是重要的。因为它们之间是由很强的联系的。后所要创建的东西要依赖于前面所创建的东西。当容器在被创建之后要使用结构体的变量,所以我们必须在容器创建之前创建所要使用的结构体。当创建模版时你需要查找你想包含的容器。当你创建页面后,你需要选择一个模版。当你拥有了页面后,你可以创建或重复使用内容。保持这样的顺序多次后,你会明显的感觉到越来越清楚明白。如果我们按照这样的顺序执行多次后,我们势必拥有了一定数量的结构体、容器、模版、内容等东西;并且我们可以重复使用这些东西,除非我们必须创建我们没有的东西。但是,无论如何请保持这样正确的顺序。

     第一步: 创建结构体(有时叫Content Structure,其实我觉得是多余的,这种东西必然是用来逻辑分离内容信息本身的,所以没有必须要这样去说。个人建议,其实很无聊的问题。)

     1. 点击  "Structures" 选项卡

     2. 点击“Create New Structure” 链接

     3. 填写“Add Name” and “Description” 两个属性

     4. 点击  "Save Structure" 保存结构体

     5. 点击   "Add New Field" 依次按照下图的顺序添加相应的属性即可

 

     第二步: 创建容器

     容器将会在可以被手工的添加、重排序和移除的主页上列出来。每条新闻条目的标题将链接到它所对应的详细页面上,并且是通过内容的索引(inode)来访问到详细页面的。

     1. 点击“Website” 选项卡,然后点击“Container” 选项卡.

     2. 点击 “Add Container” 按钮.

     3. 在代码(Code)文本域中我们将要展现New Item(结构体)的headline(新闻摘要变量),并且给它一个超链接链接到新闻条目的详细页面,同时此超链接要加入内容的索引参数以便访问到相对应的页面中,示例代码:(<li><a href="/news/index.dot?inode=$!ContentInode">$!{NewsHeadline}</a></li>),详细的操作步骤如下图所示。

 

  

     第三步:创建模版(主页模版)

     1. 点击“Website” 选项卡.

     2. 点击 “Templates” 选项卡.

     3. 点击 “Add Template” 按钮.

     4. 把”容器“放置到”模版“中是通过光标闪动的地方放置容器的方式来完成的,同时点击”Add Container“按钮。这是会弹出一个Window窗口,在这个窗口中我们可以选择合适的”容器“,它会在后面的模版页面中放置我们需要的代码。这是很神奇的一件事情,模版中的这段刚刚插入的Code代表了一个容器。

     5. 我们可以重复第4步,直到你在模版中选择好了所有的容器,点击“save and publish“按钮,这样的话一个完整的模版就做好了。

     注意: 

     a.  在模版中把”容器“用一些”带宽度属性约束的元素“包围起来是为了帮助我们在预览的模式下真个页面的每个元素的位置。也就是控制显示的效果,不会出现显示错位的现象。

     b.  一个”容器“ 只能在一个”模版“中使用”一次“,切记。

 

     第四步:创建主页面(HomePage)

     创建主页面其实需要注意的东西还是满多的。例如,页面的名字(它叫页面的标题)最好叫成是index这样做的结果就是以后访问网站会很方便。而且貌似dotCMS中的页面必须放入到某个文件夹中(而且都有个虚拟的访问路径,这个倒是难不住本人,我是这方面的高手,呵呵),所以要在自己所建的站点下下新建所需的文件夹。比如:我建立了home、images、scripts、styles、media等文件夹用于放置我们站点所需的网页及相关文件。当然为了更好的区分网站的各个板块,我们在这个示例中还应建立news文件夹来放置和新闻板块相关的文件。(注意,用于放置放置主页的文件夹最好起名为"home",这样做的目的主要是为了方便站点的访问。本人在测试的过程发现在dotCMS中先创建文件夹然后删除,dotCMS平台依然会认为这个文件夹还存在,所以大家在新建文件夹的时候要特别注意,否则建立错误后比较的麻烦。)           

     1. 查找叫“home”的文件夹, 如果没有找到就创建它,确保选择我们刚刚建立的”template“文件来创建主页面.

     2. 你一旦保存了该页面, 双击它就可以编辑该页面.

     3. 到目前为止你就能够把已有的”新闻条目“添加到”容器“中或者从主页面中创建新的”新闻条目”

     4. 不要忘记点击”save and publish“按钮以便于你能够马上检查到你对主页的改变。

 

     第五步:创建详细页面(新闻)

     1. 创建"news"文件夹,若果没有的话,并且创建一个"index"页面使用"generic body page"模版。

     (说明:该模版dotCMS是自带的典型布局“头,尾,左栏,中肚”)

     2. 添加widget内容块到body(中肚)里,代码如下:

     #set($inode = $request.getParameter('inode'))

     #if($inode )

     #getContentMapDetail($inode)

     #else

     #pullContent('+type:content +live:true +deleted:false

       +structureInode:5 +languageId:1' '1' 'date1 asc')

     #end

     <h2>$!{content.headline}</h2>

     <span>$date.format('MM/dd/yyyy',$content.publishDate)</span>

     <hr/>

     #if($UtilMethods.isSet($content.Image) && ($content.Image != '0'))

     <img src="/resize_image?inode=${content.Image.trim()}&w=100"

     alt="$content.NewsHeadline" style="float:left; margin:0px 10px 5px

     0px" />

     #end

     $!{content.body}

     3. 添加widget内容块到左栏中,列出最新的新闻列表,代码如下:

     #pullContent('+type:content +live:true +deleted:false

     +structureInode:5 +languageId:1' '5' 'modDate')

     <div class="news">

     <ul>

     #foreach($content in $list)

     <li><a

     href="/news/?inode=$!{content.inode}">$!{content.NewsHeadline}</a></li>

     #end

     </ul>

     </div>

     4. 发布最终的detail页面.

 

     dotCMS的开发指南到此全部翻译完成,祝你好运!

 

分享到:
评论
1 楼 ankang529 2015-01-26  
您好,想请教您个问题。就是我如果新建一个站点,比如demo.xinhua.com,我应该做哪些配置可以让我直接访问demo.xinhua.com。

还有,而且貌似dotCMS中的页面必须放入到某个文件夹中(而且都有个虚拟的访问路径,这个倒是难不住本人,我是这方面的高手,呵呵。这句话中虚拟的访问路径是什么意思。谢谢了。QQ531444905

相关推荐

    dotCms说明文档

    #### 二、dotCMS的关键特性及其优势 ##### 1. 灵活性 dotCMS的核心优势之一在于其灵活性。这主要体现在以下几个方面: - **多语言支持**:系统内置多语言管理功能,能够轻松实现国际化网站的构建。 - **自定义...

    前端开源库-dotcms-js

    3. **组件开发**:创建自定义组件,遵循dotcms-js的开发规范和样式指南。 4. **测试**:利用单元测试和集成测试确保代码质量,确保新功能的稳定性和兼容性。 5. **部署**:将编译后的前端代码部署到生产环境,与...

    dotcms配置 java开发的开源的CMS,典型的SSH架构

    DotCMS是一款基于Java开发的开源内容管理系统,采用经典的SSH(Spring、Hibernate、Struts)架构。这个系统提供了丰富的功能和高度可扩展性,适合企业级的网站建设和管理。以下是配置DotCMS的一些关键步骤: 1. **...

    dotcms处理弹出菜单时中文乱码

    在IT行业中,尤其是在Web开发领域,字符编码问题是一个常见的挑战,特别是当涉及到多语言环境时。"dotcms处理弹出菜单时中文乱码"这个问题,就是由于字符编码配置不正确导致的。 DotCMS是一个开源的企业级内容管理...

    core-2.x:dotCMS 2.x旧版代码库

    dotCMS努力工作以摆脱Web开发人员的困扰,使编辑内容,自定义模板,动态脚本和自定义/集成变得异常容易。 而且dotCMS中的所有工具都旨在帮助Web团队快速交付世界一流,可伸缩且可管理的网站,移动应用程序或内容...

    generic-dotCMS-plugin-code-examples:通用dotCMS插件代码示例

    在IT行业中,dotCMS是一款流行的开源内容管理系统,它支持企业构建和管理复杂、多语言的网站。本资源“generic-dotCMS-plugin-code-examples”提供了一系列的Java代码示例,旨在帮助开发者更好地理解和创建针对...

    SQLResultsTool:这个 OSGi 视图工具允许任何具有适当权限的 dotcms 用户从前端页面运行 SQL 语句

    如果 ViewTool 旨在查询与 dotcms 不同的数据库,则必须在 {dotcms_home}/tomcat/conf/Catalina/localhost/ROOT.xml 文件(对于 2.x 版本的 dotcms)或 {dotcms_home} 中定义此数据源/extra/tomcat-7/context.xml...

    plugin-solr:dotCMS系统的SOLR插件

    dotCMS SOLR插件dotCMS系统的SOLR插件可用于将内容和所有相关字段发布到SOLR安装中以进行索引。 该插件包含一个Portlet,该Portlet显示要编制索引的内容的队列,以及可以在自定义工作流中使用的工作流Actionlet,...

    javacms源码-core-2.x:dotCMSJavaEnterpriseCMS2.x系列的源代码

    dotCMS努力工作以摆脱Web开发人员的困扰,使编辑内容,自定义模板,动态脚本和自定义/集成变得异常容易。 而且dotCMS中的所有工具都旨在帮助Web团队快速交付世界一流,可伸缩且可管理的网站,移动应用程序或内容驱动...

    核心:dotCMS Java Enterprise Content Management System的源代码

    dotCMS是一种可扩展的,基于Java的开源内容管理系统(CMS),旨在跨多个渠道管理和交付个性化的,基于权限的内容体验。 dotCMS可以用作站点,移动应用程序,微型站点,门户,Intranet的平台,也可以用作无头CMS...

    dotcms-nextjs-example

    作为 ,不仅可以编辑常规页面、单页应用程序或任何类型的 JamStack 网站。 下一个JS 我们正在使用最新的功能来静态呈现所有 DotCMS 页面。 随着 NextJS 9.4 的发布,您可以使用其功能在构建时创建静态 DotCMS 页面...

    gradle打包android (实现外部导入签名文件、多渠道打包、导入ant脚本)

    在Android开发中,Gradle是默认的构建工具,它提供了灵活的配置和自动化打包功能。本文将详细讲解如何使用Gradle进行Android应用打包,并重点介绍如何实现外部导入签名文件、多渠道打包以及导入Ant脚本这三大核心...

    plugin-viewtool-markdown:dotCMS Markdown处理器

    这个dotCMS osgi插件提供了与github风格的markdown(gfm)兼容的markdown解析器(大部分情况下)。 它是基于RenéJeschke的txtmark项目构建的。 它提供了一个viewtool,可在dotCMS中使用它来解析gfm的文本/内容。 #...

    dotCMSTokenGenerator:PoC JWT令牌生成器,由TimoMüller编写

    dotCMS令牌生成器 此PoC工具允许为使用默认签名密钥的.dotCMS实例生成Json Web令牌(JWT)。 通过将生成的令牌用作“ AutoLogin” cookie,可以绕过dotCMS身份验证并访问CMS后端。 建造 这是一个Maven存储库,您可以...

    isaac-dotcms-minifier:我们对 dotCMS 的 ISAAC JSCSS Minifier 插件的修改

    可以在找到更多信息 对于 dotCMS 版本:2.5.1 及更高版本 变化: 添加了将 asyncLoading 添加到脚本的功能 添加了 Gradle 构建文件,因此可以使用以下命令构建它: gradle jar 执照: 这项工作是 by 的衍生品,...

    dotCMSSigningKeyGenerator:为dotCMS 4.3.3安装生成一个新的随机签名密钥。 蒂莫·穆勒(TimoMüller)撰写

    dotCMS签名密钥生成器该工具允许为dotCMS 4.3.3安装生成新的签名密钥。建造这是一个Maven存储库,您可以按照以下步骤构建JAR mvn package帮助启动该工具将生成一个新的签名密钥。 timo@dotcms ~/w/d/d/target&gt; java ...

    基于javaEE技术的javaweb项目题目参考.pdf

    * 基于dotCMS的街道办事处网站系统 * 基于Struts 的Web mail邮件管理系统 移动应用开发 * J2ME平台下 RSS Reader的设计与实现 * J2ME平台下 JMX浏览器的设计与实现 * J2ME平台下列车时刻表的设计与实现 * J2ME平台...

    dotcms-logoaccess:创建电子邮件并通知用户密码,以通过工作流程访问低安全性区域

    dotcms-logoaccess 自述文件 该插件发送电子邮件,以提供基于电子邮件的对dotCMS中受限目录的访问。 在安装OSGI插件后实施,方法是在创建表单数据时添加必填工作流程项。 这将向用户发送电子邮件,以使他们获得对...

    docker:Docker工件的公共存储库

    dotCMS码头工人 dotCMS Docker工件的公共存储库 执照 分发dotCMS的映像的Docker资源文件已根据Apache License 2.0许可。 有关更多详细信息,请参见。

Global site tag (gtag.js) - Google Analytics