2011-08-18 40 views
4

我試圖創建一把umbraco,它會顯示由每月舉辦新聞頁面列表的新聞檔案。每個頁面都會顯示該月份的新聞項目清單。如何在umbraco中創建新聞檔案?

我跟着tutorial for creating news items,但我不知道如何創建存檔。似乎沒有任何參考資料可以在線執行此操作。毫無疑問,這是CMS的常見用例。

人有任何想法(優選在razorscript如果編碼是必需的)?

+0

這似乎做歸檔:http://our.umbraco.org/projects/developer-tools/datefolders,但還沒有嘗試。 – zlog

回答

6

我結束了使用datefolders包,它會自動排序新聞條目爲基於預定義的日期字段中輸入正確的年份和月份文件夾,就像@amelvin response。日期文件夾的好處是,它簡化了用戶必須手動將他們的文章分類到正確的文件夾並維護該組織。他們可以右鍵單擊新聞容器項目,創建文章,設置日期,並且它將出現在正確的文件夾中。另外,它會在日期更改時更改文件夾。

在檔案的顯示方面,我有以下剃刀代碼,其中NewsListing是上市文件類型的新聞,並NewsItem是新聞項目文檔類型:

存檔上市,在側邊欄

<umbraco:Macro runat="server" language="cshtml"> 
@{ 
    dynamic newsListingNode = Model.AncestorOrSelf(1).DescendantsOrSelf("NewsListing").First(); 
} 
<div class="archive"> 
    <ul> 
    @foreach (var newsYear in newsListingNode.Children) 
    { 
     foreach (var newsMonth in newsYear.Children) 
     { 
     @* Use format time to get the month string *@ 
     dynamic dateLabel = umbraco.library.FormatDateTime(newsYear.Name + " " + newsMonth.Name + " 01", "MMMM yyyy"); 

     <li><a href="@newsMonth.Url">@dateLabel»</a></li> 
     } 
    } 
    </ul> 
</div> 
</umbraco:Macro> 

月存檔頁

<umbraco:Macro runat="server" language="cshtml"> 
    @* Check the it is a month folder *@ 
    @if ((@Model.NodeTypeAlias == "NewsDateFolder") && 
     (@Model.Up().NodeTypeAlias == "NewsDateFolder") && 
     (@Model.Up().Up().NodeTypeAlias == "NewsListing")) 
    { 
     dynamic newsMonth = Model; 
     dynamic newsYear = Model.Up(); 

     dynamic dateLabel = umbraco.library.FormatDateTime(newsYear.Name + " " + newsMonth.Name + " 01", "MMMM yyyy"); 

     <div class="news"> 
      <h2>News archive: @dateLabel</h2> 
      @{ 
      dynamic newsItems = Model.DescendantsOrSelf("NewsItem").OrderBy("sortDate desc"); 
      } 
      @foreach(var newsItem in newsItems) { 
      <div class="block-content"> 
       <h5><a href="@newsItem.Url">@newsItem.Name</a></h5> 
       <p>@newsItem.summaryText</p> 
       <a href="@newsItem.Url">more»</a> 
      </div> 
      } 
     </div> 

    } 
    </umbraco:Macro> 
+2

有誰知道這是否在使用Umbraco 6.2和7.x? –

3

在一把umbraco最明顯的解決辦法是在「內容」部分來安排你的文件夾結構,使其符合您希望自己的網站安排的項目,然後用簡單的XSL轉換來建立索引的網頁。

代碼兩個模板(「設置」部分),一個顯示索引每個月和另一個顯示各個製品。

因此,像一個文件夾結構:

> Content 
> |--Home 
>  |--2011 
>   |--01 January 
>    |--News article 1 
>    |--News article 2 
>    |--News article 3 
>    |--News article 4 
>   |--02 February 
>    |--News article 5 
>    |--News article 6 
>    |--News article 7 

然後使用一些簡單的XSL加入宏指數模板(類似於以下)運行一輪的新聞文章(我得到這個從umbNewsListItems.xslt我認爲來自於消息示例站點):

<xsl:template match="/"> 

<!-- The fun starts here --> 

<div class="newsList"> 
<xsl:for-each select="$currentPage/* [@isDoc and string(umbracoNaviHide) != '1']"> 
    <xsl:sort select="@updateDate" order="ascending" /> 
    <h3 class="headline"> <a href="{umbraco.library:NiceUrl(@id)}"> 
     <xsl:value-of select="@nodeName"/> 
    </a> 
    </h3> 
    <small class="meta">Posted: <xsl:value-of select="umbraco.library:LongDate(@updateDate, true(), ' - ')"/></small><br/> 
    <p class="introduction"> 
    <xsl:value-of select="umbraco.library:ReplaceLineBreaks(introduction)" disable-output-escaping="yes"/> 
    </p> 

</xsl:for-each> 
    </div> 

</xsl:template>