知识点一:
{dede:arclist channelid="18" addfields="language,pfz" limit="0,5"}
<li class="c[field:global.autoindex/]"><a href="[field:arcurl/]" target="_blank"><img src="[field:litpic/]" alt="[field:title/]" /></a><p>
[field:language/]
</p><b><a href="[field:arcurl/]" target="_blank">
[field:title/]
</a><img src="[field:global name='cfg_templets_skin'/]/images/1.jpg"><em>[field:pfz/]分</em></b></li>
{/dede:arclist}
1.标签arclist:是一个dede自带的标签,能够显示归档表的各个记录,以列表的形式显示出来的,但是这个只能显示归档表的字段是不能显示附加表的字段
如果需要显示附加表的字段就需要使用额外的标记即增加附加表的字段标记:addfields="language,pfz"
arclist存在很多的标签:
显示归档表的字段的格式是[field:字段/]其中[field:arcurl/]是连接到详情页面的超链接,这个字段是从dede后台的左边的模板的标签的例子可以看出
{dede:arclist flag='h' typeid='' row='' col='' titlelen='' infolen=''
imgwidth='' imgheight='' listtype='' orderby='' keyword='' limit='0,1'}
<a href='[field:arcurl/]'>[field:title/]</a>
{/dede:arclist}
2.标签2,include:包含文件文件标签可以将公共的部分,如头部与尾部包含进来:
格式如下:{dede:include filename='模板文件.htm'/}
例子:{dede:include filename='head.htm'/}
3.标签3,栏目标签channel可以获取栏目列表

例子:
<!--select列表from dede arctype-->
<!--大家注意typeurl并不是dede_arctype表的字段,他是在程序中计算得到的!-->
{dede:channel orderby="id" type="top" row="8"}
<li><a href="[field:typeurl/]" title="手机电影" target="_self">
[field:typename/]
</a></li>
{/dede:channel}
我们可以猜得到这个是查找arctype表得到的列表,但是点击进入栏目的详情页面使用字段[field:typeurl/]这个会发现跟数据库中存储的字段是有差别的,所以是这个值是在程序中现算出来的
但是是怎么知道的这个字段标签的呢?看官方文档,可以看到它用的位置是在超链接里面,所以是根据位置可以判断用法如下:
{dede:channel type='top' row='8' currentstyle="<li><a href='~typelink~' class='thisclass'>~typename~</a> </li>"}
<li><a href='[field:typelink/]'>[field:typename/]</a> </li>
{/dede:channel}
然后再结合数据库可以猜想出这个标签是结合数据库中的arctype这个标签:然后观看这个标签的源码就可以发现其内部实现:D:\web\dedecms\include\taglib\channel.lib.php
所以学习的方法就是:根据官方文档其用法,猜其查的数据库中的哪个表,然后追踪源码验证自己的想法;

如上官方的例子可以看出[field:arcurl/]是放在超链接里面所以可以猜测这个就是连接到详情页的超链接
4.由于dede标签是不能够嵌套的,所以在dede:arclist标签中,如果需要使用全局变量则需要将全局变量的dede标签转化成字段形式避免嵌套
如:[field:global name='cfg_templets_skin'/]可以看到dede标签转化成字段,其中global说明是全局的变量!

5.dede还存在自动增长的全局变量,不过用法跟一般的全局变量有区别,增加了一个点如果[field:global.autoindex/]表示列表自动增长
知识点二:全局变量存在于文件include/common.inc.php
例子:dedecms系统中自带文件common.inc.php中存在$cfg_soft_lang = 'utf-8';这里就设置了全局变量
<meta http-equiv="Content-Type" content="text/html; charset={dede:global.cfg_soft_lang/}" />在网页中设置该网页面的字符编码还是应用dede标签
语法:{dede:global.全局变量/},所以还可以在框架对应的文件中自定义全局变量!

6.面包屑标签:当前位置:{dede:field.position/}{dede:field.title/}

7.内容标签:如果跳转到内容页之后就可以直接用对应的dede标签进行显示详情页面的附加表的字段:如下:
{dede:field.title/},{dede:field.language/},{dede:field.area/},{dede:field.year/},{dede:field.director/},{dede:field.actors/},{dede:field.introduce/}

