• CMS: DNN And Umbraco


    在比较了众多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 "&#x00A0;"> ]>
    <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仿制一个网站。

  • 相关阅读:
    VTIL & NoVmp 源码简要分析
    无需 Root 使用 IDA 调试 Android Native
    QWB 2021 StandOnTheGaints Writeup
    外部调用可执行文件中的函数
    CISCN 2021 西南赛区 Fix Writeup
    CISCN 2021 西南赛区 Reverse Writeup
    AES Block Cipher Implementation in C
    MTCTF 2021 Inject Writeup
    【题解】电子科技大学第十九届 ACM 程序设计竞赛
    洛谷P2596 [ZJOI2006]书架
  • 原文地址:https://www.cnblogs.com/ShineTan/p/3319135.html
Copyright © 2020-2023  润新知