2011-08-12 60 views
2

對於每個分類術語,我可以訪問一個頁面(我沒有使用視圖模塊),顯示所有使用特定術語標記的內容,方法是使用如下所示的路徑:www.example。 COM /分類/術語/ 1。顯示特定內容類型的所有內容

現在,我想知道是否可以使用諸如www.example.com/content/type/1這樣的URL來處理內容類型(例如,顯示內容類型文章的所有內容)。

回答

5

我假設視圖3.您可以創建一個視圖,並在URL中提供上下文過濾器以動態顯示該內容類型的所有節點。

將「Content:Type」添加爲上下文過濾器。在「過濾器不可用時」部分下,選擇「提供默認值」,然後選擇網址的原始值。舉個例子,你可以選擇「3」作爲路徑組件。

您可以將路徑設置爲「/ content/type /%」,其中%是內容類型的名稱。但是,我不確定它是否可以使用數值。

2

如果不使用Views模塊,您應該創建一個自定義模塊來做到這一點,這將會做什麼Views已經在做什麼。 如果你不需要視圖中的所有功能,那麼你可以創建你自己的模塊,即使我不建議在視圖已經存在的時候這樣做。

您的模塊應該將菜單項關聯到像「content/type /%」這樣的路徑並呈現包含該內容類型的所有節點的頁面。
爲了渲染節點,你可以使用node_view_multiple()。對於檢索節點列表,並渲染它,你可以使用類似的代碼下列之一:

$query = new EntityFieldQuery(); 
$entities = $query->entityCondition('entity_type', 'node') 
    ->entityCondition('bundle', $content_type) 
    ->propertyCondition('status', 1) 
    ->execute(); 

$nodes = entity_load('node', array_keys($entities['node'])); 
return node_view_multiple($nodes, 'teaser'); 

$content_type是傳遞到菜單項的字符串。

我報告的代碼不會使用尋呼機,但它會顯示單個頁面中的所有節點。

+0

優秀的答案。 – mikevoermans

相關問題