知识点一:
{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:;" οnclick="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();
}

转载于:https://www.cnblogs.com/sengling/p/5244357.html

dede观看总结自己总结相关推荐

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

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

  2. Dede二次开发程序详解(dede爱好者必备)

    Dede二次开发程序详解(dede爱好者必备) 调用说明:推荐会员(带用户头像)  [quote] {dede:sql sql="SELECT mid,mtype,userid,uname, ...

  3. mytag.class.php,织梦CMS/dedecms织梦模板留言板调用{dede:}标签的头部尾部的方法

    织梦模板网站留言板调用网站的head.htm,footer.htm的方法二, 好多人都想在留言本guestbook.htm里实现dede的标签调用,问题是在plus里不支持dede标签的应用. 现在有 ...

  4. prolog_如何通过观看权力的游戏学习Prolog

    prolog by Rachel Wiles 瑞秋·威尔斯(Rachel Wiles) 如何通过观看权力的游戏学习Prolog (How to learn Prolog by watching Gam ...

  5. 吴恩达新课发布1天,引3万人观看 | 完整PPT

    作者丨金磊 来源丨量子位 编辑丨极市平台 什么样的课程, 时间,便吸引了全球近3万人的观看? 有名师--国际最权威的ML学者之一,吴恩达(Andrew NG). 有较新概念--机器学习操作 (MLOp ...

  6. dede列表分页php,dede列表页分页英文调用方法

    使用于英文模板的dede分页代码,可以让分页默认中文变成英文的方式. 修改arc.listview.class.php 在include/arc.listview.class.php 调用方法 {de ...

  7. 子域名绑定html,DEDE二级域名(多站点)绑定详解

    关键字描述:详解 站点 栏目 顶级 &nbsp 设置 绑定 目录 支持 二级域名 首先,DEDE在绑定多域名之前,需先作如下准备: 1.服务器或空间支持, 2.将你的域名指定到目录 接着我们就 ...

  8. 织梦 ajax 返回,Dede织梦arclist标签+Ajax实现织梦首页分页-叙述织梦

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 有时在做织梦模板的时候需要实现首页分页效果,但是织梦本身首页是不带分页功能的,那如何实现织梦首页分页呢? 用arclist标签+Ajax实现织梦首页分页 ...

  9. php登陆验证码错误,DEDE织梦后台登陆提示验证码错误的方法

    说一下碰到这种情况的几种原因: ① 网站空间满了(**首先考虑**) ②更改空间后新的空间里pho.ini里gd库配置问题 ③dede版本程序升级操作不正确造成验证码提示不正确 ④专对5.7版本转移d ...

最新文章

  1. 转 sessionid如何产生?由谁产生?保存在哪里?
  2. python教程第四版pdf下载-Python参考手册 第4版高清中文PDF下载
  3. RobotFramework系列(二):Robot 如何编写自定义关键字
  4. 前端路由实现原理(history)
  5. Ubuntu下apache2启动、停止、重启、配置
  6. 用yum安装完mysql后没有mysqld的问题
  7. nginx php 跨域访问权限,nginx + php 实现跨域请求填坑笔记
  8. “unauthorized: authentication required” -- openshift3.9 docker push 报错
  9. vue中warning_5种处理Vue异常的方法
  10. 电子计算机工作的特征是什么,电子计算机的基本特征是什么?
  11. Python下载文件到本地
  12. STM32CubeMX配置DCMI+DMA之OV2640
  13. 威密 android,勇士这赛季的结局,是否开始就已注定
  14. python 搭建服务器
  15. 上拉/下拉电阻选值怎么定
  16. Openjudge-NOI题库-出书最多
  17. angularjs checkbox 框的操作
  18. Scan的使用方式以及Spring redis的坑
  19. “我不是坚强,我只是走投无路”,从职高到杭电、浙大、麻省计算机博士!...
  20. 1.2 Python介绍

热门文章

  1. 基于OpenCV的视频人脸检测
  2. 基于MFC的餐饮管理系统(C++实现 后附源码)
  3. 百度云远程连接自己的云服务器,
  4. C# for循环的执行顺序
  5. 北京理工大学计算机学院张教授,张全新_北京理工大学计算机学院
  6. Unity2019显示带有透明色的贴图
  7. 学习vue饿了吗之模拟后台数据
  8. 大数据之路之为什么要用大数据
  9. 联通ADSL改小区宽带
  10. 狂暴者 pat basic 练习二十六 程序运行时间