在比较了众多CMS系统后,还是把焦点定在DNN和Umbraco两个系统上,这两个系统都可以使用UserControl扩展自己需要的功能。

DNN的架构比较复杂,Module、Skin、Container很容易把人搞晕,据说他适合做门户系统,而且现在的版本可以与AD结合,估计做企业应用也比较合适。

Umbraco要创建一个页面必须有几个步骤:

第一步:创建Document Type,相当于是定义字段信息;

第二步:创建Template,即各个字段在页面中的显示位置及样式等;

第三步:创建Content,应该也可以叫Document,它与Template和DocumentType关联起来。

我是从这里入门的:Umbraco入门使用教程

开发方面,DNN和Umbraco的文档都不全面,不系统,文档更新与版本发布同步,这让人很郁闷,但没办法,开源免费,你还想怎样呢?

DNN有一些视频教程 DotNetNuke Video Library,Umbraco也有视频教程,但要收费

Umbraco方面在our.umbraco.org中基本上把所有已有的文档都过了一遍,然后结合Project(也是开源的)进一步了解,比如通过Content Maintenance Dashboard Package(Developer tools)可以了解一些对文档的搜索、删除等操作,再结合Refrence中的API参考,可以知道怎样Create Document。

关于Upload文档类型的自动化处理:

I have a DocumentType which contains some fields on DataType Upload. Can i fill those fields from a usercontrol?

Yes, the file upload field stores the path to the uploaded file (ie: /media/1234/my-file.pdf).

You can upload the file where ever you want and assign the path to the property.

在XSLT中嵌入字段值:

<img src='{preview}' style="border: none;"/>

或者

<xsl:value-of select="@nodeName"/>

字段名前面有@的是系统字段,自定义字段不需要加@

代码片段:ExamineSearch.xslt

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxml="urn:schemas-microsoft-com:xslt"
xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets" xmlns:Examine="urn:Examine" xmlns:ucomponents.cms="urn:ucomponents.cms" xmlns:ucomponents.dates="urn:ucomponents.dates" xmlns:ucomponents.email="urn:ucomponents.email" xmlns:ucomponents.media="urn:ucomponents.media" xmlns:ucomponents.members="urn:ucomponents.members" xmlns:ucomponents.search="urn:ucomponents.search" xmlns:ucomponents.strings="urn:ucomponents.strings" xmlns:ucomponents.urls="urn:ucomponents.urls" xmlns:ucomponents.xml="urn:ucomponents.xml"
exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets Examine ucomponents.cms ucomponents.dates ucomponents.email ucomponents.media ucomponents.members ucomponents.search ucomponents.strings ucomponents.urls ucomponents.xml "> <xsl:output method="xml" omit-xml-declaration="yes"/> <xsl:param name="currentPage"/> <xsl:template match="/"> <!-- start writing XSLT -->
<textarea cols="60" rows="5">
<xsl:copy-of select="Examine:SearchContentOnly('test')"/>
</textarea> <xsl:variable name="aa" select="Examine:SearchContentOnly('test')/nodes/node"/> <xsl:for-each select="$aa">
<xsl:value-of select="position()"/>:
<xsl:value-of select="@id"/>,
<xsl:value-of select="data[@alias='iconSize']"/># </xsl:for-each> </xsl:template> </xsl:stylesheet>

搜索与Examine:

可以使用XSLT搜索Cache中的内容,Cache中的内容在APP_DATA目录下的umbraco.config中,Project中的XSLTsearch就是一个非常好的例子,一般的搜索可以直接用它,或者拿来稍做修改即可。另一种方法是可以使用Examine,可以通过XSLT也可以使用用户控件或才MVC调用Examine,现在,ExamineIndex.config文件可以配置索引,具体操作见 http://umbraco.com/follow-us/blog-archive/2011/9/16/examining-examine.aspx。目前还没完全搞明白Examine的操作,估计会比直接XSLT快一些,因为Exmaine是自定义索引,而umbraco.config中的内容是所有发布的网站内容。

XSLTsearch中的XSLTsearch.cs文件是不用编译的,Package部署时,会自动复制到APP_Code目录下。

Package:

开发时,把Usercontrols复制到Umbraco网站的Usercontrols目录,把编译后的DLL复制到Umbraco网站的BIN目录下,在Umbraco的后台创建Package时,指定要包含的文件或目录,其中可以包括UserControls和BIN目录下的DLL,生成后的Package在Media目录下,其中的Package.xml文件详细记录了文件或目录的配置,以及Actions(如用于扩展Umbraco后台)。

多语言:

是否可以通过ucomponents.cms:GetDictionaryItem('InvalidTopicId', '2')做多语言网站?

接下来想通过采集程序,采集一个网站的文章,再利用Umbraco仿制一个网站。

