1. 程式人生 > >OpenCms 中實現文章分類功能

OpenCms 中實現文章分類功能

 以前在 OpenCms 中實現文章分類的功能,一直都是在 VFS 中建立對應的目錄來實現的.這樣方便實現,也是很多人習慣使用的方法.這裡就不在介紹了.

很早就聽說 OpenCms7 中有了內容的分類功能, 也很早就看到 馬宣的個人網站 使用這個功能做了自己基於 OpenCms 的 BLOG ,可惜一直沒有時間好好研究一下.今天看看 OpenCms 自己在 TemplateTwo 中的實現,追蹤了一下程式碼.大致明白了這個用法.

在 OpenCms7 中的 "/system/" 目錄下增加了一個 "categories" 目錄,這個目錄就是存放整個站點的內容分類結構的.
可以建立類似這樣的目錄:

做為分類目錄.

然後在寫文章的時候,可以指定資源的 Assign Categories ,對資源進行分類.譬如:

 在這裡,可以同時指定屬於幾個分類,就象我在 sohu 的 Blog 上寫文章可以同時指定最多5個關鍵詞一樣.這樣就可以以不同的關鍵詞做為引數讀取內容列表了.

在 OpenCms7 中也增加了這樣一個 collector —— CmsCategoryResourceCollector,用它來實現按照分類得到資源列表.這個類的 List allKeyValuePairFiltered(CmsObject cms, String param) 方法就可以返回期望的列表.

具體在使用的時候還是比較容易的.只需要和以前一樣使用 <cms:contentload> 標籤就可以了.所不同的是,在這裡需要指定的除了 collector的屬性需要是 "allKeyValuePairFiltered" 之外,還需要按照指定的分類,就是在 param 中增加 categoryTypes=[category1,category2,...]來指明.當然,你還可以同時指明需要找的是那個目錄下面的、是否包括子目錄、列表排序方法是按照發布時間還是分類、排序是正序還是倒序、列表最大顯示多少專案……

當然了,可能的話,可以象下面一樣開發自己的配置檔案,這樣使用起來就更方便了。

=================================
個人覺得,這樣做分類功能要比純粹使用目錄來分類好的多。不知道 maxuan 是不是這樣實現的呢

相關推薦

OpenCms 實現文章分類功能

 以前在 OpenCms 中實現文章分類的功能,一直都是在 VFS 中建立對應的目錄來實現的.這樣方便實現,也是很多人習慣使用的方法.這裡就不在介紹了. 很早就聽說 OpenCms7 中有了內容的分類功能, 也很早就看到 馬宣的個人網站 使用這個功能做了自己基於 OpenCm

&lt;Machine Learning in Action &gt;之二 樸素貝葉斯 C#實現文章分類

options 直升機 water 飛機 math mes 視頻 write mod def trainNB0(trainMatrix,trainCategory): numTrainDocs = len(trainMatrix) numWords =

vue實現全選功能

containe lda mod html ret model methods == -m <!DOCTYPE html><html><head><meta charset="utf-8"><title>Vue 測

在DBGrid實現多選功能

inter cli 如何實現 point row goto option pointer checked 1、首先把DBGrid->options-dgMulitSelect設為True. dgRowSelect也設為True,此屬性設為true後,DBGrid將不

SSM框架實現分頁功能

我們在前端頁面上要訪問某個資源時, 直接點選, 頁面就會重新整理並展示給我們相應的資料資訊. 雖然是一個很簡單的操作, 可是頁面後端卻給我們做出了多層業務邏輯的操作. 下面我們來分析一下一個使用者在點選檢視 訂單管理 後, 後臺程式碼為實現該功能所執行的步驟:   1.

C++ Builder實現拖放功能

