dede新建模型中自定義聯動類別呼叫及修改方法

神馬和浮雲發表於2013-11-19

搜尋了好久,沒找到一個好的方法,就湊活用這個方法吧。也許只有這個方法比較好

先在後臺的“聯動類別管理”裡新增“類別組”,“類 別 名”填中文,“快取組名”填英文字母。

 

在“分類名稱”後面增加分類

 

然後在“內容模型管理”裡點“分類資訊”,在點“欄位管理”,點“新增新欄位”。“表單提示文字”填中文,“欄位名稱”填英文字母

這樣,在分類資訊裡新增文字的時候就有對應的選擇了。

然後就是在前臺顯示。

先修改 include\taglib\infolink.lib.php 檔案

搜尋require_once(DEDEDATA.'/enums/infotype.php');

下面新增

require_once(DEDEROOT.'/data/enums/自定義聯動類別欄位名.php');

 

 

修改

function lib_infolink(&$ctag,&$refObj)
{
    global $dsql,$nativeplace,$infotype,$自定義聯動類別欄位名,$hasSetEnumJs,$cfg_cmspath,$cfg_mainsite;
    global $em_nativeplaces,$em_infotypes,$em_自定義聯動類別欄位名s;  //看清楚,這裡後面的個s

 

 

搜尋$fields = array('nativeplace'=>'','infotype'=>''

修改

$fields = array('nativeplace'=>'','infotype'=>'','自定義聯動類別欄位名'=>'','typeid'=>$typeid,
                    'channelid'=>$channelid,'linkallplace'=>'','linkalltype'=>'','linkall自定義聯動類別欄位名'=>'');
    
$fields['nativeplace'] = $fields['infotype'] = $fields['自定義聯動類別欄位名'] = '';

 

搜尋$fields['linkalltype'] =

在下面新增

$fields['linkall自定義聯動類別欄位名'] = "<a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&自定義聯動類別欄位名={$自定義聯動類別欄位名}'>不限</a>";

 

搜尋if(is_array($ctp->CTags))在這句上面新增

    //自定義聯動類別欄位連結
    if(empty($自定義聯動類別欄位名))
    {
        foreach($em_自定義聯動類別欄位名s as $eid=>$em)
        {
            if($eid % 500 != 0) continue;
            $fields['自定義聯動類別欄位名'] .= " <a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&自定義聯動類別欄位名={$eid}&nativeplace={$nativeplace}'>{$em}</a>";
        }
    }
    else
    {
        $sontype = ( ($自定義聯動類別欄位名 % 500 != 0) ? $自定義聯動類別欄位名 : 0 );
      $toptype = ( ($自定義聯動類別欄位名 % 500 == 0) ? $自定義聯動類別欄位名 : ( $自定義聯動類別欄位名-($membertype%500) ) );
        $fields['自定義聯動類別欄位名'] = "<a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&自定義聯動類別欄位名={$toptype}&nativeplace={$nativeplace}'><b>{$em_自定義聯動類別欄位名s[$toptype]}</b></a> ";
        foreach($em_自定義聯動類別欄位名s as $eid=>$em)
        {
            if($eid < $toptype+1 || $eid > $toptype+499) continue;
            if($eid == $自定義聯動類別欄位名) {
                $fields['自定義聯動類別欄位名'] .= " <b>{$em}</b>";
            }
            else {
                $fields['自定義聯動類別欄位名'] .= " <a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&自定義聯動類別欄位名={$eid}&nativeplace={$nativeplace}'>{$em}</a>";
          }
      }
    }

 再修改plus\list.php檔案

搜尋$infotype = ( (empty($infotype) || !is_numeric($infotype)) ? 0 : $infotype );在下面新增一句

$自定義聯動類別欄位名 = ( (empty($自定義聯動類別欄位名) || !is_numeric($自定義聯動類別欄位名)) ? 0 : $自定義聯動類別欄位名 );

 再搜尋if(!empty($infotype)) $cArr['infotype'] = $infotype;,在下面新增

if(!empty($自定義聯動類別欄位名)) $cArr['自定義聯動類別欄位名'] = $自定義聯動類別欄位名;

 

找到include\arc.sglistview.class.php檔案

搜尋if(!empty($this->searchArr['keyword']))在上面新增

    //自定義聯動類別        
            
            if(!empty($this->searchArr['自定義聯動類別欄位名']))
            {
                if($this->searchArr['自定義聯動類別欄位名'] % 500 ==0 )
                {
                    $naddQuery .= " And arc.自定義聯動類別欄位名 >= '{$this->searchArr['自定義聯動類別欄位名']}' And arc.自定義聯動類別欄位名 < '".($this->searchArr['自定義聯動類別欄位

名']+500)."'";
                }
                else
                {
                    $naddQuery .= "And arc.自定義聯動類別欄位名 = '{$this->searchArr['自定義聯動類別欄位名']}'";
                }
            }

 

 

前臺模板呼叫

[field:linkall自定義聯動類別欄位名/] [field:自定義聯動類別字]

 

 

相關文章