8.利用ajax对电影进行评分:
步骤:1.鼠标移动选中对应星星,2.鼠标点击就发起ajax发送数据到服务器
前端代码:
<script type="text/javascript">
//给所有的小星星绑定一个mouseover
//1.使用jquery如何去选中id下的所有图片
$("#rank_pic img").mouseover(function(){

//把当前选中的星星变成黄色
str=$(this).attr('src');
str=str.replace("rank_3.gif","rank_1.gif");
str=str.replace("rank_4.gif","rank_2.gif");
$(this).attr("src",str);

//下面的this表示小手指着的那个小星星
$(this).prevAll().each(function(){
//替换这个下面的this表示遍历的时候的小星星
//替换这个星星的src
str=$(this).attr('src');
//js中如何替换的src重新放回到
str=str.replace("rank_3.gif","rank_1.gif");
str=str.replace("rank_4.gif","rank_2.gif");
$(this).attr("src",str);
});
//替换后面的星星,黄色-》灰色
$(this).nextAll().each(function(){
//替换这个下面的this表示遍历的时候的小星星
//替换这个星星的src
str=$(this).attr('src');
//js中如何替换的src重新放回到
str=str.replace("rank_1.gif","rank_3.gif");
str=str.replace("rank_2.gif","rank_4.gif");
$(this).attr("src",str);
});
});
//2.给每个星星绑定click事件
$("#rank_pic img").click(function(){
//算出评分值
var pfz=($(this).prevAll().length+1)/2;
//获取当前内容的id在内容页可以获得内容页的主表和附加表的字段!
var id={dede:field.aid/};
//使用ajax技术
$.ajax({
type:"get",
url:"{dede:field name='phpurl'/}/pinfen.php?type=pinfen&id="+id+"&pfz="+pfz,
success:function(msg){
//alert("收到结果是"+msg);
$("#rank").html(msg);
}
});
});
</script>
思路:两个星星表示一分,所以需要用(length+1)/2
第一个方法:鼠标滑过将前面的星星全部设置为黄色星星,两种情况一种是左半边星星替换,一种是右半边的星星替换,然后将后面的星星也替换成灰色星星,不设置数据交互
第二个方法:鼠标点击提交数据到服务器,/plus/pinfen.php这里使用了全局变量{dede:field name='phpurl'}
其中phpurl是根据副本之前的模板的源码知道它是指向插件的目录,所以看源码是非常重要的,包括在公司里面一些标签是公司内部定义的:
<small>点击:</small>
<script src="{dede:field name='phpurl'/}/count.php?view=yes&aid={dede:field name='id'/}&mid={dede:field name='mid'/}" type='text/javascript' language="javascript"></script>
次</div>
可以看到如果我们遇到类似的问题就可以看之前公司的实现类似功能的源码!
前端代码:
<li>用户评分:<font id="rank"><script src="{dede:field name='phpurl'/}/pinfen.php?type=getfen&id={dede:field name='id'/}" type='text/javascript' language="javascript"></script></font> 分 (共有<font id="rank_num">...</font>人评分)</li>
可以动态的获取数据库的评分;

服务器代码:
<?php

require_once(dirname(__FILE__)."/../include/common.inc.php");
//这里去完成评分任务
$pfz=$_GET['pfz'];
$aid=$_GET['id'];

if($type=="getfen"){

$sql="SELECT pfz from dede_addonmovie where aid=$id";
$row=$dsql->GetOne($sql);
//如果获取到了分数就可以将代码传到前台并且写入html文件
if(is_array($row))
{
echo "document.write('".$row['pfz']."');\r\n";
}
//下面是对电影进行评分,就是update操作
}else if($type=="pinfen"){

$sql="UPDATE dede_addonmovie set pfz=$pfz where aid=$id";
$dsql->ExecuteNoneQuery($sql);
//更新成功后,我们需要计算这个评分值我简化为以最后一个评分为准
$sql="SELECT pfz from dede_addonmovie where aid=$id";
//取出数据库中的值,这里在工作时,需要看源码或者手册,
$row=$dsql->GetOne($sql);
//这里通过$row[0]
//返回结果的原因是前台的ajax通过获取数据通过jq将分数更改成返回的结果,这样评分就会产生联动的效果!
echo $pfz;
}
解读服务器源码:其中引入common.inc.php文件可以使用全局变量,$dsql就是一个全局性的对象,然后可以执行sql语句,之后利用getOne就可以获取结果,

获取分数的时候需要使用插件里面的php文件动态获取而不是使用dede标签的原因:
因为dede是全站静态化的,如果数据库评分即使更新数据,再次刷新页面是不会变化的,因为需要在后台重新生成一下,但是如果是通过src动态获取的就不一样了
因为刷新的时候就会查询数据库,将评分显示在界面上,如果不这样做的话,就会出现点击评分就会发生变化,但是再次刷新页面,这样分数会变成原来的样子,

