OpenTBS - 图像不存在时隐藏
OpenTBS - hide image when does not exist
我有一张图片列表 url,或者在某些情况下是空的。
我只想在 url 存在时显示图像,而不在 url 不指定时不显示图像。
有一个非常相似的 post here,但没有完全回答,所以我再次 posting 这个。
这是我的 php 数组:
$myBlock = array(
'description' => ...,
'name' => ...,
'photos' =>
array (
0 => string 'C:\path_to\pic_5491y.png'
1 => string 'C:\path_to\pic_5491y.png'
2 => string 'C:\path_to\pic_5491y.png'
3 => int 0
...
9 => int 0
10 => int 0
)
);
然后我尝试在块内显示图像(目前,我只尝试第一张照片)
[myBlock; block=begin]
(the image I am trying to replace, or hide)
[CODE]
[myBlock; block=end]
下面是我尝试放入 [CODE]
的内容,结果是:
[myBlock.photos.0;ope=addpic;att=draw:image#xlink:href;when [myBlock.photos.0]!=0]
==>> Undefined property: clsTbsLocator::$PrevPosBeg
[myBlock.photos.0;ope=changepic;from=[val];tagpos=inside;adjust;unique;]
[myBlock.photos.0;ope=changepic;from=[val];tagpos=inside;adjust;unique; onshow; when[myBlock.photos.0] != 0]
(与之前相同,但带有 when
,最终不会改变任何东西)
==>> The picture "0" that is supposed to be added because of parameter "ope=changepic" of the field [myBlock.photos.0] is not found.
(这是当图像的 url 为 0 时造成的)
[onShow; if[myBlock.photos.0] != 0; then[myBlock.photos.0] :drawing; else ‘1’]
==>> [onShow; if0 != 0; then0 :drawing; else '1']
(仅在文档中显示)
[onshow; if[myBlock.photos.0] = 0 ; then ‘’ ; else from=[ myBlock.photos.0]; ope=changepic; tagpos=inside;adjust;unique]
==>> 没有错误,但不要替换任何图像,即使设置
非常感谢,如果您需要更多详细信息,请告诉我!
编辑
Skrol 的建议在我使用时完全有效
$TBS->MergeBlock('myBlock', $myBlock['photos']);
但我实际上是在尝试直接合并 $myBlock
,因此在我的 word 文档中,尝试执行“double foreach”
我在模板中创建双块失败(原因是我试图在照片之前显示一些信息。)
我正在尝试做:
[myBlock; block=begin]
[myBlock.description] // => Display description before displaying the photos
[myBlock.photos; block=begin]
[myBlock.photos; block=end]
[myBlock; block=end]
但是当我添加第二个 myBlock.photos
以便循环遍历它们时,我遇到了这个错误:in block's definition [myBlock...]: a least one tag with parameter 'block=end' is missing.
编辑二
在使用相同的代码尝试了几件事之后,我设法消除了错误,这可能是因为某处有错误的隐藏字符。但它现在试图显示第二个块,而不是创建一个新的 foreach
:
This is description 1
array
array
This is description 2
array
array
....
如果这有助于更好地了解我正在努力实现的目标,这里我将在 PHP
:
中使用等效项
foreach( $myBlock as $myBlockKey => $myBlockData)
{
echo $myBlockData['description'];
echo $myBlockData['name'];
...
foreach( $myBlockData['photos'] as $photoKey => $photoData)
{
echo $photoData['url'];
}
}
知道如何定义这个双块吗???
我在文档或其他任何地方都找不到任何示例:(
为了合并存储在 $myBlock['photos']
中的图像,您的代码应该是这样的:
PHP :
$TBS->MergeBlock('myBlock', $myBlock['photos']);
DOCX :
[myBlock; block=begin; when 0!=[myBlock.val]]
(the image I am trying to replace, or hide)
[myBlock.val;ope=changepic;tagpos=after;adjust;unique;]
[myBlock; block=end]
解释:
- 命令
MergeBlock()
合并结构为记录集的数据。那是一组具有相同结构的记录。在你的截图中,只有 $myBlock['photos']
是一个记录集。由于每条记录直接是一个值,您可以使用虚拟列 val
和 key
来获取数据。
- 参数
when 0!=[myBlock.val]
使块部分成为有条件的。所以只显示值不为 0 的记录。
- 应使用参数
tagpos=after
,因为 TBS 标签位于图像之后。
我有一张图片列表 url,或者在某些情况下是空的。 我只想在 url 存在时显示图像,而不在 url 不指定时不显示图像。 有一个非常相似的 post here,但没有完全回答,所以我再次 posting 这个。
这是我的 php 数组:
$myBlock = array(
'description' => ...,
'name' => ...,
'photos' =>
array (
0 => string 'C:\path_to\pic_5491y.png'
1 => string 'C:\path_to\pic_5491y.png'
2 => string 'C:\path_to\pic_5491y.png'
3 => int 0
...
9 => int 0
10 => int 0
)
);
然后我尝试在块内显示图像(目前,我只尝试第一张照片)
[myBlock; block=begin]
(the image I am trying to replace, or hide)
[CODE]
[myBlock; block=end]
下面是我尝试放入 [CODE]
的内容,结果是:
[myBlock.photos.0;ope=addpic;att=draw:image#xlink:href;when [myBlock.photos.0]!=0]
==>>
Undefined property: clsTbsLocator::$PrevPosBeg
[myBlock.photos.0;ope=changepic;from=[val];tagpos=inside;adjust;unique;]
[myBlock.photos.0;ope=changepic;from=[val];tagpos=inside;adjust;unique; onshow; when[myBlock.photos.0] != 0]
(与之前相同,但带有when
,最终不会改变任何东西)==>>
The picture "0" that is supposed to be added because of parameter "ope=changepic" of the field [myBlock.photos.0] is not found.
(这是当图像的 url 为 0 时造成的)[onShow; if[myBlock.photos.0] != 0; then[myBlock.photos.0] :drawing; else ‘1’]
==>>
[onShow; if0 != 0; then0 :drawing; else '1']
(仅在文档中显示)[onshow; if[myBlock.photos.0] = 0 ; then ‘’ ; else from=[ myBlock.photos.0]; ope=changepic; tagpos=inside;adjust;unique]
==>> 没有错误,但不要替换任何图像,即使设置
非常感谢,如果您需要更多详细信息,请告诉我!
编辑
Skrol 的建议在我使用时完全有效
$TBS->MergeBlock('myBlock', $myBlock['photos']);
但我实际上是在尝试直接合并 $myBlock
,因此在我的 word 文档中,尝试执行“double foreach”
我在模板中创建双块失败(原因是我试图在照片之前显示一些信息。)
我正在尝试做:
[myBlock; block=begin]
[myBlock.description] // => Display description before displaying the photos
[myBlock.photos; block=begin]
[myBlock.photos; block=end]
[myBlock; block=end]
但是当我添加第二个 myBlock.photos
以便循环遍历它们时,我遇到了这个错误:in block's definition [myBlock...]: a least one tag with parameter 'block=end' is missing.
编辑二
在使用相同的代码尝试了几件事之后,我设法消除了错误,这可能是因为某处有错误的隐藏字符。但它现在试图显示第二个块,而不是创建一个新的 foreach
:
This is description 1
array
array
This is description 2
array
array
....
如果这有助于更好地了解我正在努力实现的目标,这里我将在 PHP
:
foreach( $myBlock as $myBlockKey => $myBlockData)
{
echo $myBlockData['description'];
echo $myBlockData['name'];
...
foreach( $myBlockData['photos'] as $photoKey => $photoData)
{
echo $photoData['url'];
}
}
知道如何定义这个双块吗??? 我在文档或其他任何地方都找不到任何示例:(
为了合并存储在 $myBlock['photos']
中的图像,您的代码应该是这样的:
PHP :
$TBS->MergeBlock('myBlock', $myBlock['photos']);
DOCX :
[myBlock; block=begin; when 0!=[myBlock.val]]
(the image I am trying to replace, or hide)
[myBlock.val;ope=changepic;tagpos=after;adjust;unique;]
[myBlock; block=end]
解释:
- 命令
MergeBlock()
合并结构为记录集的数据。那是一组具有相同结构的记录。在你的截图中,只有$myBlock['photos']
是一个记录集。由于每条记录直接是一个值,您可以使用虚拟列val
和key
来获取数据。 - 参数
when 0!=[myBlock.val]
使块部分成为有条件的。所以只显示值不为 0 的记录。 - 应使用参数
tagpos=after
,因为 TBS 标签位于图像之后。