这样一来就检索出当前页面的局部变量了,接下来我们可以来结合前面的SQL语句来实现根据不同环境ID调用内容不同栏目内容。 例如: {dede:php} $thisid=$refObj->Fields['id']; $row=$dsql->GetOne('selectid,typenamefromdede_arctypewhereid='.$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("RequestError!"); } functionlib_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='HelloWord!'; //------------------------------------------------------ return$revalue; } ?> 我们登录系统后台的[模板]-[全局标签测试]中运行{dede:demotag/},显示如下的结果: 这里我们知道,其实标签生成的内容其实是这个函数的一个返回值,这里返回的内容都是字符串,也就是函数return$revalue;中的$revalue需要是经过处理后生成的字符串。 $attlist="row|12,titlelen|24";这个是属性列表,这个经过函数处理后会直接生成变量并复制,我们可以测试下,做如下的修改: $revalue='HelloWord!'; $revalue.="Row:".$row.";TitleLen:".$titlelen; 这样我们可以看到,这个属性已经被创建变量并且赋值了。 接下来我们可以再进一步去修改这个标签。 比如说我们需要写一个标签专门来查询文章内容页的那个相关文章,功能类似于上面sql标签中的那个sql,只是这里我们将其分装为一个标签。 我们可以新建一个标签,例如叫writerarc,那我们就需要创建一个writerarc.lib.php,然后模仿demotag编写函数,注意需要修改为 functionlib_writerarc(&$ctag,&$refObj) 接下来我们就可以编写查询语句及对底层模板处理的相关函数了 $revalue=''; $innertext=$ctag->GetInnerText(); $ctp=newDedeTagParse(); $ctp->SetNameSpace('field','[',']'); $sql="SELECT*FROMdede_archivesWHEREwriter='{$refObj->Fields['writer']}'limit0,$row"; $innertext这个是用来获取标签的底层模板的,$ctp创建用于处理底层模板中的变量,并处理进行替换。我们根据获取的属性编写我们的sql语句,这里我们使用limit0,$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->CTagsas$tagid=>$ctag){ if(!empty($rs[strtolower($ctag->GetName())])){ $ctp->Assign($tagid,$rs[$ctag->GetName()]); } } //根据底层模板及查询变量得到处理结果 $revalue.=$ctp->GetResult(); } 这样我们就将查询出来的结果同底层模板中出现的相关变量进行替换,然后生成输出字符串,将所有的字符串信息存储到$revalue中。 最后返回这个值return$revalue; 整个文件内容如下: if(!defined('DEDEINC')) { exit("RequestError!"); } functionlib_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=newDedeTagParse(); $ctp->SetNameSpace('field','[',']'); $sql="SELECT*FROMdede_archivesWHEREwriter='{$refObj->Fields['writer']}'limit0,$row"; $dsql->Execute('me',$sql); while($rs=$dsql->GetArray('me')) { //根据属性处理查询变量 $rs['title']=cn_substr($rs['title'],$titlelen); //获取底层模板 $ctp->LoadSource($innertext); foreach($ctp->CTagsas$tagid=>$ctag){ if(!empty($rs[strtolower($ctag->GetName())])){ $ctp->Assign($tagid,$rs[$ctag->GetName()]); } } //根据底层模板及查询变量得到处理结果 $revalue.=$ctp->GetResult(); } return$revalue; } ?> 接下来我们来测试我们这个标签,我们修改article_article.htm模板,在里面加入以下的标签代码: {dede:writerarcrow='10'titlelen='6'} [field:title/] {/dede:writerarc} 通过动态浏览页面进行查看调试http://www.dedecms.com/plus/view.php?aid=3,我们会发现标签起作用了,输出了我们的内容。 至此我们完成了标签的编写,这里面主要涉及到PHP、MySQL的很多知识,需要有一定相关方面的基础才能够编写标签了,当然这里只是一个简单的标签开发例子,还有许多的东西可以去开发。转自:http://hi.baidu.com/aloneseo/item/4cb9a733419ee7ffa88428c7
require_oncedirname(__FILE__)."pub_db_mysql.php";//引用数据库文件//确保数据库信息填写正确//数据库连接信息$cfg_dbhost='localhost';$cfg_dbname='sccms';$cfg_dbuser='root';$cfg_dbpwd='123456';$cfg_dbprefix='sc_';$cfg_db_language='utf8';//新建一个数据库操作类$dsql=newScSql(false);////////////////////////////////获取一条记录的内容/////////////////////////////////下面是获取一条记录使用实例$row=$dsql->GetOne("Select*Fromdede_*whereid=$aid");//获取数据内容保存在数组$row中,通过下标可以将其调用出来echo$row['id'];//下面是循环调用记录/////////////////////////////////////////////////////////////////////////////////////////////////////////////将查询获取总数输出///////////////////////////////获取一个查询记录总数$row=$dsql->GetOne("selectcount(*)asddwheretypeid=$typeid");echo$row['dd'];//输出总数/////////////////////////////////////////////////////////////////////////////////////////////////////////////将查询的若干条记录输出//////////////////////////////////$sql="Select*fromdede_*";$dsql->SetQuery($sql);//将SQL查询语句格式化$dsql->Execute();//执行SQL操作//通过循环输出执行查询中的结果while($row=$dsql->GetArray()){echo$row['id'];echo$row['title'];}//或者采取这种方式输出内容while($row=$dsql->GetObject()){echo$row->id;echo$row->Title;}/////////////////////////////////////////////////////////////////////////////////////////////////////////////插入一条记录///////////////////////////////$sql="INSERTINTO`dede_member_flink`(mid,title,url,linktype,imgurl,imgwidth,imgheight)VALUES(".$cfg_ml->M_ID.",'$title','$url','$linktype','$imgurl','$imgwidth','$imgheight');";//插入记录数据库$dsql->SetQuery($sql);//格式化查询语句$dsql->ExecNoneQuery();//执行SQL操作////////////////////////////////////////////////////////////////////////////////////////////////////////////////////删除一条记录///////////////////////////$sql="DeleteFromdede_member_flinkwhereaid='$aid'Andmid='".$cfg_ml->M_ID."';";$dsql->SetQuery($sql);$dsql->ExecNoneQuery();//或者使用简化模式$dsql->ExecNoneQuery("DeleteFromdede_member_flinkwhereaid='$aid'Andmid='".$cfg_ml->M_ID."';");/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////更新一条记录//////////////////////////$upquery="Updatedede_member_flinksettitle='$title',url='$url',linktype='$linktype',imgurl='$imgurl',imgwidth='$imgwidth',imgheight='$imgheight'whereaid='$aid'Andmid='".$cfg_ml->M_ID."';";$rs=$dsql->ExecuteNoneQuery($upquery);///////////////////////////////////////////////////////////////////////////////////////////////////////////////判断获取数据库内容的常用方法///////////////////$row=$dsql->GetOne("Select*Fromdede_moneycard_typewheretid={$pid}");if(!is_array($row)){echo"失败";exit();}/////////////////////////////$upquery="Updatedede_member_flinksettitle='$title',url='$url',linktype='$linktype',imgurl='$imgurl',imgwidth='$imgwidth',imgheight='$imgheight'whereaid='$aid'Andmid='".$cfg_ml->M_ID."';";$rs=$dsql->ExecuteNoneQuery($upquery);if($rs){echo"成功";}else{echo"失败";}//////////////////////////////////获取总数//////////////////////////////////$dsql=newDedeSql(false);$dsql->SetQuery("Select*from`dede_admin`whereuserid='$userid'Oruname='$uname'");$dsql->Execute();$ns=$dsql->GetTotalRow();////////////////////////////////关闭数据库///////////////////////////////////$dsql->Close();转:http://blog.sina.com.cn/s/blog_5d568fff0100crzs.html
PHP魔术常量名称描述__LINE__文件中的当前行号。__FILE__文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自PHP4.0.2起,__FILE__总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。__DIR__PHP5.3中,增加了一个新的常量__DIR__,指向当前执行的PHP脚本所在的目录。__FUNCTION__函数名称(PHP4.3.0新加)。自PHP5起本常量返回该函数被定义时的名字(区分大小写)。在PHP4中该值总是小写字母的。__CLASS__类的名称(PHP4.3.0新加)。自PHP5起本常量返回该类被定义时的名字(区分大小写)。在PHP4中该值总是小写字母的。__METHOD__类的方法名(PHP5.0.0新加)。返回该方法被定义时的名字(区分大小写)。__NAMESPACE____NAMESPACE__是php5.3增加的新的魔术常量,返回当前命名空间,如果没有则为空字符串。
php获取url传递的id值:$id=$_GET['id'];php获取当前url:http://www.hack001.com/post/174php中函数function的使用:functiontitle(){.....代码return$head}return后加需要返回的值php判断url是否可以打开<?php$url="/upload/201110/20111008192257383.gif";$array=get_headers($url,1);if(preg_match('/200/',$array[0])){echo"<pre/>";print_r($array);}else{echo"无效url资源!";}?>php抓取指定网页全部代码<?php$url='http://www.baidu.com/';echofile_get_contents($url);?>PHP抓取修改替换<?$url='目标网址';$lines_array=file($url);$lines_string=implode('',$lines_array);eregi("抓取开始代码(.*)抓取结束代码",$lines_string,$head);$head=str_replace(array("删除字符1","删除字符2","删除字符3","删除字符4"),"",$head);$str=str_replace("查找代码1","替换代码1",$head[0]);$str=str_replace("查找代码2","替换代码2",$str);$str=str_replace("查找代码3","替换代码3",$str);echo$str;?>PHP正则表达式抓取网页<?$url='目标网址';$lines_array=file($url);$lines_string=implode('',$lines_array);eregi("抓取开始代码(.*)抓取结束代码",$lines_string,$head);$head=str_replace(array("删除字符1","删除字符2"),"",$head);$str3=preg_replace("(正则表达式查找)","正则表达式替换",$head[0]);echo$str3;?>php抓取页面并转编码<?php$url='http://www.kuang168.com/quote/';$lines_array=file($url);$lines_string=implode('',$lines_array);eregi("<divclass=\"subline\"><ul>(.*)</ul></div></td>",$lines_string,$head);$head=str_replace(array("<divclass=\"subline\"><ul>","</ul></div></td>","<spanclass=\"f_r\">","删除字符4"),"",$head);$str=str_replace("</span>"," ",$head[0]);$str=str_replace("查找代码2","替换代码2",$str);$str=str_replace("查找代码3","替换代码3",$str);$str=mb_convert_encoding($str,'utf8','gb2312');echo$str;?>调用这个文件:require_once()魔术常量(MagicConstants)简介:http://www.hack001.com/post/165dede数据库操作类:http://www.hack001.com/post/166dede自创标签:http://www.hack001.com/post/167php输出的几种方式:http://www.hack001.com/post/168php截取字符串:用到PHPexplode()函数http://www.w3school.com.cn/php/func_string_explode.aspdede的{dede:php}获取当前文章id{dede:php}$thisid=$refObj->Fields['id'];print_r($thisid);{/dede:php}php判断是否包含<?php$url="http://www.hack001.com/news/article_edit.php";if(strpos($url,"article_edit")>0){echo"包含";}?>php判断长度<?php$url='http://www.hack001.com/news/plus/view.php?aid=';echostrlen($url);?>php连接mssql,查询sql语句然后循环输出<?php$conn=mssql_connect("127.0.0.1","root","123456");mssql_select_db("sqldb");$sql="selecttop10h.BuildIDid,h.BuildNameloupan,a.AreaNamequyu,convert(int,h.BuildPrice)jiage,h.BuildKaipanDatekaipanshijianfromdbo.Ant_Areaa,dbo.Ant_HouseBuildhwhereh.BuildAreaID=a.AreaIDorderbyh.BuildIDdesc";$query=mssql_query($sql,$conn);while($row=mssql_fetch_array($query)){?><?=$row[loupan]?><?=$row[quyu]?><?=$row[jiage]?><?=$row[kaipanshijian]?><br><?}?><?mssql_close($conn);?>php显示错误有时候php只显示500错误,而不说哪个地方错了,需要看错误信息可以这样操作调试的时候把php.ini中的display_errors=Off改成On或者error_log=D:\Web\error.log在error.log中查看错误日志!
我们都清楚,网页的打开速度十分重要,如果网页打开时间超过8秒,那么访客将减少60%。所以,我们需要对网页进行优化,以便能够达到最佳的用户体验。下面是18条网站加速方法:1、减少HTTP请求图片、css、script、flash等等这些都会增加http请求数,减少这些元素的数量就能减少响应时间。把多个JS、CSS在可能的情况下写进一个文件,页面里直接写入图片也是不好的做法,应该写进CSS里,利用CSSsprites将小图拼合后利用background来定位。2、设置头文件过期或者静态缓存浏览器会用缓存来减少http请求数来加快页面加载的时间,如果页面头部加一个很长的过期时间,浏览器就会一直缓存页面里的元素。不过这样如果页面里的东西变动的话就要改名字了,否则用户端不会主动刷新,看自己衡量了~这项可以通过修改.htaccess文件来实现。3、Gzip压缩Gzip格式是一种很普遍的压缩技术,几乎所有的浏览器都有解压Gzip格式的能力,而且它可以压缩的比例非常大,一般压缩率为85%。压缩没压缩,可以到这里测试:gzip压缩检测。4、不要在HTML中缩放图片图片要用多大的就用多大的,1000X1000的图片被width=”100″height=”100″以后,本身的KB数是不会减少的。5、优化图片将你的GIF转为PNG8会是个减小体积的好办法,另外有很多方法处理你的JPG及PNG图片以达到优化效果。6、不要出现404页面站点本身里(非搜索结果)出现404页面,无意义的404页面会影响用户体验并且会消耗服务器资源。7、减小CookieCookie在服务器及浏览器之间的通过文件头进行交换,尽可能减小Cookie体积,设置合理的过期时间,能够很好的提高效率。8、减少iframe数量需要更有效的利用ifames。iframe优点:有利于下载缓慢的广告等第三方内容,安全沙箱,并行下载脚本iframe缺点:即使为空也会有较大资源消耗,会阻止页面的onload,非语义9、尽早的释放缓冲当用户进行页面请求时,服务器端需要花费200到500毫秒时间来拼合HTML,将写在head与body之间,释放缓冲,这样可以将文件头先发送出去,然后再发送文件内容,提高效率。10、删除重复脚本重复调用的代码浏览器并不会识别忽略,而是会再次运算一遍,这当然是大大的浪费。11、减小JS和CSS的体积写JS和CSS都是有技巧的,用最少的代码实现同样的功能,减少空白,增强逻辑性,用缩写方式等等,当然也有不少工具也能够帮你实现这一点。12、减少DNS查找减少网站从外部调用资源,网页加载效率会大大提高。13、将JS和CSS外链一些较为公用的JS和CSS,我们可以使用外链的形式,譬如我就是从Google外链来的Jquery文件,如果我的浏览者在浏览别的使用了这个外链文件的网站时已经下载并缓存了这个文件,那么他在浏览我的网站的时候就不需要再进行下载了!14、避免CSS表达式CSS表达式很可怕,这个只被IE支持的东西执行时候的运算量非常大,你移动一下鼠标它都要进行重计算的,但有时候为了做浏览器的兼容必须要用到这个|||IE6去死去死!15、把CSS放顶部让浏览者能尽早的看到网站的完整样式。16、把JS放底部网站呈现完毕后再进行功能设置,当然这些JS要在你的加载过程中不影响内容表现。17、用GET方式进行AJAX请求Get方法和服务器只有一次交互(发送数据),而Post要两次(发送头部再发送数据)。18、减少DOM的访问次数JS访问DOM是很慢的,尽量不要用JS来设置页面布局。