根据之前的模板文件点击率是将数据发送到插件count.php我们来看下这个文件的规律,只有把这个文件研究清楚了就可以模拟了!可以看到查询操作是用GetOne方法
而更新操作是用ExecuteNoneQuery,所以这个归宿到数据库Curd都是不一样的,所以这个都是层次之间的映射!
9.下载地址由于是以一个非常多个信息存储在数据库的一个字段中,所以需要考虑一些专门的函数来处理这个下载地址,那么就需要自己在文件include/extend.func.php写扩展函数:
然后根据扩展函数处理dede标签得到的字段:{dede:field.download function='format(@me)'/}扩展函数如下:
/*
返回下载地址HTML的函数
*/
function format($str1){
//其实已经拿到了,我们使用var_dump看到了
//知识点1,字符串换行是有一个符号,windows下换行符是"\r\n",linux下面是\n
//首先统一一下换行符号;
$str1=str_replace("\r\n","\n",$str1);
$arr1=explode("\n",$str1);

//遍历$arr1
//$val1就表示一行数据(一个完整的下载地址)索引记录
//arr3是一个三维数组,arr3[n][]是一个二维数组传值传二位,每一行下载记录是一次传入!

$arr3=array();
foreach($arr1 as $k1=>$val1){
//继续explode
$arr2=explode("|",$val1);
//如果第四次和第一次都是3gp那么$arr3[3gp][]=二维数组
//所以这样无论是穿插不同类型的格式输入还是任意增加不同类型都不会影响
//因为三维的第一个分类都是按照每个记录的第一个字段进行填充的,所以
//只会根据这个类型的多少来进行记录,是将每条记录看作是一个单元所以
//重复再多的单元也不会出问题的!$arr2[0]就是格式类型,$arr2[1]就是标题,$arr2[2]是分辨率,$arr2[3]:是下载地址!
$arr3[$arr2[0]][]=array(
'title'=>$arr2[1],
'fbl'=>$arr2[2],
'url'=>$arr2[3]
);

}
$res="";
global $ac;//dede提供了一个全局的Archives类对象实例
global $cfg_templets_skin;
//该对象实例可以取出

//var_dump($arr3);
//exit();
//下一步的工作是,通过$arr3来生成我们的HTML码
//$val3相当于是一个电影类型的所有下载地址
foreach($arr3 as $k3=>$val3){
$res.=
<<<HTMLSTR
<H2 id="downloadurls">{$ac->Fields['title']}{$k3}下载地址<font class="f1">温馨提示:一键下载功能可一次下载{$k3}格式所有分节电影!</font><span><a href="javascript:;" onclick="return d3gp()"><img src="{$cfg_templets_skin}/images/yijian_3gp.gif" border="0" /></a></span></H2>
HTMLSTR;
$res.="<div class=\"downurls\"><ul>";
foreach($val3 as $k=>$download){
//下面的才是具体的信息
$res.=<<<LISTR
<li><a href="http://www.a67.com/download/26059-0" title="魔侠传之唐吉可德01 3GP下载" target="_blank" rel="nofollow">{$download['title']}</a> (格式:{$k3} / 分辨率:{$download['fbl']})<span><a href="{$download['url']}" target="_blank" rel="nofollow">迅雷高速下载</a></span><span><a href="http://www.a67.com/download/26059-0" target="_blank" rel="nofollow">下载到电脑</a></span></li>
LISTR;
}
}
$res.="</ul></div>";
return $res;
}

10.自定义插件:
可以看到ask插件是以一个单独mvc的模式存在的,分为model和view,control文件夹,所以我们需要模仿ask插件写一个自己定义插件。
<a href="{dede:global.cfg_pl_dir/}/index.php?c=pinglun&a=listpl&aid={dede:field.aid/}"可以看到在模板中是首先在common.inc.php文件中
定义一个全局变量,
//cms系统的评论目录
$cfg_pl_dir = $cfg_cmspath.'/pinglun';然后利用c指定控制器和a指定对应的方法名,然后带上参数aid对

--------------------------------

#include <QtGui/QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLabel *label = new QLabel("Hello, world!");
label->show();
return a.exec();
}

