織夢likearticle呼叫附加自定義欄位
阿新 • • 發佈:2020-08-08
在dedecms文章頁中我們經常會顯示相關文章之類的文章列表,就需要使用{dede:likearticle}標籤,但是預設的likearticle是不能顯示自定義的附加欄位的。
第一種解決方法
開啟 /include/extend.func.php ,在最下面新建一行,插入
if(!function_exists('GetAddField')) { function GetAddField($aid,$addField) { global $dsql; $row = $dsql->GetOne("SELECT c.addtable FROM #@__archives AS a LEFT JOIN #@__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"]; } }
如圖所示
模板中dede:likearticle呼叫自定義欄位標籤寫法
{dede:likearticle row='10' col='' titlelen='100' infolen='200'}
<a href="[field:arcurl/]">[field:title/]</a>
<p>價格:¥[field:id function=GetAddField(@me,'jiage')/]</p>
{/dede:likearticle}
第二種解決辦法
開啟 include/taglib/likearticle.lib.php 找到
if($keyword != '')
在它的上面加入
//獲得附加表的相關資訊 $addField = ""; $addJoin = ""; if(is_object($refObj->ChannelUnit)) { $addtable = $refObj->ChannelUnit->ChannelInfos['addtable']; if($addtable!="") { $addJoin = " LEFT JOIN $addtable ON arc.id = ".$addtable.".aid "; $addField = ""; $fields = explode(",",$refObj->ChannelUnit->ChannelInfos['listfields']); foreach($fields as $k=>$v) { $nfields[$v] = $k; } foreach($refObj->ChannelUnit->ChannelFields as $k=>$arr) { if(isset($nfields[$k])) { if(!empty($arr['rename'])) { $addField .= ",".$addtable.".".$k." as ".$arr['rename']; } else { $addField .= ",".$addtable.".".$k; } } } } }
繼續搜尋
tp.sitepath
改成
tp.sitepath $addField
有2處,都要修改,然後繼續搜尋
arc.typeid=tp.id
改成
arc.typeid=tp.id $addJoin
有2處,都要需改
模板中dede:likearticle呼叫自定義欄位標籤寫法
{dede:likearticle row='10' col='' titlelen='100' infolen='200'}
<a href="[field:arcurl/]">[field:title/]</a>
<p>價格:¥[field:jiage/]</p>
{/dede:likearticle}