DeDeCMS自定义功能

DeDeCMS文档默认按最后时间排序的,如果某一文章需要置顶,那么只要重新编辑提交该文章就顶上去了,可是导致的问题也是很多,如果你希望你最近更新的文章在第十条插入的话,那么你需要把这十一条内容重新提交一次,按照顺序!

所以,这么复杂,这么不科学的方法显然不适合我们。

二次开发版

新建一个表,让这个表控制每个文章的数值,我们依靠这个数值来排列,类似添加文章里TAG旁的那个权重一样,我们也给他添加一个权重,只不过这个权重是用来控制文章的排序顺序。

OK,想法有了,那么就开始实现吧,百度了一圈,发现之前也有站长和我相同想法的,不过他们提供的方法是对照旧版DEDE而言,新版不适合他们的代码,不过依葫芦画瓢咱还是可以的。

废话不多说,教程开始

步骤比较多,但是都很简单,无脑操作的,有需要的朋友请认真一步步看下去。

数据库操作

1:首先得给数据库添加一个表,让它来记录这个权重。所以我们进入PHPMYADMIN,找到dede_archives选择结构一栏进入,然后添加表orderid

文件修改

1、打开 根目录/dede/article_add.php //修改代码文件

搜索找到

$query = "INSERT INTO `dede_archives`(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,
    color,writer,source,litpic,pubdate,senddate,mid,voteid,notpost,description,keywords,filename,dutyadmin,weight)
    VALUES (‘$arcID‘,‘$typeid‘,‘$typeid2‘,‘$sortrank‘,‘$flag‘,‘$ismake‘,‘$channelid‘,‘$arcrank‘,‘$click‘,‘$money‘,
    ‘$title‘,‘$shorttitle‘,‘$color‘,‘$writer‘,‘$source‘,‘$litpic‘,‘$pubdate‘,‘$senddate‘,
    ‘$adminid‘,‘$voteid‘,‘$notpost‘,‘$description‘,‘$keywords‘,‘$filename‘,‘$adminid‘,‘$weight‘);";

修改为

$query = "INSERT INTO `dede_archives`(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,
    color,writer,source,litpic,pubdate,senddate,mid,voteid,notpost,description,keywords,filename,dutyadmin,weight,orderid)
    VALUES (‘$arcID‘,‘$typeid‘,‘$typeid2‘,‘$sortrank‘,‘$flag‘,‘$ismake‘,‘$channelid‘,‘$arcrank‘,‘$click‘,‘$money‘,
    ‘$title‘,‘$shorttitle‘,‘$color‘,‘$writer‘,‘$source‘,‘$litpic‘,‘$pubdate‘,‘$senddate‘,
    ‘$adminid‘,‘$voteid‘,‘$notpost‘,‘$description‘,‘$keywords‘,‘$filename‘,‘$adminid‘,‘$weight‘,‘$orderid‘);";

2、打开dede/article_edit.php     //修改代码文件
搜索weight=‘$weight‘在它之后加逗号并回车换行加入以下代码orderid=‘$orderid‘
3、打开dede/templets/article_add.htm    //修改模板文件
在适合位置添加以下代码,我是在内容摘要之后添加的。

<table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin-bottom:3px;">
       <tbody>
  <tr>
        <td width="90" class="bline" height="24">&nbsp;排序权重:</td>
        <td class="bline"><input type=‘text‘ name=‘orderid‘ value=‘0‘ style=‘width:100px;‘ />(请填写数字,越大越靠前)</td>
  </tr>
  </tbody>
  </table>

4、打开dede/include/arc.listview.class.php //修改模版文件
搜索

if(preg_match(‘/hot|click|lastpost/‘, $orderby))

修改为

if(preg_match(‘/hot|click|orderid|lastpost/‘, $orderby))

5、打开dede/templets/article_edit.html    //修改模板文件
在适合位置添加以下代码,我是在文章副栏目之后添加的

<table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin-bottom:3px;">
       <tbody>
    <tr>
    <td width="90" class="bline" height="24"> 排序权重:</td>
    <td  class="bline"><input type=‘text‘ name=‘orderid‘ value=‘<?php echo $arcRow["orderid"]?>‘ style=‘width:100px;‘ />(请填写数字,越大越靠前)</td>
    <td></td>
    </tr>
    </tbody></table>

6、打开include/arc.listview.class.php     //修改代码文件
搜索

