想要獲取自定義字段的附件類型里面的數據地址,只能以自定義形式。當然以下辦法是比較笨的也不是很完美,但基礎達到目的就行了。
有用就使用吧!

效果(guo)是(shi) 獲取自定義字段(duan)的附件類型 實際路徑。
操作方法:
打開\extend\function.php
文件最底下添加一下代碼:
if (!function_exists('get_dopdf_value'))
{
/**
* 查詢當前文章的(de)dopdf字段的(de)值
*/
function get_dopdf_value($aid = 0)
{
// 定義(yi)查詢條件
$condition = ['a.aid' => $aid];
// 查詢當(dang)前文章(zhang)的dopdf字段的值
$record = \think\Db::name('article_content')
->alias('a')
->where($condition)
->value('dopdf');
return $record;
}
}
代碼說明:
(1).
如果(guo)你是(shi)要獲取 文章模型(xing)里(li)面(mian)的(de)(de)自定義下載(zai) 上(shang)面(mian)紅色就是(shi)模型(xing)內容表。 如果(guo)是(shi)其他模型(xing)的(de)(de) 比如下載(zai)的(de)(de) 請參考(kao)以下模型(xing) 一次(ci)把上(shang)面(mian)的(de)(de)紅色替換即可:
文章模型內容表(biao):article_content
下(xia)載模型內(nei)容表:download_content
視頻模型內(nei)容(rong)表:media_content
產(chan)品(pin)模型(xing)內容表:product_content
圖(tu)集模(mo)型內容表:images_content
按(an)上(shang)(shang)面模(mo)型替換以上(shang)(shang)紅色即可
【由(you)于自定義字段附件(jian)存儲的是模(mo)型內容表(biao)里面】
(2)、
自定義添(tian)加(jia)的字段(duan)說明(ming):
比如自定義字段添加為:dopdf
那么(me)上面將粉色字 替(ti)換你自己添加的即可(ke)

這2個(ge)改(gai)了 就可以,合并(bing)模板調用(yong)標簽(qian)就是:
{$eyou.field.aid|get_dopdf_value}
控制頁的就完成了。
同(tong)樣(yang)你有多個模型 再安裝上面方法添加一個即(ji)可 當然你要把get_dopdf_value 這個 修改為其他自(zi)己隨意(yi)即(ji)可 標簽就是 {$eyou.field.aid|自(zi)定(ding)義}
以下是具體:
if (!function_exists('自(zi)定義(yi)函數(shu)'))
{
/**
* 查(cha)詢當前文章的dopdf字段的值
*/
function 自定(ding)義函數($aid = 0)
{
// 定義查詢條件
$condition = ['a.aid' => $aid];
// 查(cha)詢當前文(wen)章(zhang)的dopdf字(zi)段的值
$record = \think\Db::name('模型(xing)內容(rong)表')
->alias('a')
->where($condition)
->value('自(zi)定(ding)義字段名(ming)稱');
return $record;
}
}
第二(er)部在 前端模板(ban) 添加(jia)以下代碼:
<a href="{$eyou.field.aid|get_dopdf_value}" id="myLink">{$eyou.field.aid|get_dopdf_value}</a>
【JS放最底下-都可以】
<script>
const link = document.getElementById('myLink');
const href = link.href;
const pdfPos = href.indexOf('.pdf');
if (pdfPos!== -1) {
link.href = href.substring(0, pdfPos + 4);
link.textContent = href.substring(0, pdfPos + 4);
}
</script>
或者:
<script>
const fileTypes = ['.pdf', '.rar', '.zip', '.docx', '.xlsx'];
const links = document.querySelectorAll('a');
links.forEach(link => {
const href = link.href.toLowerCase();
const matchedType = fileTypes.find(type => href.includes(type));
if (matchedType) {
const typePos = href.indexOf(matchedType);
const cleanHref = href.substring(0, typePos + matchedType.length);
link.href = cleanHref;
link.textContent = cleanHref;
}
});
</script>
JS說明 紅(hong)色(se)字為類型(xing),如(ru)果(guo)你是(shi)其(qi)它比(bi)如(ru)rar 就改(gai)下 .rar 即可(ke) 以上不保證有的特色(se)符號造(zao)成失效哦(e)!正常是(shi)99%是(shi)無(wu)錯的
第二種寫法(fa):不用JS
打(da)開(kai)\extend\function.php
在上(shang)面PHP基礎(chu)上(shang)面 再新增:以下代碼:
function trim_extra_after_ext($url) {
$extensions = ['pdf', 'rar', 'zip', 'doc', 'docx', 'xls', 'xlsx'];
$pattern = '/(' . implode('|', array_map(function($ext) {
return preg_quote($ext, '/');
}, $extensions)) . ')(\?.*)?$/i';
if (preg_match($pattern, $url, $matches)) {
$ext = $matches[1];
return substr($url, 0, strpos(strtolower($url), $ext) + strlen($ext));
}
return $url;
}
最后模板(ban)的標(biao)簽(qian)為:{$eyou.field.aid|get_dopdf_value|trim_extra_after_ext}
正常調用
內容頁(ye): <a href="{$eyou.field.aid|get_dopdf_value|trim_extra_after_ext}">{$eyou.field.aid|get_dopdf_value|trim_extra_after_ext}</a>
列表頁 : <a href="{$field.aid|get_dopdf_value|trim_extra_after_ext}">{$field.aid|get_dopdf_value|trim_extra_after_ext}</a>