我的CMS心路历程,DNN And Umbraco的更多相关文章

  1. CMS: DNN And Umbraco

    在比较了众多CMS系统后,还是把焦点定在DNN和Umbraco两个系统上,这两个系统都可以使用UserControl扩展自己需要的功能. DNN的架构比较复杂,Module.Skin.Containe ...

  2. VS2012+EF6+Mysql配置心路历程

    为了学习ORM,选择了EntityFramework,经历了三天两夜的煎熬,N多次错误,在群里高手的帮助下,终于成功,现在将我的心路历程记录下来,一是让自己有个记录,另外就是让其它人少走些弯路. 我的 ...

  3. 阿里云服务器上安装mysql的心路历程(博友们进来看看哦)

    在阿里云花了100买了一台云服务器,配置如下: CPU: 1核 内存: 512MB 数据盘: 0G 带宽: 1Mbps 阿里云服务器安装mysql搞得我想吐血,搞了一个多星期,现在才搞好,而且,还有许 ...

  4. G彩娱乐网一个程序员到一个销售高手的心路历程

    0.引言 我大学本科读的是理工科,后来毕业以后,我逐渐走上了程 序员的道路.每天面对电脑一行一行的敲代码,这被我们程序员们戏称为"搬砖头",因为我们所做的事跟民工搬砖头砌墙本质上是 ...

  5. 心路历程:当win10遇上win7激活程序...请默哀

    经历一次莫名其妙的懵逼系统崩溃后,我对破解软件/激活软件终于有了阴影,想想就想哭,不过怨不了别人,锅不能随便甩,怪自己粗心大意,怪自己太懒呜呜呜... 所以有心将这次心路历程记录下来,谨防自己下次再犯 ...

  6. 顶级项目孵化的故事系列——Kylin的心路历程【转】

    现在已经名满天下的 Apache Kylin,是 Hadoop 大数据生态系统不可或缺的一部分,要知道在 Kylin 项目早期,可是以华人为主的开源团队,一路披荆斩棘经过几年的奋斗,才在 Apache ...

  7. 一个C#开发者重温C++的心路历程

    不知道为什么,似乎很多人理解跑偏了,在这里我要说明一下. 首先,我并没有对C++语言有偏见,我只是单纯的在学习时,在理解时,对C++语言进行一些吐槽,我相信,很多学习C++的人,也会有类似的吐槽. 其 ...

  8. 【react native】有关入坑3个月RN的心路历程

    由于一些原因,笔者最近变更到了RN的团队,回归到了hybrid app的开发的圈子中,固然是有蛮多新鲜感和新机遇的,不过遥想起以前在hybrid中各种view之前跳转的头疼等各种问题,笔者怀着忐忑的心 ...

  9. 我的Java历程_maven配置的心路历程

    从github上download了个maven管理的开源项目,接下来随笔下安装maven的心路历程: 异常尴尬的是import进ide之后一个红色的感叹号!震惊!google一下知道了,maven没配 ...

随机推荐

  1. DOM笔记(九):引用类型、基本包装类型和单体内置对象

    一.Array 1 .创建数组的方式 //Array构造函数(可以去掉new) var colors0 = new Array(); var colors1 = new Array(20); var ...

  2. SpringMVC + Spring + MyBatis 学习笔记:遭遇order by 排序问题

    系统:WIN8.1 数据库:Oracle 11GR2 开发工具:MyEclipse 8.6 框架:Spring3.2.9.SpringMVC3.2.9.MyBatis3.2.8 用MyBatis写排序 ...

  3. [转]32位和64位系统区别及int字节数

    一)64位系统和32位有什么区别? 1.64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存 2.64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会 ...

  4. Delphi 调用外部程序并等待其运行结束

    转自:http://blog.csdn.net/xieyunc/article/details/4140620   如何让Delphi调用外部程序并等待其运行结束 1. uses     Window ...

  5. CentOS下挂在NTFS分区

    本文参考自http://www.cnblogs.com/gbyukg/archive/2011/11/02/2232343.html centos下想访问NTFS分区,现在普遍的方法是利用ntfs-3 ...

  6. Java多线程学习总结--线程同步(2)

    线程同步是为了让多个线程在共享数据时,保持数据的一致性.举个例子,有两个人同时取钱,假设用户账户余额是1000,第一个用户取钱800,在第一个用户取钱的同时,第二个用户取钱600.银行规定,用户不允许 ...

  7. 【Python学习笔记】字符串操作

    字符串的表示 python中的字符串是一个常量,可以使用单引号'',双引号""或三引号""" """来创建一个字符串常量 ...

  8. 基于Heritrix的特定主题的网络爬虫配置与实现

    建议在了解了一定网络爬虫的基本原理和Heritrix的架构知识后进行配置和扩展.相关博文:http://www.cnblogs.com/hustfly/p/3441747.html 摘要 随着网络时代 ...

  9. 轻松学习Linux之自动执行任务

    在 Linux 中,任务可以被配置在指定的时间段.指定的日期.或系统平均载量低于指定的数量时自动运行,系统管理员可使用自动化的任务来执行定期备份.监控系统.运行定制脚本等,往往初学者都是win用户,习 ...

  10. windows平台下安装python的setuptools工具

    到下面的网址下载setuptools-0.6c11.win32-py2.7.exe http://pypi.python.org/pypi/setuptools#files 然后安装setuptool ...