發(fā)表日期:2017-11 文章編輯:小燈 瀏覽次數(shù):3624
dede軟件模型的軟件發(fā)布之后,在軟件詳情界面可以直接生成軟件的下載鏈接,并且下載之后該軟件的下載次數(shù)會(huì)更新,如下圖:
這是因?yàn)檐浖P偷能浖刂?字段使用的是“系統(tǒng)專用類型” 。
但是這個(gè)“系統(tǒng)專用類型”在我們自己自定義字段的時(shí)候并沒有這個(gè)選項(xiàng)。那么是不是就沒有辦法實(shí)現(xiàn)軟件模型的這種功能了呢?
否!
何為類型?
如果在數(shù)據(jù)庫(kù)中,肯定是沒有專用類型這樣的說法的,dede中的數(shù)據(jù)類型和數(shù)據(jù)庫(kù)并不是一一對(duì)應(yīng)的,他更多的是反映這個(gè)字段的顯示方式,其次才是數(shù)據(jù)格式(int char 等),比如附件類型,在發(fā)表的時(shí)候如果某個(gè)模型有這個(gè)字段,則自動(dòng)在表單中添加上傳功能。其實(shí)附件類型的字段在數(shù)據(jù)庫(kù)中不過是vachar類型的字符串,存儲(chǔ)的是該附件的保存地址。dede真正對(duì)字段類型有約束的是下面圖片中最下方的那片文字區(qū)域。可以看到上面下載地址(第一個(gè)矩形框里面)顯示的是系統(tǒng)專用類型,而下面模型字段配置(文本模式)中field的type屬性卻是softlinks,softlinks才是關(guān)鍵。
但是softlinks在這里卻被叫成了系統(tǒng)專用類型了,這是因?yàn)閟oftlinks類型跟addon(附件類型)不一樣,他不能在表單中自動(dòng)生成類似于addon那種帶上傳功能的效果,具體來說就是在PrintAutoFieldsAdd()方法(在\admin\templets\archives_sg_add.htm)中沒有專門處理softlinks類型在表單中存在方式的代碼。所以如果你是一個(gè)獨(dú)立模型要使用該字段即使你在模型字段配置(文本模式)中該filed type="softlinks",那么在發(fā)布與編輯的時(shí)候,你也沒法讓他跟在軟件發(fā)布里面一樣。在軟件發(fā)布里面表單中下載地址部分是這樣的:
而你使用filed type="softlinks"在發(fā)布表單中該處是這樣的:
天壤之別吧。
為什么在軟件模型發(fā)布的時(shí)候,type="softlinks"就如此神奇呢,這是因?yàn)檐浖l(fā)布的處理是在soft_add.php中,soft_add.php專門對(duì)下載鏈接的Url做了加工處理:
//軟件鏈接列表$urls = '';//本地鏈接處理$softurl1 = stripslashes($softurl1);$nsoftsize = '';if($softurl1 != ''){$urls .= "{dede:link islocal='1' text='{$servermsg1}'} $softurl1 {/dede:link}\r\n";$autosize = empty($autosize) ? FALSE : TRUE;if($autosize && empty($softsize)){$nsoftsize = @filesize($cfg_basedir.$softurl1);if(empty($nsoftsize)) $nsoftsize = '未知';else{$nsoftsize = trim(sprintf("%0.2f", $nsoftsize / 1024 / 1024));$nsoftsize = $nsoftsize." MB";}}}//軟件大小if(!empty($nsoftsize)) $softsize = $nsoftsize;else if(empty($softsize)) $softsize = '未知';else $softsize = $softsize.' '.$unit;//其它鏈接處理for($i=2; $i<=30; $i++){if(!empty(${'softurl'.$i})){$forconfig = empty(${'forconfig'.$i}) ? FALSE : TRUE;if($forconfig){if(empty(${'need'.$i})) continue;$serverUrl = stripslashes(${'softurlfirst'.$i});$serverUrl = preg_replace("#\/$#", "", $serverUrl);$softurl = stripslashes(${'softurl'.$i});if( cn_substr($softurl, 1) != '/' ) $softurl = '/'.$softurl;$softurl = $serverUrl.$softurl;}else{$softurl = stripslashes(${'softurl'.$i});}$servermsg = str_replace("'", "", stripslashes(${'servermsg'.$i}));if($servermsg=='') $servermsg = '下載地址'.$i;if($softurl != 'http://'){$urls .= "{dede:link text='$servermsg'} $softurl {/dede:link}\r\n";}}}$urls = addslashes($urls); |
所以如果你想在自定義模型中使用softlinks類型,你必須將上面的代碼做一些修改然后添加到相關(guān)的處理發(fā)布的代碼中。
上面的解釋基本解決了如何在發(fā)布的表單中處理softlinks類型以便讓它的表單形式跟軟件模型一樣,那么在文章顯示的時(shí)候,這個(gè)下載鏈接又如何做到同樣具有軟件模型軟件頁面的這種效果呢:
“在軟件詳情界面可以直接生成軟件的下載鏈接,并且下載之后該軟件的下載次數(shù)會(huì)更新”。
非常幸運(yùn),如果上面的步驟正確,這里不需要你做任何事情,因?yàn)椴还苁鞘裁茨P?,詳情頁面的顯示都是由arc.archives.class.php負(fù)責(zé)的,arc.archives.class.php中會(huì)自動(dòng)處理softlinks類型。