织梦TAG标签列表页和搜索结果页调用自定义字段内容
发布时间:2021-04-30 | 发布者: 东东工作室 | 浏览次数: 次我们在给模型添加自定义字段后,TAG标签列表页和搜索页需要显示自定义的字段时,织梦默认是无法显示自定义字段的内容的。
网上很多教程都是写死或者改动系统文件,这样不仅不够人性化,而且改动系统文件对升级存在影响。本文章介绍个完美的方法,既不改动系统核心文件,又不写死任何东西。
这个自定义方法适用于织梦整站,包括会员和后台使用
打开 include/extend.func.php ,在最下面加入
function GetAddField($aid,$addField)
{
global $dsql;
$row = $dsql->GetOne("SELECT c.addtable FROM dede_archives AS a LEFT JOIN dede_channeltype AS c ON a.channel=c.id where a.id='$aid'");
$addtable = trim($row['addtable']);
$row = $dsql->GetOne("SELECT $addField FROM `$addtable` WHERE aid=$aid");
return $row["$addField"];
}
taglist.htm(TAG标签列表页) search.htm(搜索结果页)模板调用标签
[field:id function=GetAddField(@me,"自定义字段名")/]
如果是时间类型字段,你需要这样调用
[field:id function=MyDate('Y-m-d',GetAddField(@me,"时间类型字段名"))/]
如果是图片类型字段,你需要继续在 include/extend.func.php ,在最下面加入
/**
* 自定义图片字段调用图片地址
*
* @access public
* @param string $fieldname 字段名
* @param string $ftype 输出样式
* @return string
*/
if(!function_exists('GetImgUrl'))
{
function GetImgUrl($fieldname, $ftype = 1)
{
if($fieldname != '')
{
$dtp = new DedeTagParse();
$dtp->LoadSource($fieldname);
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:id function=GetImgUrl(GetAddField(@me,"图片类型字段名"))/]
什么?不喜欢添加自定义方法,那就直接用runphp吧
[field:id runphp=yes]global $dsql;$row = $dsql->GetOne("SELECT c.addtable FROM dede_archives AS a LEFT JOIN dede_channeltype AS c ON a.channel=c.id where a.id=@me");$result = $dsql->GetOne("SELECT body FROM `$row[addtable]` WHERE aid=@me");@me = cn_substr(html2text($result['body']),500);[/field:id]
body 为自定义字段名,换成你自己的自定义字段。
转载请标注:东东工作室——织梦TAG标签列表页和搜索结果页调用自定义字段内容
推荐文章
相关文章