else if($orderby=="hot" || $orderby=="click") {
            $ordersql = " ORDER BY arc.click $orderWay";
        }

在其后添加

else if($orderby=="orderid") {
            $ordersql = " order by arc.orderid $orderWay"; //orderid为dede_archives表里面自己添加的字段
            }

7、打开include/taglib/arclist.lib.php     //修改代码文件
搜索

else if($orderby == ‘id‘) $ordersql = “ORDER BY arc.id $orderWay”;

在它之后回车增加一行,加入以下代码

else if($orderby == ‘orderid’) $ordersql = “order by arc.orderid $orderWay,arc.id $orderWay”;

8、最后在HTML模板调用如下:

{dede:arclist typeid=’1′ row=’10′ titlelen=’60′  orderby=′orderid′}

《你的模版文件代码》

{/dede:arclist}

第二部分: 修改排序

1.

2.

如果想一次增加加10   $maxOrderid[‘id’] += 10;   

3.

4.

第3部分 解决自定义排序上一篇下一篇链接不对应问题

打开文件   include\arc.archives.class.php 文件

修改808行的代码如下

$preR =  $this->dsql->GetOne("Select id From `#@__archives` where orderid<{$this->Fields[‘orderid‘]} And arcrank>-1 And typeid=‘{$this->Fields[‘typeid‘]}‘ order by orderid desc");
$nextR = $this->dsql->GetOne("Select id From `#@__archives` where orderid>{$this->Fields[‘orderid‘]} And arcrank>-1 And typeid=‘{$this->Fields[‘typeid‘]}‘ order by orderid asc");

这样就上一篇/下一篇链接和自定义排序的链接相符了.

但是问题来了, 旧文档的上一篇,下一篇链接失效, 解决方法是加上一个判断语句

if($this->Fields[‘orderid‘] >=1){
$preR =  $this->dsql->GetOne("Select id From `#@__archives` where orderid<{$this->Fields[‘orderid‘]} And arcrank>-1 And typeid=‘{$this->Fields[‘typeid‘]}‘ order by orderid desc");
$nextR = $this->dsql->GetOne("Select id From `#@__archives` where orderid>{$this->Fields[‘orderid‘]} And arcrank>-1 And typeid=‘{$this->Fields[‘typeid‘]}‘ order by orderid asc");
            }else{
$preR =  $this->dsql->GetOne("Select id From `#@__arctiny` where id<$aid And arcrank>-1 And typeid=‘{$this->Fields[‘typeid‘]}‘ order by id desc");
$nextR = $this->dsql->GetOne("Select id From `#@__arctiny` where id>$aid And arcrank>-1 And typeid=‘{$this->Fields[‘typeid‘]}‘ order by id asc");
            }
时间: 2024-11-10 07:48:39

DeDeCMS自定义功能的相关文章

dedecms自定义表单提交成功的跳转的修改

dedecms自定义表单是个比较常用的功能,自定义表单非常的灵活~~无论是用户留言.在线报名.信息收集统统都可以通过自定义表单完成,自定义表单的 调用方法我这里就不详细的介绍了,网上有大量这样的使用例子与方法大家可以参考下.我今天要讲的是自定义表单数据提交自后的调整,这块也是自定义表单不够 灵活的~ 首先大家需要明白的是自定义表单的数据是提交到plug/diy.php文件进行处理,大家打开一看一眼就能找到我们比较熟悉的标题提交成功提示的信息,也就是“$bkmsg = '发布成功,请等待管理员处理

dedecms自定义表单提交成功如何返回当前页面

dedecms自定义表单提交成功如何返回当前页面 Dedecms是现在比较常用的CMS,利用dedecms建站的朋友们,肯定会做一个提交表单,对于会技术的童鞋来说,做这样一个简单的表单,是很容易的事情dedecms的自定义表单非常的灵活,无论是用户留言.在线报名.信息收集统统都可以通过自定义表单完成. 织梦自带的自定义表单提交过后会自动跳转到网站首页,可还是有很多人希望提交过后,返回当前页面,或者返回是其他的页面,等等;我们会根据自己需要实现的功能不同,而做相应的修改;下面雨田SEOER来吐槽一

用dedecms自定义表单创建简易自助预约系统

