You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用动态查询合并TinyButStrong区块时遇错误求助

解决TinyButStrong嵌套块合并数组的错误

问题详情

合并嵌套数组时触发错误:

"TinyButStrong Error when merging block [docList]: invalid query '2022_0817_wes' because VarRef item '2022_0817_wes' is not found."

HTML模板代码

<div class="fileList">
    <p class="text"><span class="fileNumber">[urlList2.#; block=div; noerr].</span> <span class="fileTitle">[urlList2.title; magnet=span; noerr]<br></span>
    <span class="indent fileInfo"><span>[urlList2.event; magnet=((span)); noerr]</span><span> • [urlList2.eventdate; magnet=span; noerr]</span><br></span>
    <a id="[onshow.intranet; if [val]=1; then [urlList2.intraneturl; noerr]; else [urlList2.url; strconv=no; noerr]; noerr]" class="indent watch" href="Watch"><span class="fa fa-video-camera"></span> Watch Now</a><br>
    <a class="indent download" href="[onshow.intranet; if [val]=1; then [urlList2.intraneturl; noerr]; else [urlList2.url; strconv=no; noerr]; noerr]"><span class="fa fa-download"></span> Download Video</a> <span class="fileSize">([urlList2.filesize; noerr])</span> - Right-click and choose “Save Link As” or “Save Target As”
    <span class=""><a href="[docList.url; block=span; p1=[urlList2.filename; noerr]; bmagnet=span; noerr]">[docList.filename; noerr]</a>&nbsp;<span class="fileSize">([docList.filesize; noerr])</span></span></p>
</div>

PHP合并代码

$TBS->MergeBlock('urlList2', 'array', $urlList);
$TBS->MergeBlock('docList', 'array', '%p1%');

子块数组示例

Array
(
    [2022_0814_tes_various] => Array
        (
            [0] => Array
                (
                    [bucket] => fb
                    [key] => Bulletin.pdf
                    [filename] => Bulletin
                    [filesize] => 639.5KB
                    [url] => https://s3....
                )

            [1] => Array
                (
                    [bucket] => fb
                    [key] => 2022/2022-08-14_00-00-00_SBP-S22-Lesson-25.pdf
                    [filename] => 2022-08-14_00-00-00_SBP-S22-Lesson-25
                    [filesize] => 76.7KB
                    [url] => https://s3....
                )

        )

    [2022_0814_sms] => Array
        (
            [0] => Array
                (
                    [bucket] => fb
                    [key] => Bulletin.pdf
                    [filename] => Bulletin
                    [filesize] => 639.5KB
                    [url] => https://s3....
                )

            [1] => Array
                (
                    [bucket] => fb
                    [key] => 2022/2022-08-14_00-00-00_SBP-S22-Lesson-25.pdf
                    [filename] => 2022-08-14_00-00-00_SBP-S22-Lesson-25
                    [filesize] => 76.7KB
                    [url] => https://s3....
                )

        )
)

错误原因

当前写法中,%p1%会被TBS解析为全局变量,但2022_0817_wes是子数组的键名,并非预定义的TBS全局变量,因此触发找不到VarRef项的错误。

解决方案

1. 修改HTML模板中的子块定义

将docList的块参数改为指定父块和匹配键,替换原有的p1=[urlList2.filename; noerr]:

<span class=""><a href="[docList.url; block=span; parent=urlList2; var=[urlList2.filename]; noerr]">[docList.filename; noerr]</a>&nbsp;<span class="fileSize">([docList.filesize; noerr])</span></span>
  • parent=urlList2:声明docList是urlList2的嵌套子块
  • var=[urlList2.filename]:指定用父块当前记录的filename值作为键,从子数组中匹配对应数据

2. 修改PHP合并代码

直接传入完整的子块数组(假设你的子块数组变量名为$docArray),无需使用%p1%:

$TBS->MergeBlock('urlList2', 'array', $urlList);
$TBS->MergeBlock('docList', 'array', $docArray);

注意事项

确保urlList2数组中每条记录的filename值,与子块数组的键名(如2022_0814_tes_various)完全一致,否则会出现匹配不到数据的情况。

内容的提问来源于stack exchange,提问作者user5919866

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:18:14