首先我简单的介绍下自己,我是织梦官方团队的天涯,接触织梦也有2年多时间了,之前一直在论坛上做斑竹,认识了很多喜爱织梦的朋友,后来便加入了织梦团队,发现这是一个充满朝气、有激情和学习力的地方,这次受站长网的邀请来给大家做一次DedeCMS程序方面的讲座。
因为这次主要是讲座,缺乏体系的培训内容,本次讲座我将织梦技术论坛较为常见的问题加以整理,并结合一些其他方面的应用内容进行补充,让大家更了解DedeCMS程序的使用。
安全设置
首先是程序安全问题,这里主要是一些拥有独立服务器的站长,如果自己在系统安全部署上面有些经验那应该没有什么问题,有部分站长没有系统安全部署的经验,加上现在挂马猖獗,所以许多人都在担心,官方在早些时候就发了一个关于《DedeCms V5.3/V5.5 安全设置指南》的主题帖,地址为:
https://www.doczj.com/doc/567789521.html,/172474.html,这里面说了如何在Win Serv环境配置服务器环境。
不过文中提到了织梦的文件目录,这里我对整个系统文件目录进行一个说明:
https://www.doczj.com/doc/567789521.html,/178324.html,当然,如果你安装个模块会相应的增加一些目录,例如模块group、ask等。
{dede:sql}标签的用法
sql标签可以称得上是个万能标签了,查询数据库将其输出,这里介绍一些关于这个标签的用法:
1.用来输出统计内容,这个是不错的,举个例子,我们来统计下总共发了多少的文章,思路就是输出dede_addonarticle这个文章附加表内容总数就可以了。
{dede:sql sql="SELECT COUNT(*) AS nums FROM dede_addonarticle"}
[field:name = "nums"/]
{/dede:sql}
2.使用~field~来进行特殊的查询,比如之前论坛上面很多会员需要做一个输出当前发布文章会员的相关内容,之前用sql或者arclist标签是没办法实现的,因为每篇内容是不同的,这里我们来用5.5的sql
语句来做个示范。
我们首先在文章模板中相应的位置加上下面的标签
{dede:sql sql="SELECT * FROM dede_archives WHERE writer=~writer~"}
[field:id/],
{/dede:sql}
这个放到article_article.htm页面,将会检索出当前会员发布的相关文章,这里的~ writer~会根据当前内容的环境变量进行替换后再执行查询。
这里出现在SQL语句中条件查询的~ writer~,也就是$refObj->Fields[$value]这个里面的相关内容
模板中使用PHP
许多人希望织梦的模板标签能够更加灵活,加入可以运行PHP的功能,这里在DedeCMS V5.5中就加入了一个可以执行php的特殊标签{dede:php}{/dede:php},这个标签可以执行PHP语句了。
我这里举几个常用的例子:
1.最简单的输出内容:
{dede:php}
$numA = 1;
$numB = 2;
echo $numA + $numB;
{/dede:php}
这个输出的内容是计算结果:
3
2.结合SQL查询输出单条内容
{dede:php}
$row = $dsql->GetOne('select id,typename from dede_arctype where id=2');
print_r($row);
{/dede:php}
这个输出的内容是
Array
(
[id] => 2
[typename] => 问答
)
3.获取当前页面的变量
比如我们这里进入系统后台的[模板]-[全局标记测试],我们在代码中填入下面的内容:{dede:php}
print_r($refObj->Fields);
{/dede:php}
如果环境变量保持默认,即“不使用环境ID”,我们会看到以下的结果:
Array
(
[typeid] => 0
[phpurl] => /plus
[indexurl] => /
[templeturl] => /templets
[memberurl] => /member
[specurl] => /special
[indexname] => 主页
[templetdef] => /templets/default
)
那我们再换个环境变量测试看看,这里以我本地的栏目为测试了:
Array
(
[id] => 3
[reid] => 0
[topid] => 0
[sortrank] => 1
[typename] => 产品
[typedir] => {cmspath}/product
… …
[indexname] => 主页
[templetdef] => /templets/default
[position] => 主页> 产品>
[title] => 产品
)
这样一来就检索出当前页面的局部变量了,接下来我们可以来结合前面的SQL语句来实现根据不同环境ID调用内容不同栏目内容。
例如:
{dede:php}
$thisid = $refObj->Fields['id'];
$row = $dsql->GetOne('select id,typename from dede_arctype where id='.$thisid);
print_r($row);
{/dede:php}
这样是来调用当前栏目的标题,这个标签功能类似于{dede:field.typename/}
写自己的标签,让别人说去吧
DedeCMS从V5.3开始就支持自己扩展标签,不过许多新人很少用那个东西,今天我就来简单的介绍下如何编写自己的调用标签。
我们需要知道下扩展标签的存放目录及文件名构成,首先,扩展的标签都是存放在/include/taglib这个目录,名称都是以“标签名.lib.php”格式,例如{dede:channel/}标签对应的是channel.lib.php文件。
我们可以看一个示例标签:demotag.lib.php
if(!defined('DEDEINC'))
{
exit("Request Error!");
}
function lib_demotag(&$ctag,&$refObj)
{
global $dsql,$envs;
//属性处理
$attlist="row|12,titlelen|24";
FillAttsDefault($ctag->CAttribute->Items,$attlist);
extract($ctag->CAttribute->Items, EXTR_SKIP);
$revalue = '';
//你需编写的代码,不能用echo之类语法,把最终返回值传给$revalue
//------------------------------------------------------
$revalue = 'Hello Word!';
//------------------------------------------------------
return $revalue;
}
?>
我们登录系统后台的[模板]-[全局标签测试]中运行{dede:demotag/},显示如下的结果:
这里我们知道,其实标签生成的内容其实是这个函数的一个返回值,这里返回的内容都是字符串,也就是函数return $revalue;中的$revalue需要是经过处理后生成的字符串。
$attlist="row|12,titlelen|24";这个是属性列表,这个经过函数处理后会直接生成变量并复制,我们可以测试下,做如下的修改:
$revalue = 'Hello Word!';
$revalue .="
Row:".$row.";TitleLen:".$titlelen;
这样我们可以看到,这个属性已经被创建变量并且赋值了。
接下来我们可以再进一步去修改这个标签。
比如说我们需要写一个标签专门来查询文章内容页的那个相关文章,功能类似于上面sql标签中的那个sql,只是这里我们将其分装为一个标签。
我们可以新建一个标签,例如叫writerarc,那我们就需要创建一个writerarc.lib.php,然后模仿demotag 编写函数,注意需要修改为
function lib_writerarc(&$ctag,&$refObj)
接下来我们就可以编写查询语句及对底层模板处理的相关函数了
$revalue = '';
$innertext = $ctag->GetInnerText();
$ctp = new DedeTagParse();
$ctp->SetNameSpace('field', '[', ']');
$sql = "SELECT * FROM dede_archives WHERE writer='{$refObj->Fields['writer']}' limit 0, $row";
$innertext这个是用来获取标签的底层模板的,$ctp创建用于处理底层模板中的变量,并处理进行替换。我们根据获取的属性编写我们的sql语句,这里我们使用limit 0, $row,这样就可以根据$row来确定查询的内容数目。
当然我们可以获取更多的属性以便我们这个标签更强大,例如我们可以增加类似于arclist中的相关属性,并在函数中进行处理,不过这个需要有一定的PHP基础。
接下来我们通过执行查询对sql及输出变量进行处理:
$dsql->Execute('me',$sql);
while($rs = $dsql->GetArray('me'))
{
//根据属性处理查询变量
$rs['title'] = cn_substr($rs['title'], $titlelen);
//获取底层模板
$ctp->LoadSource($innertext);
foreach($ctp->CTags as $tagid=>$ctag) {
if(!empty($rs[strtolower($ctag->GetName())])) {
$ctp->Assign($tagid,$rs[$ctag->GetName()]);
}
}
//根据底层模板及查询变量得到处理结果
$revalue .= $ctp->GetResult();
}
这样我们就将查询出来的结果同底层模板中出现的相关变量进行替换,然后生成输出字符串,将所有的字符串信息存储到$revalue中。
最后返回这个值return $revalue;
整个文件内容如下:
if(!defined('DEDEINC'))
{
exit("Request Error!");
}
function lib_writerarc(&$ctag,&$refObj)
{
global $dsql,$envs;
//属性处理
$attlist="row|12,titlelen|24";
FillAttsDefault($ctag->CAttribute->Items,$attlist);
extract($ctag->CAttribute->Items, EXTR_SKIP);
$revalue = '';
$innertext = $ctag->GetInnerText();
$ctp = new DedeTagParse();
$ctp->SetNameSpace('field', '[', ']');
$sql = "SELECT * FROM dede_archives WHERE writer='{$refObj->Fields['writer']}' limit 0, $row";
$dsql->Execute('me',$sql);
while($rs = $dsql->GetArray('me'))
{
//根据属性处理查询变量
$rs['title'] = cn_substr($rs['title'], $titlelen);
//获取底层模板
$ctp->LoadSource($innertext);
foreach($ctp->CTags as $tagid=>$ctag) {
if(!empty($rs[strtolower($ctag->GetName())])) {
$ctp->Assign($tagid,$rs[$ctag->GetName()]);
}
}
//根据底层模板及查询变量得到处理结果
$revalue .= $ctp->GetResult();
}
return $revalue;
}
?>
接下来我们来测试我们这个标签,我们修改article_article.htm模板,在里面加入以下的标签代码:{dede:writerarc row='10' titlelen='6'}
[field:title/]
{/dede:writerarc}
通过动态浏览页面进行查看调试https://www.doczj.com/doc/567789521.html,/plus/view.php?aid=3,我们会发现标签起作用了,输出了我们的内容。
至此我们完成了标签的编写,这里面主要涉及到PHP、MySQL的很多知识,需要有一定相关方面的基础才能够编写标签了,当然这里只是一个简单的标签开发例子,还有许多的东西可以去开发。
dede标签调用大全 * 关键描述调用标签: * 模板路径调用标签:{dede:field name='templeturl'/} * 网站标题调用标签:{dede:global name='cfg_webname'/} * 栏目导航调用标签:首页 {dede:channel type='top' row='8' currentstyle="
织梦标签调用大全 网站名称:{dede:global.cfg_webname/} 网站根网址:{dede:global.cfg_basehost/} 网站根目录:{dede:global.cfg_cmsurl/} 网页主页链接:{dede:global.cfg_indexurl/} 网站描述:{dede:global.cfg_description/} 网站关键字:{dede:global.cfg_keywords/} 模板路径:{dede:global.cfg_templets_skin/} 调用页面:{dede:include filename="head.htm"/} 网站编码:{dede:global.cfg_soft_lang/} ----------------------------------------------------------------------------------------------- 调用日期:[field:pubdate function=MyDate('y-m-d',@me)/] 调用时间2:[field:pubdate function="GetDateTimeMK(@me)"/] 调用缩略图: {dede:arclist row=10 orderby=pubdate type='image.' imgwidth='定义图片宽度' img height='高度'} [field:image/] {/dede:arclist} 调用缩略图原图: [field:litpic runphp='yes'] $youjoys = array("-lp", "_lit"); @me = str_replace ($youjoys, "", @me); [/field:litpic] 调用单个栏目: {dede:type}
韩顺平dedecms织梦二次开发视频教程联系方式QQ1805571531 韩顺平老师主讲,是我听过最好的织梦二次开发的视频教程,填补了国内织梦dedecms二次开发视频教程的空白!非常珍贵的一套资料,实体教室讲课全程实录,原价可是1万多的VIP课程,7天特训织梦二次开发防站实战经典再现视频教程。 视频目录如下: 第1天 06-27(no6)(dede快速入门)\2012-6-27(no6)(dede快速入门) 第2天 06_28_dedecms\(no1)[dede四张核心表的关系分析] 06_28_dedecms\(no2)[dede在DEDE中增加内容的基本步骤和如何去掉广告] 06_28_dedecms\(no3)[dede在DEDE中标签的使用 06_28_dedecms\(no4)[dede在DEDE中标签的使用和把dede首页面替换成a67首页面 06_28_dedecms\(no5)[将dede首页面栏目换成a67电影网的首页面栏目] 06_28_dedecms\(no6)[点击对应的栏目,可以看到对应的栏目列表页面] 06_28_dedecms\(no7)[电影的自定义字段] 第3天 06_29_dedecms_自定义标签\(no1)[把首页面的今日更新的数据] 06_29_dedecms_自定义标签\(no2)[sql标签的使用] 06_29_dedecms_自定义标签\(no3)[a67网的首页的添加我的电视剧,并完成各个栏目对应的列表页]
06_29_dedecms_自定义标签\(no4)[我点击我的电影,只取出国语电影] 06_29_dedecms_自定义标签\(no5)[主页面和栏目列表的今日更新,点击后进入内容页面] 06_29_dedecms_自定义标签\capture-1 第4天 07_02_dedecms\(no1)[当小手移动到星星的时候,星星根据实际情况变化和取出热门电影] 07_02_dedecms\(no2)[显示下载地址信息] 07_02_dedecms\(no3)[当某个用户评分后,在内容页实时的显示评分值] 07_02_dedecms\(no4)[动态的取出评分值] 07_02_dedecms\(no5)[自定义搜索功能] 第5天 07_03_dedecms\(no1)[把检索结果页面,换成a67 提供的检索结果页面,并分页] 07_03_dedecms\(no2)[需求做出我们自己的分页导航] 07_03_dedecms\(no3)[在搜索时带自定义参数] 07_03_dedecms\(no4)[在搜索时带多个自定义参数,分页时可以传递到下页] 07_03_dedecms\(no5)[显示自己网站的所有分类检索,并可以按照地区来检索信息] 07_03_dedecms\(no6)[完成点击列表页的某个连接,跳转到对应的检索页面] 07_03_dedecms\(no7)[完成列表页小星星的评分功能] 第6天 07_05_数据采集\(no1)当我们点击检索结果的某个电影超链接时,如何跳转到对应的内容页
织梦时间调用标签大全 大家好,今天给大家讲解下织梦教程的织梦时间调用标签大全。 好了,下面我们开始讲解织梦时间调用的标签大全,对大家有很大帮助,大家一定仔细看。好了下面还是仔细看吧,如果大家感觉好的话,就收藏吧。 织梦首页时间标签 1,11-20 样式 1.([field:pubdate function='strftime("%m-%d",@me)'/]) 2,May 15, 2009 样式 1.([field:pubdate function='strftime("%b %d, %Y",@me)'/]) 织梦列表页时间标签 1,2009-12-27 18:30:02 样式 1.[field:pubdate function="GetDateTimeMK(@me)"/] 2,2009-12-27 样式 1.[field:pubdate function="GetDateMK(@me)"/] 织梦内容页时间标签 1、2009-12-27 样式 1.{dede:field name='pubdate'function='GetDateMk(@me)'/} 2、May 15, 2009 样式 1.{dede:field name='pubdate'function='strftime("%b %d, %Y",@me)'/} 24小时内的时间显示红色: 1.[field:pubdate runphp='yes'] 2.$a=""; 3. $b=""; $c=strftime("%Y年%m月%d日 %H:%M:%S","@me");
1.标签名称:channel 标记简介:织梦常用标记,通常用于网站顶部以获取站点栏目信息,方便网站会员分类浏览整站信息 功能说明:用于获取栏目列表 适用范围:全局使用 基本语法:{dede:channel type='top' row='8' currentstyle="
分享给大家看看 dedecms 官方模板的首页幻灯片比较小,而且是调取站内的缩略图,并且只能跳转到缩略图所在的文章页面。一般情况下缩略图都比较小,这样导致了幻灯片图片显得模糊不清,大大降低了网站品质。现在,我教您随心定制首页幻灯片,并达到下面的目的: 第一、幻灯片大小随心设置,第二、幻灯片的图片不从站内缩略图提取,而是自己指定,第三、幻灯片链接跳转到指定网址(比如广告页)而不是站内文章页。第四、幻灯片上的文字调整或者去掉。最后效果如站长街https://www.doczj.com/doc/567789521.html,首页的幻灯片一样,当然,你可以做的更漂亮一些,我只是提供一下方法。首先修改幻灯片大小:用记事本打开首页模板文件templets/default/index.htm,找到如下代码: 复制代码 < !-- size: 280px * 192px -->