dede观看总结自己总结的更多相关文章

  1. dede使用方法----调用导航

    在这里,极力推荐学习dede的朋友们观看老李的零基础织梦仿站系列课程的视频,讲的超级棒的~~ 网址链接是:http://www.dede888.com/15daylessons.html. 好了,言归 ...

  2. 关于开启.NET在线提升教育培训的通知! - 可在此页面观看在线直播!

    年前在线公开课程通知: 近期在开启VIP课程,隔天讲一次,年前其它时间插空讲公开课,主题:设计模式系列 1:培训 - 大概不会讲的内容: 1:不讲系列. 2:不讲入门. 3:不讲我不懂的! 2:培训 ...

  3. 织梦多语言站点,{dede:include filename=''/}引入问题

    织梦模板include插入非模板目录文件出现"无法在这个位置找到"错误的解决办法 以下是dede V55_UTF8 查dede include标签手册 (3) include 引入 ...

  4. dede织梦批量导入关键词

    在后台替换对应的文件件即可. 注意:如果你的关键字长度超过16个字符的话,需要更改 dede 中 keywords 表中的keyword 字段字符长度 article_keywords_main.ph ...

  5. dede织梦cms-dede:autochannel标签

    按排序位置的获取单个栏目的链接信息 >>dede>> {dede:autochannel partsort='' typeid=''}{/dede:autochannel} & ...

  6. dede 简略标题调用标签

    一.简略标题调用标签: 1.{dede:field.shorttitle/} 不可以在{dede:arclist}标签中套用,一般放在网页titile处; 2.[field:shorttitle/] ...

  7. DEDE 常用的调用方法

    DEDE织梦常用的调用常规调用: 网站名称调用:<title>{dede:global.cfg_webname/}</title> 网站关键词调用:<meta name= ...

  8. 如何去掉dede列表推荐时标题被加粗

    dede在列表推荐文章默认为加粗不清楚的可以看图: 那个加黑的是默认的.如果你不想要被加黑,可以做如下改动.在include里找到文件:arc.listview.class.php查找并删除(注释掉也 ...

  9. 如何让{dede:channel}有子栏目显示子栏目,无子栏目不显示同级栏目

    我们在使用织梦系统制作网站时经常会遇到网站栏目较多,显示当前栏目下的二级与三级栏目时,使用栏目嵌套标签,但是当三级栏目为空时,会显示同级栏目.从用户体验角度出发,常理情况下也是需要空白的,即二级栏目下 ...

随机推荐

  1. 初识 .net core和vs code

    定义:什么是.net core? .net core是一个跨各个不同操作系统运行的平台.时至今日,windows上.net framework已经发展成熟,可以用来开发windows平台下的几乎所有应 ...

  2. 微信小程序-布局

    flex-direction 传送门 border 传送门 边框 粗细:thin(细线).medium(中粗线)和thick(粗线) 类型:九个确定值:none(无边框线). dotted(由点组成的 ...

  3. WordPress缓存插件WP Super Cache的使用及常见问题解决

    WP Super Cache是一款很好的WordPress优化插件,是我用过最好的一款缓存插件.打开WordPress后台搜索插件页面,第一个就是这个插件,可想而知他的地位有多厉害了. 什么是WP S ...

  4. VMware静态地址上网

    虚拟机通过dhcp获取ip,当系统重启时可能导致ip变更,出现不必要的麻烦,以下是通过nat模式设置虚拟机静态ip同时能够上网的方式. 编辑VMware,依次点击“编辑”--“虚拟网络编辑器” 注:为 ...

  5. 针对微信的一篇推送附有的数据链接进行MapReduce统计

    原推送引用:https://mp.weixin.qq.com/s/3qQqN6qzQ3a8_Au2qfZnVg 版权归原作者所有,如有侵权请及时联系本人,见谅! 原文采用Excel进行统计数据,这里采 ...

  6. Unity3d底层数据传递分析

    WeTest 导读 这篇文章主要分析了在Mono框架下,非托管堆.运行时.托管堆如何关联,以及通过哪些方式调用.内存方面,介绍了什么是封送,以及类和结构体的关系和区别. 一.托管交互(Interop) ...

  7. 可能是最好的SQL入门教程

    个人博客:这可能是最好的SQL入门教程

  8. IE常见的兼容处理

    IE常见的兼容处理 1. 禁用IE兼容模式 为了保证IE能够使用最新渲染模式而不是兼容模式,在html文档头部应加入以下代码: <head> <meta charset=" ...

  9. VS调试再次遭遇“应用程序中断模式”问题,附解决方法

    最近重构某项目过程中发现的,有同事反馈调试不正常,很久以前也发生过,虽然搜索了一下找到解决方案,但个人觉得还是有必要再记录一下. 调试某CS结构的应用程序,大致效果可以看下图: 我们组最终解决方案是: ...

  10. C语言--第0次作业

    1.你认为大学的学习生活.同学关系.师生应该是怎样?请一个个展开描写. 学习生活 大学是一个过渡时间,它不同于高中与社会.我希望自己可以养成自主学习的习惯,也希望能在大学学习中找到属于自己的节奏,不被 ...