1. 程式人生 > 實用技巧 >織夢likearticle呼叫附加自定義欄位

織夢likearticle呼叫附加自定義欄位

在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}