建站往往需要根据客户的需求来增加相应的功能,比如预约.平时用比较多的是织梦系统,那么如何用dedecms自定义表单创建简易自助预约系统呢? 进入dedecms后台,左侧菜单中依次点击“核心” - 频道类型 - 自定义表单 - [增加新的自定义表单] 点击后进入设置模版界面,这里可以不用动直接点击确定.当然名字那里可以修改成“预约”. 点击上图中 “管理” 下的铅笔图标进行编辑 进入界面后我们可以通过添加新的字段来设置我们需要的栏目比如我们可以创建,联系人.电话.性别.等相关东西 如果是创建联系人

关于DEDECMS自定义模型当中添加自定义字段后在后台添加内容后不显示解决方案

用DEDECMS的时间也不长,最近在做一个站时,就遇到了这个问题(自定义字段在后台不显示内容)中添加自定义字段后在后台编辑打开后发现我之前添加的内容不显示,如果是只是看看不单击确定的话,那么在前台数据的调用就是正常的,但是再次回到后台发现,那个几个字段就是不显示,没办法,在网上查了一下,还是没有找到问题的原因,算了于是自己看了一下他的附加表当中是不是有什么问题,打开后发现了,原来是在数据库里面字段的名是大写(PS:我在添加自定义字段是喜欢首字母大写)应该不会是这个问题吧!于是我把他们改成了小写字

【从零开始学BPM,Day5】报表配置及自定义功能页面开发

[课程主题] 主题:5天,一起从零开始学习BPM [课程形式] 1.为期5天的短任务学习 2.每天观看一个视频,视频学习时间自由安排. [第五天课程] 1.课程概要 Step 1 软件下载:H3 BPM10.0全开放免费下载:http://bbs.h3bpm.com/read.php?tid=861&fid=11 Step 2 安装资料:参考本博的"安装资料"分类 Step 3 产品在线帮助浏览:http://bbs.h3bpm.com/read.php?tid=286&

《Programming WPF》翻译 第9章 3.自定义功能

原文:<Programming WPF>翻译 第9章 3.自定义功能 一旦你挑选好一个基类,你将要为你的控件设计一个API.大部分WPF元素提供属性暴露了多数功能,事件,命令,因为他们从框架中获取广泛的支持,以及易于使用XAML.WPF框架对routed event和命令提供了自动支持,它的依赖属性系统提供了数据半岛和动画支持.当然,你也可以写方法--对于某一种功能,方法是最好的途径.(例如,ListBox有一个ScrollIntoView方法,保证了一个特定的项目是可见的.这时从代码中能够做

系统右键自定义功能-右键备份【C#】

平时在某些公司发布网站的时候,都是手动备份文件,以免发布错误,做回滚使用.频繁的发布,在做备份的时候也会稍稍浪费点时间.当然在一些大的公司都会有一些自动发布系统,就不会出现这种问题了,对这种问题,我做了个小工具来和大家分享一下,希望都有点用途.若有误之处,还请多多指点,以免误人. 初步需求是这样子,可以在windows 系统中的右键注册一个备份的菜单,可以在选中文件或者文件夹后,右键选择备份,就可以将选中的对象自动备份到指定的文件夹中. 通过分析,需要做的主要有: 注册右键菜单 需要在右键文件和

用python + hadoop streaming 编写分布式程序(三) -- 自定义功能

又是期末又是实训TA的事耽搁了好久……先把写好的放上博客吧 前文: 用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试 用python + hadoop streaming 编写分布式程序(二) -- 在集群上运行与监控 使用额外的文件 假如你跑的job除了输入以外还需要一些额外的文件(side data),有两种选择: 大文件 所谓的大文件就是大小大于设置的local.cache.size的文件,默认是10GB.这个时候可以用-fil

新功能:阿里云负载均衡SLB支持HTTP/HTTPS超时时间自定义功能

摘要: 大家好,很高兴的告诉大家,阿里云负载均衡SLB已经在新加坡.澳大利亚(悉尼).马来西亚(吉隆坡).日本(东京).美国(硅谷).美国(弗吉尼亚).德国(法兰克福).阿联酋(迪拜).印度(孟买)上述地域支持HTTP/HTTPS超时时间自定义功能(增加黑名单),国内地域也即将上线. 1. Greeting 大家好,很高兴的告诉大家,阿里云负载均衡SLB已经在新加坡.澳大利亚(悉尼).马来西亚(吉隆坡).日本(东京).美国(硅谷).美国(弗吉尼亚).德国(法兰克福).阿联酋(迪拜).印度(孟买)