使用动态查询合并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> <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> <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
相关产品推荐
相关产品推荐

