织梦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)'/}