最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

drupal按分類進(jìn)行文章排序的實現(xiàn)方法

  發(fā)布時間:2014-11-03 15:46:39   作者:佚名   我要評論
這篇文章主要為大家介紹了drupal按分類進(jìn)行文章排序的實現(xiàn)方法,較為詳細(xì)的分析了drupal文件組織結(jié)構(gòu)與實現(xiàn)文章排序的方法,非常具有實用價值,需要的朋友可以參考下

本文實例講述了drupal按分類進(jìn)行文章排序的實現(xiàn)方法。分享給大家供大家參考。具體實現(xiàn)方法如下:

Drupal的文章組織形式,決定了其文章排序是一件比較麻煩的事。由于Drupal中沒有“欄目”這樣的概念,而采用了“分類”的概念,一般網(wǎng)站 都會利用“分類”實現(xiàn)類似“欄目”的功能。但在排序上,由于文章可以同時屬于多個分類,也可以同時屬性一個分類的多個“術(shù)語”,因而排序的問題就變得比較 復(fù)雜起來。

Drupal上有一些進(jìn)行排序的模塊,在官網(wǎng)這里有相關(guān)的介紹:http://drupal.org/node/398508。

有的時候這些模塊都不能滿足我們項目的要求,只能自己寫一個模塊:nodeorder_taxonomy,只實現(xiàn)了文件的按分類排序。模塊在設(shè)計上支持 article類型按任何分類字段進(jìn)行排序,為描述方便,這里簡化環(huán)境,約定以artile類型的field_lanmu_multi字段進(jìn)行排序,這個 字段來源于分類”文章欄目”(machine name : _article_lanmu)。

1.建立數(shù)據(jù)表node_term_order:

復(fù)制代碼
代碼如下:
function nodeorder_taxonomy_schema() {
$schema['node_term_order'] = array (
'description' => 'store information for node term order',
'fields' => array (
'nid' => array (
'description' => 'node id',
'type' => 'int',
'unsigned' => true,
'not null' => true,
),
'tid' => array(
'description' => 'term id',
'type' => 'int',
'unsigned' => true,
'not null' => true,
),
'sticky_order' => array (
'description' => 'stickyOrder, order desc, when >0 sticky, 0 not sticky',
'type' => 'int',
'unsigned' => true,
'not null' => true,
),
'node_order' => array (
'description' => 'node order',
'type' => 'int',
'unsigned' => true,
'not null' => true,
),
),
'indexes' => array(
'nid' => array('nid'),
'tid' => array('tid'),
'sticky_order' => array('sticky_order'),
'node_order' => array('node_order'),
),
'primary key'=> array('tid','nid'),
);
return $schema;
}

這個表里存放了node按分類的順序以及置頂順序。這里的置頂取代了系統(tǒng)默認(rèn)的sticky字段。sticky_order和node_order分別存放節(jié)點的置頂排序值和非置頂排序值,倒序,即值越大越靠前。

2. 對節(jié)點數(shù)據(jù)進(jìn)行初始化操作。

這一步,把所有的article,按照sticky asc, created asc 的順序,遍歷field_lanmu_multi的值,依次放到node_term_order里,保證節(jié)點進(jìn)入node_term_order以后的順序與原始的排序一致。

3.監(jiān)控節(jié)點操作。

利用hook_node_insert和hook_node_update和hook_node_delete監(jiān)控節(jié)點的插入、更新和刪除動作,并對node_term_order表進(jìn)行相應(yīng)的修改。

4.提供排序界面。

排序是按照分類的某個術(shù)語對節(jié)點安排順序。提供了兩種排序的方法:界面上拖動排序以及指定節(jié)點排序位置的排序。

界面上拖動排序,利用了drupal提供的可拖動排序表格的功能,在其他文章里有詳細(xì)介紹,這里不再贅述。唯一需要說明的是,在操作界面上另建一個 weight字段,值由node_order 或sticky_order按順序依次從0開始賦值,表格排序中改變的是weight的值。提交以后,按照weight的值排序,再改變 node_order或sticky_roder的值。
直接指定節(jié)點排序位置的方法,是根據(jù)某個術(shù)語指定某個節(jié)點在這個術(shù)語的排序中位于第幾的位置。相對于界面拖動排序,這個實現(xiàn)起來比較簡單。

5.顯示排序結(jié)果。

術(shù)語中文章的顯示路徑是taxonomy/term/%term。這是系統(tǒng)默認(rèn)的術(shù)語下文章的列表。定義新的路徑taxonomy/term/%term/list,在自己的程序中實現(xiàn)對術(shù)語下文章的排序列表。實現(xiàn)過程比較簡單,不再詳述。

以上是大概的實現(xiàn)方法。實際實現(xiàn)起來比這個復(fù)雜,例如按照article類型中的所有分類字段(包括tags)可配置是否管理排序;還有一個分級顯 示分類所有術(shù)語的界面,那里鏈接到分類列表、排序界面;以及利用hook_views_data向views模塊申明數(shù)據(jù),以供views使用。

希望本文所述對大家的drupal二次開發(fā)有所幫助。

相關(guān)文章

最新評論

纳雍县| 登封市| 新田县| 喀喇沁旗| 合山市| 渭源县| 英吉沙县| 海淀区| 金秀| 湟中县| 玉环县| 富锦市| 新巴尔虎右旗| 石林| 临夏市| 贵港市| 新余市| 泌阳县| 松阳县| 孙吴县| 东光县| 新晃| 筠连县| 象山县| 阳高县| 加查县| 如东县| 曲麻莱县| 翁源县| 侯马市| 清镇市| 永定县| 开远市| 邹城市| 通河县| 九龙坡区| 长岭县| 剑河县| 灵寿县| 海口市| 格尔木市|