在DedeCMS的开发过程中,if…elseif…else语句是非常常见的一种条件判断语句。它能够根据不同的条件执行不同的代码块,使得我们的网站更加智能和灵活。下面,我就来和大家聊聊DedeCMS中if…elseif…else语句的应用与技巧。
一、if…elseif…else语句的基本语法
if…elseif…else语句的基本语法如下:
“`php
if (条件1) {
// 条件1满足时执行的代码块
} elseif (条件2) {
// 条件1不满足,条件2满足时执行的代码块
} elseif (条件3) {
// 条件1和条件2都不满足,条件3满足时执行的代码块
} else {
// 以上条件都不满足时执行的代码块
}
“`
在DedeCMS中,我们可以使用if…elseif…else语句来根据不同的条件显示不同的内容,比如判断用户权限、判断时间等。
二、if…elseif…else语句在实际开发中的应用
1. 判断用户权限
在DedeCMS中,我们可以使用if…elseif…else语句来判断用户权限,从而实现不同权限的用户访问不同的内容。以下是一个简单的例子:
“`php
if ($uid == 1) {
echo ‘欢迎超级管理员!’;
} elseif ($uid == 2) {
echo ‘欢迎管理员!’;
} else {
echo ‘欢迎普通用户!’;
}
>
“`
在这个例子中,我们根据用户的用户ID($uid)来判断用户的权限,并显示不同的欢迎语。
2. 判断时间
在DedeCMS中,我们可以使用if…elseif…else语句来判断当前时间,从而实现一些与时间相关的功能,比如定时发送邮件、定时更新缓存等。以下是一个简单的例子:
“`php
$currentTime = time(); // 获取当前时间戳
if ($currentTime >= strtotime(’00:00:00′) && $currentTime < strtotime('08:00:00')) {
echo ‘现在是凌晨到早上8点之间。’;
} elseif ($currentTime >= strtotime(’08:00:00′) && $currentTime < strtotime('12:00:00')) {
echo ‘现在是早上8点到中午12点之间。’;
} elseif ($currentTime >= strtotime(’12:00:00′) && $currentTime < strtotime('18:00:00')) {
echo ‘现在是中午12点到晚上6点之间。’;
} else {
echo ‘现在是晚上6点到凌晨之间。’;
}
>
“`
在这个例子中,我们根据当前时间来判断现在是哪个时间段,并显示相应的信息。
3. 多条件判断
在DedeCMS中,if…elseif…else语句还可以用于多条件判断。以下是一个简单的例子:
“`php
$age = 25;
$gender = ‘male’;
if ($age > 18 && $gender == ‘male’) {
echo ‘恭喜您,成年男性!’;
} elseif ($age > 18 && $gender == ‘female’) {
echo ‘恭喜您,成年女性!’;
} elseif ($age < 18 && $gender == 'male') {
echo ‘您还未成年,请珍惜青春!’;
} elseif ($age < 18 && $gender == 'female') {
echo ‘您还未成年,请珍惜青春!’;
} else {
echo ‘未知性别或年龄信息。’;
}
>
“`
在这个例子中,我们根据年龄和性别来判断用户的身份,并显示相应的信息。
三、if…elseif…else语句的技巧
1. 避免过度嵌套
在DedeCMS中,if…elseif…else语句嵌套过多会影响代码的可读性和可维护性。因此,我们应该尽量避免过度嵌套。
2. 使用switch语句替代
在某些情况下,使用switch语句代替if…elseif…else语句可以使代码更加简洁和易于理解。
以下是一个使用switch语句代替if…elseif…else语句的例子:
“`php
$uid = 3;
switch ($uid) {
case 1:
echo ‘欢迎超级管理员!’;
break;
case 2:
echo ‘欢迎管理员!’;
break;
default:
echo ‘欢迎普通用户!’;
break;
}
>
“`
在这个例子中,我们使用switch语句来判断用户的权限,从而实现与上面相同的逻辑。
if…elseif…else语句在DedeCMS开发中有着广泛的应用。通过合理地使用if…elseif…else语句,我们可以实现更加智能和灵活的网站功能。在实际开发中,我们应该注意避免过度嵌套,并在必要时使用switch语句替代if…elseif…else语句,以提高代码的可读性和可维护性。
下面,我将通过一个表格来总结if…elseif…else语句的语法和实际应用:
| 序号 | 语法 | 说明 |
|---|---|---|
| 1 | if(条件1){ | 当条件1满足时执行大括号内的代码块 |
| 2 | elseif(条件2){ | 当条件1不满足,条件2满足时执行大括号内的代码块 |
| 3 | elseif(条件3){ | 当条件1和条件2都不满足,条件3满足时执行大括号内的代码块 |
| 4 | else{ | 以上条件都不满足时执行大括号内的代码块 |
| 5 | switch($变量){ | 根据变量的值执行不同的代码块 |
| 6 | case值1: | 当变量的值等于值1时执行大括号内的代码块 |
| 7 | break; | 退出switch语句 |
| 8 | default: | 以上case都不满足时执行大括号内的代码块 |
通过以上表格,我们可以更加清晰地了解if…elseif…else语句和switch语句的语法和应用。希望这篇文章能够帮助大家更好地掌握DedeCMS中if…elseif…else语句的应用与技巧。
dedecms 列表点击加载更多读取数据库内容怎么实现
使用方法:
1、加载是用AJAX,需要先引用jQuery
2、模板在arcajax.php第二十八行请自行按需修改
3、arcajax.php放到plus目录下
HTML和js代码:
<divid=”loading27″>加载中</div>
<ahref=”javascript:;”id=”getMore”pnum=”2″class=”index-morebgwmt15″>浏览更多案例……</a>
<scripttype=”text/javascript”>
$(“#getMore”).click(function(){
var_this=$(this),
pnum=_this.attr(“pnum”),//分页码
typeid=1;//栏目ID
if(pnum==0){
returnfalse;
}
$(“#loading27”).show();
$.ajax({
url:'/plus/arcajax.php',
data:{typeid:typeid,pnum:pnum},
success:function(data){
if(data!=''){
$(“.index-list”).append(data);//数据显示到页面
_this.attr(“pnum”,Number(pnum)+1);//分页+1
}else{
_this.text(“没有更多的数据”);
_this.attr(“pnum”,0)
}
$(“#loading27”).hide();
}
})
returnfalse;
})
</script>
PHP代码(arcajax.php):
<?php
require_once(dirname(__FILE__).”/../include/common.inc.php”);
require_once(DEDEINC.'/channelunit.class.php');
require_once(DEDEINC.'/taglib/arcpagelist.lib.php');
$pnum=empty($pnum)?0:intval(preg_replace(“/[^\d]/”,'',$pnum));
$typeid=empty($typeid)?0:intval(preg_replace(“/[^\d]/”,'',$typeid));
if($typeid==0||$pnum==0)die(“RequestError!”);
if($typeid>0)
{
$titlelen=AttDef($titlelen,30);
$infolen=AttDef($infolen,160);
$imgwidth=AttDef($imgwidth,120);
$imgheight=AttDef($imgheight,120);
$listtype=AttDef($listtype,'all');
$arcid=AttDef($arcid,0);
$channelid=AttDef($channelid,0);
$orderby=AttDef($orderby,'default');
$orderWay=AttDef($order,'desc');
$subday=AttDef($subday,0);
$line=$row;
$artlist='';
//通过页面及总数解析当前页面数据范围
$strnum=($pnum-1)*12;
$limitsql=”LIMIT$strnum,12″;
$innertext='<li[field:globalname=”autoindex”runphp=”yes”]if(@me%3==0)@me=\'class=”mrnone”\';else@me=””;[/field:global]>
<div><ahref=”[field:arcurl/]”title=”[field:title/]”><imgsrc=”[field:litpic/]”width=”278″height=”245″></a></div>
<h3><ahref=”[field:arcurl/]”title=”[field:title/]”>[field:title/]</a></h3>
<p>[field:descriptionfunction=”cn_substr(@me,150)”/]</p>
<spanclass=”more”><ahref=”[field:arcurl/]”>浏览案例</a></span>
</li>';//模板
//处理列表内容项
$query=”SELECTarc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,
tp.moresite,tp.siteurl,tp.sitepathFROM`#@__archives`arcLEFTJOIN`#@__arctype`tpONarc.typeid=tp.id
WHEREarc.typeidIN(“.GetSonIds($typeid).”)ORDERBYarc.sortrankdesc$limitsql”;
$dsql->SetQuery($query);
$dsql->Execute('al');
$dtp2=newDedeTagParse();
$dtp2->SetNameSpace('field','[',']');
$dtp2->LoadString($innertext);
$GLOBALS['autoindex']=0;
$ids=array();
for($i=0;$i<12;$i++)
{
for($j=0;$j<1;$j++)
{
if($row=$dsql->GetArray(“al”))
{
$ids[]=$row['id'];
//处理一些特殊字段
$row['info']=$row['infos']=cn_substr($row['description'],$infolen);
$row['id']=$row['id'];
if($row['corank']>0&&$row['arcrank']==0)
{
$row['arcrank']=$row['corank'];
}
$row['filename']=$row['arcurl']=GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],
$row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']);
$row['typeurl']=GetTypeUrl($row['typeid'],$row['typedir'],$row['isdefault'],$row['defaultname'],$row['ispart'],
$row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);
if($row['litpic']=='-'||$row['litpic']=='')
{
$row['litpic']=$GLOBALS['cfg_cmspath'].'/images/defaultpic.gif';
}
if(!preg_match(“#^http:\/\/#”,$row['litpic'])&&$GLOBALS['cfg_multi_site']=='Y')
{
$row['litpic']=$GLOBALS['cfg_mainsite'].$row['litpic'];
}
$row['picname']=$row['litpic'];
$row['stime']=GetDateMK($row['pubdate']);
$row['typelink']=”<ahref='”.$row['typeurl'].”'>”.$row['typename'].”</a>”;
$row['image']=”<imgsrc='”.$row['picname'].”'border='0'width='$imgwidth'height='$imgheight'alt='”.preg_replace(“#['><]#”,””,$row['title']).”'>”;
$row['imglink']=”<ahref='”.$row['filename'].”'>”.$row['image'].”</a>”;
$row['fulltitle']=$row['title'];
$row['title']=cn_substr($row['title'],$titlelen);
if($row['color']!='')$row['title']=”<fontcolor='”.$row['color'].”'>”.$row['title'].”</font>”;
if(preg_match('#b#',$row['flag']))$row['title']=”<strong>”.$row['title'].”</strong>”;
//$row['title']=”<b>”.$row['title'].”</b>”;
$row['textlink']=”<ahref='”.$row['filename'].”'>”.$row['title'].”</a>”;
$row['plusurl']=$row['phpurl']=$GLOBALS['cfg_phpurl'];
$row['memberurl']=$GLOBALS['cfg_memberurl'];
$row['templeturl']=$GLOBALS['cfg_templeturl'];
if(is_array($dtp2->CTags))
{
foreach($dtp2->CTagsas$k=>$ctag)
{
if($ctag->GetName()=='array')
{
//传递整个数组,在runphp模式中有特殊作用
$dtp2->Assign($k,$row);
}else{
if(isset($row[$ctag->GetName()]))$dtp2->Assign($k,$row[$ctag->GetName()]);
else$dtp2->Assign($k,'');
}
}
$GLOBALS['autoindex']++;
}
$artlist.=$dtp2->GetResult().”
“;
}//ifhasRow
else{
$artlist.='';
}
}//LoopCol
}//loopline
$dsql->FreeResult(“al”);
}else
{
die(“RequestError!”);
}
AjaxHead();
echo$artlist;
exit();
dedecms自定义图片字段标签问题
之前选择的自定义图片图集
一、添加一个获取图片地址的方法
打开/include/extend.func.文件(注:这个文件就是系统预留的自定义函数接口文件,主要用于二次开发用的。如果你是老版本,默认没有这个文件,自己创建一个PHP文件即可),在最下面的?>上一行加入以下函数代码:(如果结尾没有?>那就直接在最下面添加)
function GetOneImgUrl($img,$ftype=1){ if($img<>''){$dtp= new DedeTagParse();$dtp->LoadSource($img); if(is_array($dtp->CTags)){ foreach($dtp->CTags as$ctag){ if($ctag->GetName()=='img'){$width=$ctag->GetAtt('width');$height=$ctag->GetAtt('height');$imgurl= trim($ctag->GetInnerText());$img=''; if($imgurl!=''){ if($ftype==1){$img.=$imgurl;} else{$img.='<img src=”'.$imgurl.'” width=”'.$width.'” height=”'.$height.'”/>';}}}}}$dtp->Clear(); return$img;}}
可以直接用下面的方法调用
[field:自定义图片字段名 function=”GetOneImgUrl(@me,显示类型)”/]
最终使用方法。
{dede:arclist typeid='12' addfields='datu' channelid='17' limit='0,7'}
<li><a href=”[field:arcurl/]” target=”_blank”><img border=”0″ src=”[field:datu%20function='GetOneImgUrl(@me,1)'/]”></a></li>
{/dede:arclist}
最终调用到这个图片地址。
dedecms5.7调用图片出现严重失真,缩略图显示严重变形
首先在网站后台系统中设置网站缩略图尺寸大小和模板中调用图片最大尺寸相同.
再打开文件include/helpers/extend.helpes.php在最下面加上以下代码
if(! function_exists('thumb'))
{
function thumb($imgurl,$width,$height,$bg= true)
{
global$cfg_mainsite,$cfg_multi_site;
$thumb= eregi(“http://”,$imgurl)?str_replace($cfg_mainsite,'',$imgurl):$imgurl;
list($thumbname,$extname)= explode('.',$thumb);
$newthumb=$thumbname.'_'.$width.'_'.$height.'.'.$extname;
if(!$thumbname||!$extname||!file_exists(DEDEROOT.$thumb)) return$imgurl;
if(!file_exists(DEDEROOT.$newthumb))
{
include_once DEDEINC.'/image.func.php';
if($bg==true)
{
ImageResizeNew(DEDEROOT.$thumb,$width,$height, DEDEROOT.$newthumb);
}
else
{
ImageResize(DEDEROOT.$thumb,$width,$height, DEDEROOT.$newthumb);
}
}
return$cfg_multi_site=='Y'?$cfg_mainsite.$newthumb:$newthumb;
}
}
调用方法:
标签: [field:picname function='thumb(@me,$width,$height,$bg)'/]
参数说明:
$width:缩略图宽度(整数)
$height:缩略图高度(整数)
$bg:是否用空白填补,默认自动填补,背景填充颜色在系统-附件设置里(true/false)
举例:
调用长宽为100像素的缩略图:[field:picname function='thumb(@me,100,100)'/]
保留原有比例,不自动填充(不建议):[field:picname function='thumb(@me,100,100,false)'/]
再到 include/helpers/image.helpes.php中写入以下代码
/**
*缩图片自动生成函数,来源支持bmp、gif、jpg、png
*但生成的小图只用jpg或png格式
*@access public
*@param string$srcFile图片路径
*@param string$toW转换到的宽度
*@param string$toH转换到的高度
*@param string$toFile输出文件到
*@return string
*/
if(! function_exists('ImageResize'))
{
function ImageResize($srcFile,$toW,$toH,$toFile=””)
{
global$cfg_photo_type;
if($toFile==””)
{
$toFile=$srcFile;
}
$info=””;
$srcInfo= GetImageSize($srcFile,$info);
switch($srcInfo[2])
{
case 1:
if(!$cfg_photo_type['gif'])
{
return false;
}
$im= imagecreatefromgif($srcFile);
break;
case 2:
if(!$cfg_photo_type['jpeg'])
{
return false;
}
$im= imagecreatefromjpeg($srcFile);
break;
case 3:
if(!$cfg_photo_type['png'])
{
return false;
}
$im= imagecreatefrompng($srcFile);
break;
case 6:
if(!$cfg_photo_type['bmp'])
{
return false;
}
$im= imagecreatefromwbmp($srcFile);
break;
}
$srcW=ImageSX($im);
$srcH=ImageSY($im);
if($srcW<=$toW&&$srcH<=$toH)
{
return true;
}
//缩略生成并裁剪
$newW=$toH*$srcW/$srcH;
$newH=$toW*$srcH/$srcW;
if($newH>=$toH)
{
$ftoW=$toW;
$ftoH=$newH;
}
else
{
$ftoW=$newW;
$ftoH=$toH;
}
if($srcW>$toW||$srcH>$toH)
{
if(function_exists(“imagecreatetruecolor”))
{
@$ni= imagecreatetruecolor($ftoW,$ftoH);
if($ni)
{
imagecopyresampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
}
else
{
$ni=imagecreate($ftoW,$ftoH);
imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
}
}
else
{
$ni=imagecreate($ftoW,$ftoH);
imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
}
//裁剪图片成标准缩略图
$new_imgx= imagecreatetruecolor($toW,$toH);
if($newH>=$toH)
{
imagecopyresampled($new_imgx,$ni,0,0,0,($newH-$toH)/2,$toW,$toH,$toW,$toH);
}
else
{
imagecopyresampled($new_imgx,$ni,0,0,($newW-$toW)/2,0,$toW,$toH,$toW,$toH);
}
switch($srcInfo[2])
{
case 1:
imagegif($new_imgx,$toFile);
break;
case 2:
imagejpeg($new_imgx,$toFile,85);
break;
case 3:
imagepng($new_imgx,$toFile);
break;
case 6:
imagebmp($new_imgx,$toFile);
break;
default:
return false;
}
imagedestroy($new_imgx);
imagedestroy($ni);
}
imagedestroy($im);
return true;
}
}
即可
QQ:51461981




