在JTBC5.0中,图片和附件的存储格式都是JSON,如果要在模板中调用输出,需要用JTBC5.0相关函数进行处理后才能输出,或者直接使用数据调用函数来处理,如果像图片只有一条数据的,可以直接调用出来,附件则需要进行循环输出,必须配合节点来解决。
图片的调用默认模板中有相应代码
数据库中图片字段的数据格式
{"uploadid":3,"fileurl":"/common/upload/news/2022/07/27/100725pu.jpg"}
列表中循环调用数据时,输出图片字段代码
{$=empty(#image)? '': $render('index.part-image', [#raw])}
part-image节点
<div class="image"><p type="image"><a href="./?type=detail&id={$id}"><img src="{$=$htmlEncode($getValueFromJSON(#image, 'fileurl'))}" alt="{$title}" /></a></p></div>
如果在详情页中调用图片字段,只需要这样写
<div class="image"><img src="{$=$htmlEncode($getValueFromJSON(#image, 'fileurl'))}" /></div>
如果要输出附件的话,相应的会复杂一些,则需要进行如下调用:
先看一下附件的存储数据
[
{"filename":"20190507.jpg","filesize":348039,"filetype":"jpg","filepath":"../common/upload/news/2022/07/27/090621x6.jpg","fileurl":"/common/upload/news/2022/07/27/090621x6.jpg","filegroup":1,"filesize_text":"339.88KB","uploadid":1},
{"filename":"223333","filesize":348039,"filetype":"jpg","filepath":"../common/upload/news/2022/07/27/095602gy.jpg","fileurl":"/common/upload/news/2022/07/27/095602gy.jpg","filegroup":1,"filesize_text":"339.88KB","uploadid":2}
]
可以看出是多条数据同时存储在一个字段,如果要输出,则需要进行多步操作。
1.先使用函数jsonDecode把json转成array
2.再用函数render进行数据输出,配合节点
调用附件代码
{$=$render('index.att',$jsonDecode(#attachment))}
att节点代码(在模块的模板中添加)
<div class="image"><p type="image"><img src="{$filepath}" alt="{$filename}" /></p></div>
如果只是调用附件的第一条数据,则可以直接这样写
{$=$htmlEncode($getValueFromJSON(#attachment, '0->filepath'))}
这个可以调用第一条附件的文件路径,这段代码写到html的img标签,可以直接显示成图片。