• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >drupal > drupal按分类进行文章排序的实现方法

drupal按分类进行文章排序的实现方法

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-05-13

佚名 向大家介绍了drupal,drupal教程,drupal是什么,drupal模板,drupal中文等相关知识,希望对您有所帮助

本文实例讲述了drupal按分类进行文章排序的实现方法。分享给大家供大家参考。具体实现方法如下:

Drupal的文章组织形式,决定了其文章排序是一件比较麻烦的事。由于Drupal中没有“栏目”这样的概念,而采用了“分类”的概念,一般网站 都会利用“分类”实现类似“栏目”的功能。但在排序上,由于文章可以同时属于多个分类,也可以同时属性一个分类的多个“术语”,因而排序的问题就变得比较 复杂起来。

Drupal上有一些进行排序的模块,在官网这里有相关的介绍:http://drupal.org/node/398508。

有的时候这些模块都不能满足我们项目的要求,只能自己写一个模块:nodeorder_taxonomy,只实现了文件的按分类排序。模块在设计上支持 article类型按任何分类字段进行排序,为描述方便,这里简化环境,约定以artile类型的field_lanmu_multi字段进行排序,这个 字段来源于分类”文章栏目”(machine name : _article_lanmu)。

1.建立数据表node_term_order:

这个表里存放了node按分类的顺序以及置顶顺序。这里的置顶取代了系统默认的sticky字段。sticky_order和node_order分别存放节点的置顶排序值和非置顶排序值,倒序,即值越大越靠前。

2. 对节点数据进行初始化操作。

这一步,把所有的article,按照sticky asc, created asc 的顺序,遍历field_lanmu_multi的值,依次放到node_term_order里,保证节点进入node_term_order以后的顺序与原始的排序一致。

3.监控节点操作。

利用hook_node_insert和hook_node_update和hook_node_delete监控节点的插入、更新和删除动作,并对node_term_order表进行相应的修改。

4.提供排序界面。

排序是按照分类的某个术语对节点安排顺序。提供了两种排序的方法:界面上拖动排序以及指定节点排序位置的排序。

界面上拖动排序,利用了drupal提供的可拖动排序表格的功能,在其他文章里有详细介绍,这里不再赘述。唯一需要说明的是,在操作界面上另建一个 weight字段,值由node_order 或sticky_order按顺序依次从0开始赋值,表格排序中改变的是weight的值。提交以后,按照weight的值排序,再改变 node_order或sticky_roder的值。
直接指定节点排序位置的方法,是根据某个术语指定某个节点在这个术语的排序中位于第几的位置。相对于界面拖动排序,这个实现起来比较简单。

5.显示排序结果。

术语中文章的显示路径是taxonomy/term/%term。这是系统默认的术语下文章的列表。定义新的路径taxonomy/term/%term/list,在自己的程序中实现对术语下文章的排序列表。实现过程比较简单,不再详述。

以上是大概的实现方法。实际实现起来比这个复杂,例如按照article类型中的所有分类字段(包括tags)可配置是否管理排序;还有一个分级显 示分类所有术语的界面,那里链接到分类列表、排序界面;以及利用hook_views_data向views模块申明数据,以供views使用。

希望本文所述对大家的drupal二次开发有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • drupal输出用户头像地址的方法
  • drupal常用判断函数汇总
  • 批量导入XML数据到drupal系统的方法
  • drupal内的表格化输出实现方法
  • 自定义drupal注册表单的方法
  • Drupal7的cache缓存开发实例教程
  • drupal的url传值和表单传值分析
  • Drupal中hook_theme函数用法
  • drupal函数node_get_types用法详解
  • Drupal采用钩子系统删除用户实例详解

相关文章

  • 2017-05-13drupal文件系统概述
  • 2017-05-13drupal按分类进行文章排序的实现方法
  • 2017-05-13drupal模板(page.tpl)中的tabs无用户与密码的解决方法
  • 2017-05-13Drupal中hook_theme函数用法
  • 2017-05-13drupal中的ip_address函数用法分析
  • 2017-05-13drupal内的表格化输出实现方法
  • 2017-05-13批量导入XML数据到drupal系统的方法
  • 2017-05-13drupal的workbench moderatoin模块对node的修改方法
  • 2017-05-13drupal之hook_link和hook_link_alter钩子函数解析
  • 2017-05-13drupal导入图片的实现方法

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • drupal文件系统概述
    • drupal模板(page.tpl)中的tabs无用户与密码的解决方法
    • drupal函数node_get_types用法详解
    • Drupal采用钩子系统删除用户实例详解
    • Drupal 启用缓存和Gzip压缩设置方法
    • 定制Drupal首页的方法
    • drupal的url传值和表单传值分析
    • drupal实现输出可点击表头排序表格的方法
    • drupal输出用户头像地址的方法
    • Drupal第三方模块汇总

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有