• 全国400电话网上服务平台
    强大号码库资源任选,方便,快捷,快速开通。
    咨询热线:400-1100-266  

    织梦dedecms点赞喜欢功能插件源码
    POST TIME:2018-09-17 23:58

    织梦可以说是许多建站朋友的首选,用来做企业站、博客、商品站等等,最近有朋友想用织梦开发一个有点赞功能的网站,并且按点赞数量做成一个排行榜。那么这个dedecms点赞功能该怎么做呢?这个排行榜如何实现呢?我们一起来看一下。

    首先,我们需要在织梦数据库里 dede_archives 表中增加 zan  这个字段,加到weight这个字段后边。

    执行以下SQL语句即可:

    ALTER TABLE dede_archives ADD zan int(11) NOT NULL DEFAULT ‘0’ AFTER weight;
     
    然后执行以下SQL语句,新增名为dede_zan的表,这个表是保存被赞的文档aid 及IP的,为了检测是否赞过的IP。
     
    CREATE TABLE IF NOT EXISTS `dede_zan` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `aid` int(11) NOT NULL,
      `ip` varchar(40) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8

    然后在include/extend.func.php 中增加以下函数,通过文章id获取该文档被赞次数的

    function zan($aid)
    {
        global $dsql;
        $row = $dsql->GetOne(“Select id,zan From dede_archives where id='”.$aid.”‘”);
        return $row[‘zan’];
        }
     
    接下来我们改文章模板,打开templets/default/article_article.htm(这是dedecms默认的文章模板页,如果更换了模板文件或名称请自行查找)
    加入CSS代码,或者可以把下列代码添加到css文件,引用进来,也可以自行设计该点赞图标的样式。
    <style>
    .zan p{
    background:#000; opacity:.8;filter:alpha(opacity=80);}
    .zan p a{padding-left:30px; height:24px; background:url(/images/heart.png) no-repeat
    4px -1px;color:#fff; font-weight:bold; font-size:14px}
    .zan p a:hover{background-position:4px -25px;text-decoration:none}
    </style>
     
    将下列JS代码写入独立的js文件,名为zan.js
    $(function(){
        $(“p a”).click(function(){
            var zan = $(this);
            var id = zan.attr(“rel”); //对应id
            zan.fadeOut(300); //渐隐效果
            $.ajax({
                type:”POST”,
                url:”/zan.php”,
                data:”id=”+id,
                cache:false, //不缓存此页面
                success:function(data){
                    zan.html(data);
                    zan.fadeIn(300); //渐显效果
                }
            });
            return false;
        });
    });
    引用jquary.js和zan.js
    <script type=”text/javascript” src=”/jquery.js”></script>
    <script type=”text/javascript” src=”/zan.js”></script>
     
    在文章需要显示点赞的位置加入以下代码。
    <div class=”zan”><p><a href=”#”
    title=”赞一个 “class=”img_on” rel=”{dede:field.id/}”>{dede:field.id function=”zan(@me)”/}</a></p></div>
     
    建立zan.php 放到根目录
     
    <?php
    require_once (dirname(__FILE__) . “/include/common.inc.php”);
    $ip =getip(); //获取用户IP
    $id = $_POST[‘id’];
    if(!isset($id) || empty($id)) exit;
    //查询已赞过的IP
    $dsql->SetQuery(“SELECT ip FROM dede_zan  WHERE aid='”.$id.”‘ and ip=’$ip'”);
    $dsql->Execute();
    $count = $dsql->GetTotalRow();
    if($count==0){ //如果没有记录
        $dsql->ExecuteNoneQuery(“update dede_archives set zan=zan+1 where id=’$id’; “);//写入赞数
        $dsql->ExecuteNoneQuery(“insert into dede_zan (aid,ip) values (‘$id’,’$ip’); “);//写入IP,及被赞的AID
        $rows = $dsql->GetOne(“Select zan  from dede_archives where id='”.$id.”‘”);//获取被赞的数量
        $zan = $rows[‘zan’]; //获取赞数值
        echo $zan;
    }else{
        echo “赞过了..”;
    }
    ?>
    整个dedecms点赞功能就做好了。
     
    下面就要讲dedecms如何利用文章点赞数对文章进行排序了。
     
    找到dede:arclist标签源文件-include aglibrclist.lib.php
     

    在arclist.lib.php文件查找“//文档排序的方式”

    第335行左右添加以下代码

    else if($orderby == ‘zan’) $ordersql = ”  ORDER BY addf.zan $orderWay”;

    其中addf是新字段附加表的sql别名。
     
    然后找到dede:list标签源文件-includerc.listview.class.php
     

    在arc.listview.class.php页面查找“//排序方式”

    大概738行添加代码

    else if($orderby==”zan”) {            $ordersql = ” ORDER BY addf.zan $orderWay”;        }

    查找“//获得附加表的相关信息”

    大概749行修改代码,加“//”的是原代码,”\”是修改的代码(下同)

    //$addJoin = ” LEFT JOIN `$addtable`  ON arc.id = “.$addtable.’.aid ‘;

    \$addJoin = ” LEFT JOIN `$addtable` addf ON arc.id = addf.aid “;

    大概763行,修改if..else…中的代码

    if(!empty($arr[‘rename’])) {

    //$addField .= ‘,’.$addtable.’.’.$k.’ as ‘.$arr[‘rename’];

    \$addField .= ‘,addf.’.$k.’ as ‘.$arr[‘rename’];

    }      else {

    // $addField .= ‘,’.$addtable.’.’.$k;

    \$addField .= ‘,addf.’.$k;                        }

    查找“//如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢)”

    大概763行,修改代码

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

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

    最后,我们就可以用以下代码按织梦点赞数对文章进行排序输出了

    {dede:arclist row=10 orderby=zan  typeid=’1′}
    <li><a href=”[field:arcurl/]”>[field:title/]</a></li>
    {/dede:arclist}
    
    关于我们 | 付款方式 | 建站知识 | 增值服务 | 网站模板
    Copyright © 2003-2016
    时间:9:00-21:00 (节假日不休)
    版权所有:巨人网络(扬州)科技有限公司
    总部地址:江苏省信息产业基地11号楼四层
    《增值电信业务经营许可证》 苏B2-20120278
    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信

    微信号已复制,请打开微信添加咨询详情!