發表日期:2017-11 文章編輯:小燈 瀏覽次數:3216
dede軟件模型的軟件發布之后,在軟件詳情界面可以直接生成軟件的下載鏈接,并且下載之后該軟件的下載次數會更新,如下圖:
這是因為軟件模型的軟件地址 字段使用的是“系統專用類型” 。
但是這個“系統專用類型”在我們自己自定義字段的時候并沒有這個選項。那么是不是就沒有辦法實現軟件模型的這種功能了呢?
否!
何為類型?
如果在數據庫中,肯定是沒有專用類型這樣的說法的,dede中的數據類型和數據庫并不是一一對應的,他更多的是反映這個字段的顯示方式,其次才是數據格式(int char 等),比如附件類型,在發表的時候如果某個模型有這個字段,則自動在表單中添加上傳功能。其實附件類型的字段在數據庫中不過是vachar類型的字符串,存儲的是該附件的保存地址。dede真正對字段類型有約束的是下面圖片中最下方的那片文字區域。可以看到上面下載地址(第一個矩形框里面)顯示的是系統專用類型,而下面模型字段配置(文本模式)中field的type屬性卻是softlinks,softlinks才是關鍵。
但是softlinks在這里卻被叫成了系統專用類型了,這是因為softlinks類型跟addon(附件類型)不一樣,他不能在表單中自動生成類似于addon那種帶上傳功能的效果,具體來說就是在PrintAutoFieldsAdd()方法(在\admin\templets\archives_sg_add.htm)中沒有專門處理softlinks類型在表單中存在方式的代碼。所以如果你是一個獨立模型要使用該字段即使你在模型字段配置(文本模式)中該filed type="softlinks",那么在發布與編輯的時候,你也沒法讓他跟在軟件發布里面一樣。在軟件發布里面表單中下載地址部分是這樣的:
而你使用filed type="softlinks"在發布表單中該處是這樣的:
天壤之別吧。
為什么在軟件模型發布的時候,type="softlinks"就如此神奇呢,這是因為軟件發布的處理是在soft_add.php中,soft_add.php專門對下載鏈接的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類型,你必須將上面的代碼做一些修改然后添加到相關的處理發布的代碼中。
上面的解釋基本解決了如何在發布的表單中處理softlinks類型以便讓它的表單形式跟軟件模型一樣,那么在文章顯示的時候,這個下載鏈接又如何做到同樣具有軟件模型軟件頁面的這種效果呢:
“在軟件詳情界面可以直接生成軟件的下載鏈接,并且下載之后該軟件的下載次數會更新”。
非常幸運,如果上面的步驟正確,這里不需要你做任何事情,因為不管是什么模型,詳情頁面的顯示都是由arc.archives.class.php負責的,arc.archives.class.php中會自動處理softlinks類型。
日期:2018-10 瀏覽次數:3612
日期:2018-10 瀏覽次數:3356
日期:2018-08 瀏覽次數:3393
日期:2018-06 瀏覽次數:3207
日期:2018-06 瀏覽次數:3056
日期:2018-06 瀏覽次數:3102
日期:2018-06 瀏覽次數:3367
日期:2018-06 瀏覽次數:3207
日期:2018-06 瀏覽次數:3120
日期:2018-06 瀏覽次數:3309
日期:2018-05 瀏覽次數:3213
日期:2018-05 瀏覽次數:3997
日期:2018-05 瀏覽次數:3125
日期:2018-05 瀏覽次數:3529
日期:2018-04 瀏覽次數:3993
日期:2018-03 瀏覽次數:3128
日期:2018-03 瀏覽次數:3009
日期:2018-03 瀏覽次數:3203
日期:2018-02 瀏覽次數:3201
日期:2018-02 瀏覽次數:3159
日期:2017-12 瀏覽次數:3296
日期:2017-12 瀏覽次數:3499
日期:2017-12 瀏覽次數:3676
日期:2017-12 瀏覽次數:3106
日期:2017-12 瀏覽次數:3077
日期:2017-11 瀏覽次數:3117
日期:2017-11 瀏覽次數:3186
日期:2017-11 瀏覽次數:3077
日期:2017-11 瀏覽次數:3215
日期:2017-11 瀏覽次數:3793
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.