• 20150330--Dede+输出同栏目资源,评分


    image

    目录

    一、回顾内容: 1

    二、在内容详情页面的模板中,要求取出的数据内容和当前的数据内容属于同一个栏目。 2

    三、完成电影的评分功能 3

    1、完成鼠标滑过,前面变成金星后面变成灰星 3

    2、给星星评分 4

    3、完成,在加载该页面时,能够实时的显示出分数 7

    4、完成对同一部电影,一个用户一天内只能评分一次。 7

    四、dede里面的采集功能 8

    1、采集电影的列表,获取电影的标题和电影内容页面链接和图片的缩略图 8

    2、根据电影的内容详情页面的链接,采集具体的数据。 10

    3、采集完成后,导出数据到内容主表和附加表 11

    一、回顾内容:

    1、使用dedecms系统来完成一个项目的流程:

    (1)定义模型,定位网站的内容,当默认的模型不满足我们,则可以修改模型或添加新模型。

    (2)创建栏目,栏目必须属于一个模型,

    (3)添加具体的内容,添加的内容必须属于一个栏目的。

    (4)制作模板,使用标签取出数据

    (5)生成静态页面,在生成静态页面时,模板文件一定要存在,比如在生成首页时,首页的模板必须存在,在生成栏目页面时,栏目的模板要存在,在生成内容详情页面 时,内容页面的模板要存在。

    在默认情况下,相同模型的栏目的模板页面是相同的,内容详情页面的模板也是相同的。

    不同的栏目也可以使用不同栏目模板和内容模板。

    2、学习的标签:

    channel标签:获取栏目数据,读取的表是,dede_arctype表

    arclist标签:获取具体数据内容的,查询的表是内容主表(dede_archives)和附加表(dede_addonxxx)

    channelid=”17”确定要查询哪个模型里面的数据,也就是确定查询哪个附加表。

    addfields=”附加表里面的字段”:如果要取出附加表里面的字段内容,则使用addfields属性

    channelartlist:标签获取栏目下面的子栏目,或获取栏目下面具体数据。

    在字段标签中,可以使用函数,也可以使用简单的业务逻辑

    二、在内容详情页面的模板中,要求取出的数据内容和当前的数据内容属于同一个栏目。

    wpsD3E6.tmp

    思考:使用的标签是谁?arclist   使用了附加表,因此用channelid和addfields属性

    arclist标签,在栏目模板中使用,则是取出属于当前栏目的数据内容。

    arclist标签,在内容详情模板中是,则是取出和当前数据内容同属于一个栏目的数据。

    字段标签里面的链接:

    [field:typelink/]   指向栏目列表页面的一个链接。该字段标签在channel标签中使用。

    [field:arcurl/]指向内容详情页面的一个链接。该字段标签在arclist标签中使用,。

    模板中的代码如下:

    wpsD408.tmp

    {type}标签:在内容详情模板中使用,输出的当前数据内容所属的栏目信息。

    三、完成电影的评分功能

    wpsD417.tmp

    使用的技术是ajax.把评分值,提交到后台,修改 数据库

    1、完成鼠标滑过,前面变成金星后面变成灰星

    wpsD428.tmp

    思路:给星星添加鼠标滑过事件,使用jquery来完成

    (1)引入jquery.js

    wpsD429.tmp

    (2)选择所有的半星

    //给img绑定鼠标滑过事件

            $("#rank_pic img").mouseover(function(){

                    //(1)把当前img变成金星

                   // 思路:改变当前星星的src属性,取出src属性,改变后,再设置新的src属性

                   //取出当前img的src属性

                   var srcs =  $(this).attr('src');

                   //把rank_4.gif==》rank_2.gif    rank_3.gif  ===>rank_1.gif

                   srcs = srcs.replace('rank_4.gif','rank_2.gif',srcs);//替换右半星

                   srcs = srcs.replace('rank_3.gif','rank_1.gif',srcs);//替换右半星

                   //把替换之后的结果,设置重img的src属性

                   $(this).attr('src',srcs);

                   //(2)把当前img后面的变成灰星

                    //思路:要选中当前img后面的所有的img,

    $(this).nextAll().each(function(){

                               var srcs =  $(this).attr('src');

                               //把rank_2.gif==》rank_4.gif    rank_1.gif  ===>rank_3.gif

                               srcs = srcs.replace('rank_2.gif','rank_4.gif',srcs);//替换右半星

                               srcs = srcs.replace('rank_1.gif','rank_3.gif',srcs);//替换右半星

                               //把替换之后的结果,设置重img的src属性

                               $(this).attr('src',srcs);

                  });

                   //(3)把当前img前面的变成金星

                            //思路:要选择当前前面的星星

      $(this).prevAll().each(function(){               

                            var srcs =  $(this).attr('src');

                               //把rank_4.gif==》rank_2.gif    rank_3.gif  ===>rank_1.gif

                            srcs = srcs.replace('rank_4.gif','rank_2.gif',srcs);//替换右半星

                            srcs = srcs.replace('rank_3.gif','rank_1.gif',srcs);//替换右半星

                           //把替换之后的结果,设置重img的src属性

    $(this).attr('src',srcs);    

                 });

            });

    2、给星星评分

    (1)通过金色星的个数,设置一个评分值,添加单击事件:

    wpsD459.tmp

    (2)在dede的plus目录下面新建一个pingfen.php文件,该文件用于接收传递过来的评分值和电影的id,完成入库操作。

    在pingfen.php页面中首先引入:该common.inc.php文件中引入数据库类, 和一些全局变量,

    require_once(dirname(__FILE__)."/../include/common.inc.php");

    wpsD469.tmp

    wpsD48A.tmp

    wpsD48B.tmpwpsD48C.tmpwpsD49C.tmpwpsD49D.tmpwpsD49E.tmp

    可以在浏览器中直接输入地址来完成测试,

    wpsD4BE.tmp

    具体的代码:

    wpsD4DF.tmp

    (3)修改内容详情页面模板文件。对返回的数据进行显示。

    具体的代码:

    wpsD4FF.tmp

    3、完成,在加载该页面时,能够实时的显示出分数

    wpsD510.tmp

    思路:还是用ajax。

    在内容详情页面的模板中,添加如下代码:

    wpsD520.tmp

    4、完成对同一部电影,一个用户一天内只能评分一次。

    思路:使用cookie技术,确点:如果客户端清除cookie则又可以重新评分。

    把用户评分过的电影id添加到一个数组里面,把数组存储到cookie里面,当前客户端再进行对电影进行评分之前,要判断一下是否已经评分过。

    cookie的有效期到今天晚上23点59分59秒。

    在pingfen.php页面中添加如下代码:

    wpsD531.tmp

    wpsD541.tmp

    在内容详情页面的模板中进行修改:

    wpsD571.tmp

    四、dede里面的采集功能

    采集:

    首先:要确定我们需要的内容:电影的附加表里面字段的信息。

    我们要采集多部电影,

    1、采集电影的列表,获取电影的标题和电影内容页面链接和图片的缩略图

    (1)增加新节点

    wpsD592.tmp

    在默认情况下,只能采集图片和文章,我们要采集电影模型里面的数据,因此要修改源码,支持采集电影模型的数据。

    wpsD5C1.tmp

    打开后台程序目录,templets目录下面的co_add_step0.htm页面。

    wpsD5C2.tmpwpsD5C3.tmp

    wpsD5D4.tmp

    wpsD5D5.tmp

    (2)设置采集的基本信息

    wpsD672.tmpwpsD710.tmpwpsD76E.tmp

    wpsD76F.tmpwpsD780.tmpwpsD781.tmpwpsD792.tmp

    如果出现如下图示:表明第一步完成,

    wpsD7B2.tmp

    2、根据电影的内容详情页面的链接,采集具体的数据。

    wpsD7C2.tmp

    wpsD7C3.tmp(1)匹配电影名称:

    wpsD7C4.tmpwpsD7C5.tmpwpsD7D6.tmp

    wpsD7F6.tmp

    3、采集完成后,导出数据到内容主表和附加表

    wpsD807.tmp

    wpsD808.tmp扩展:dede的目录结构:

    wpsD80B.tmpwpsD81A.tmpwpsD81D.tmpwpsD81E.tmpwpsD82D.tmpwpsD82E.tmpwpsD82F.tmpwpsD83F.tmpwpsD840.tmpwpsD841.tmpwpsD851.tmpwpsD852.tmpwpsD863.tmpwpsD864.tmpwpsD865.tmpwpsD885.tmp

    dedecms里面数据库操作总结:

    (1)执行查询语句:

    方式一:

    $dsql->SetQuery($sql);

    $dsql->Execute();

    $row = $dsql->GetArray();

    方式二:

    $sql="select pfz,pfrs from dede_addonmovie where aid=$aid";

    $dsql->Execute("me",$sql);//me是一个标示,表示执行的哪条sql语句。

    // $dsql->Execute("you",$sql1);

    $row=$dsql->getArray('me');//取出具体的数据

    返回一个具体的值:

    $row = $dsql->GetOne("Select good From `#@__bookfeedback` where id='$fid' ");

    (2)执行增删改

    $dsql->ExecuteNoneQuery("Update `#@__bookfeedback` set bad = bad+1 where id='$fid' ");

  • 相关阅读:
    C# WebApi 获取客户端ip地址
    C# 构造函数快捷键
    2 .SHELL 5~10节
    Spring项目集成apidoc生成api接口文档
    根据域名查找对应的ip及端口
    高质量SQL的30条建议
    1 .shell编程1~5
    CentOS7安装mysql8
    编译安Apache2.4.43报错checking for APR... no configure: error: APR not found. Please read the documentation.
    rm -rf * 的正确用法
  • 原文地址:https://www.cnblogs.com/lifushan/p/5471789.html
Copyright © 2020-2023  润新知