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仿制一個網站。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM