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