在C++ Builder中實現拖放功能 關鍵字:實現拖放功能,DockSite,DragKind,DragMode Windows中的拖放功能大家一定很熟悉了,如檔案的移動,拷貝等操作用滑鼠輕輕一拖即可,在編寫程式中有時也用到拖放,那麼如何實現呢?現以C++ Builder5(簡稱C

如何在T-sql 實現陣列的功能

T-SQL象陣列一樣處理字串、分割字串    在日常的程式設計過程中,陣列是要經常使用到的。在利用SQL對資料庫進行操作時,有時就想在SQL使用陣列,比如將1,2,3,4,5拆分成陣列。可惜的是在T-SQL中不支援陣列。不過還是有變通的辦法。我們可以自己編寫兩函式Get

關於在PLSQL實現DEBUG除錯功能的方法

關於在PLSQL中實現DEBUG除錯功能的方法 2017年04月07日 14:27:52 samt007 閱讀數:2179 標籤: oracle除錯plsql 更多 個人分類: Oracle PL/SQL技巧 前言 

vue實現回到頂部功能

具體效果點選這裡檢視:   家盟家政 下面直接看程式碼:(不清楚的看對應註釋) <!-- 回頂部按鈕為一張50*50的圖片 --> <!-- btnFlag 控制圖片顯示隱藏 --> <!-- backTop 回頂部的方法 -->

Django實現驗證碼功能

安裝Pillow pip install Pillow==3.4.1 windows下如果安裝報錯: 點選此處 下載對應的版本到本地,下載到那裡,就去那個目錄下: pip install Pi

Django實現文章刪除功能

一 部落格文章相關操作思維導圖  二 部落格文章刪除功能 1 優化前端模板mysite/templates/article/column/article_list.html {% extends "article/base.html" %} {%

SpringBoot實現依賴注入功能

今天給大家介紹一下SpringBoot中是如何實現依賴注入的功能。在以往Spring使用中,依賴注入一般都是通過在Spring的配置檔案中新增bean方法實現的,相對於這個方式SpringBoot的實現方式就顯得非常便捷了。SpringBoot的實現方式基本都是通過註解實現的

django實現分頁功能

https://docs.djangoproject.com/en/2.1/topics/pagination/ #在views中,注意合併方法。提前做好框架設計。 from django.core.paginator import Paginator from django.sho

Swift3.0 實現發簡訊功能

公司專案中要用到點選按鈕發簡訊的功能,由於之前沒做過,在網上找了一些 demo, 自己總結點,大神勿噴 ^-^ 要實現發簡訊的功能其實不難,可以利用系統的MessageUI.framework框架 就可以實現,步驟如下:   1.首先判斷裝置是否有傳

在MATLAB實現Bayes分類

貝葉斯分類器的分類原理是通過某物件的先驗概率,利用貝葉斯公式計算出其後驗概率,即該物件屬於某一類的概率,選擇具有最大後驗概率的類作為該物件所屬的類。也就是說,貝葉斯分類器是最小錯誤率意義上的優化,它遵循

在PowerShell實現複製貼上功能

為了方便在windows下能夠像Linux下一樣方便的使用命令列進行操作,選取了命令列工具powershell。但是其複製貼上功能無法使用…… 下面給出解決思路: 1、從執行對話方塊或者開始

Unity實現放大鏡的功能

以上方式用於實現3D世界中的放大鏡效果很好,但是,如果需要實現UI中介面元素的區域性放大,則會稍微複雜一點,具體的方式,我做了一個演示專案,可以在演示專案中檢視,地址工程:https://github.com/USuperMe/Mangnifier

手把手教你在Python實現文字分類(附程式碼、資料集)

作者: Shivam Bansal 翻譯:申利彬校對:丁楠雅本文約2300字,建議

JAVA實現訊息提示功能程式碼

MessShow.prototype.onunload = function() {     return true; } // 訊息命令事件,要實現自己的連線,請重寫它 MessShow.prototype.oncommand = function() {     window.open(this.acti

如何在Ubuntu QML應用實現ComboBox的功能

由於一些原因,目前在我們的Ubuntu SDK中並沒有支援Combobox.這個控制元件是在QtQuick.Controls模組中的.在我們實際的一些應用中,我們可能需要用到這個功能.比如在我們的Browser應用中: 當我們輸入baidu時,就會出現我們希望的列表,