chaihongjun.me

dedecms自定义函数的一些应用

dedecms的自定义函数需要写在include/extend.func.php这个文件内,这里列举几个常用的自定义函数,主要是后台栏目直接的关联为主:

/**
*  调用同级栏目内其他文档
*  根据指定的文档ID,获取同级其他的
* @param     $id   指定的文档ID
*/
function getOtherDocsWithSameTypeid($id)
{
global $dsql;
//相关项目
$relateproject="";
//相关栏目ID
$relatetypeid = "";
//$dsql->GetOne 是获取一条记录内容,这里依据当前页面的文档ID查询主表数据。 
$row = $dsql->GetOne("SELECT * FROM chj_archives where id='$id'");
//获取当前ID所在的栏目ID
$typeid=$row['typeid'];
//随机查询同级栏目其信息3条,并排除自身
$dsql->SetQuery( "SELECT  * FROM chj_archives AS a where  a.typeid='$typeid' and a.id <> '$id'  order by rand() limit 3 ");
//执行查询
$dsql->Execute();
//获取记录数量
$ns = $dsql->GetTotalRow();
//循环处理数据集合
while($row=$dsql->GetArray())
{
 /*   相关专题数据    */
  //文档ID
$id = $row["id"];
//文档标题
$title = cn_substr($row["title"],80,0);
//指定文档ID的这篇文档信息(GetOneArchive),包括URL,标题等等
$urlarray = GetOneArchive($id);
//对应的URL
$url = $urlarray['arcurl'];
//缩略图处理
$litpic = replaceurl($row["litpic"]);
//项目项目处理
$relateproject.='<a href="'.$url.'"><img src="'.$litpic.'" alt="'.$title.'"></a>';
}
if($ns>0){
$relateproject= ' <div class="tjb_img clearFix">
  '.$relateproject.'
</div> ';
}
return $relateproject;
}

然后在详情页的模板内调用:

{dede:field.id function='getOtherDocsWithSameTypeid(@me)'/}

然后是跨栏目的关联

/**
*  获取项目专题页相关医生信息
*  根据当前项目专题所属的栏目ID,获取相关的医生
* @param     $typeid     项目所在栏目ID
*/

function getProjectArticleRelateDoctor($typeid)
{
global $dsql;
$relatedoctor="";
$relatetypeid = 0;
$indicators="";
$list="";
$counter=0;
//根据当前项目所在栏目ID,找到对应医生栏目ID
switch ($typeid)
{
case 14:  //鼻部项目
$relatetypeid= 3;   //整形医生
break;
case 15:  //眼部项目
$relatetypeid= 3;  //整形医生
break;
case 24:   //下巴项目
$relatetypeid= 3;  //整形医生
break;
case 25:    //脂肪项目
$relatetypeid= 3;   //整形医生
break;
case 26:     //唇部项目
$relatetypeid= 3;   //整形医生
break;
case 17:   //胸部项目
$relatetypeid= 3;  //整形医生
break;
case 18:   //私密项目
$relatetypeid= 3;    //整形医生
break;
case 19:   //体雕项目
$relatetypeid= 3;    //整形医生
break;
case 20:    //纹绣项目
$relatetypeid=5;    //纹绣师
break;
case 27: //祛痣祛胎记
$relatetypeid= 4;  //皮肤医生
break;
case 28:    //修复疤痕
$relatetypeid= 4;    //皮肤医生
break;
case 29:    //嫩肤美白
$relatetypeid= 4;     //皮肤医生
break;
case 30:         //激光脱毛
$relatetypeid= 4;    //皮肤医生
break;
case 31:    //美肤祛斑
$relatetypeid= 4;    //皮肤医生
break;
case 32:   //嫩肤祛痘
$relatetypeid= 4;    //皮肤医生
break;
case 33:    //紧致祛皱
$relatetypeid= 4;    //皮肤医生
break;
case 22:    //玻尿酸
$relatetypeid=3;
break;
case 23:    //BOTOX
$relatetypeid= 3;
break;
case 34:    //衡力
$relatetypeid= 3;
break;
default:
$relatetypeid= 3;
}
// a.id =b.aid  通过文档ID主表和附加表关联
//  根据对应医生所属栏目ID 查询医生信息,随机获取2条医生信息记录
$dsql->SetQuery( "SELECT * FROM chj_archives AS a,chj_addondoctors AS b
where a.id =b.aid and a.typeid='$relatetypeid' order by rand() limit 2 ");
//执行查询
$dsql->Execute();
//获取记录数量
$ns = $dsql->GetTotalRow();
//循环处理数据集合
while($row=$dsql->GetArray())
{
// 医生所在文档ID
$id = $row["id"];
//医生文档标题
$title = cn_substr($row["title"],80,0);
//该医生的文档信息
$urlarray = GetOneArchive($id);
//医生URL
$url = $urlarray['arcurl'];
//医生缩略图
$thumb = replaceurl($row["thumb"]);
//医生职位
$zhiwei = $row["zhiwei"];
//医生擅长项目
$shanchang = $row["shanchang"];

$list.= '<li class="clearFix">
                <a href="'.$url.'" class="tjb_l"><img src="'.$thumb.'" alt=""/></a>
                <div class="tjb_r">
                    <p class="p3"><a href="'.$url.'" class="tjb_name">'.$title.'</a></p>
                    <p class="p4"><a href="'.$url.'">'.$zhiwei.'</a></p>
                    <div class="tjb_sc clearFix">
                        <p>擅长项目:</p>
                        <p>'.$shanchang.' </p>
                    </div>
                    <div class="tjb_button">
                        <a href="'.$url.'"><img src="//img.hzshuangmei.com/pc/tjb_button.png" alt=""/></a>
                    </div>
                </div></li>';
}
if($ns>0){
$relatedoctor.= ' <ul class="tjb_zj clearFix"> '
    . $list
  .'</ul>';
}
return $relatedoctor;
}

模板内的应用:

{dede:field.typeid function='getProjectArticleRelateDoctor(@me)'/}



知识共享许可协议本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。作者:柴宏俊»